Download PWNED: 1
Scanning
Tiến hành scan tất cả ports
1
nmap 10.0.2.8 -p- -sC -A
Có thể thấy, 3 ports dịch vụ đang mở là 21, 22 và 80.
Enumeration
Đi tới dịch vụ web, không tìm thấy thông tin gì từ đây
Tiến hành enumerate directories với gobuster
.
1
gobuster dir -u http://10.0.2.8/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Nhìn cái tên thôi cũng thấy /hidden_text
có vẻ thú vị hơn mấy cái kia. Nhưng ở bất kì trường hợp nào, manh mối cũng đều có thể xuất hiện nên chúng ta không nên bỏ xót.
Check /hidden_text
thấy có chứa 1 file secret.dic
. Nội dung file này là 1 list các sub-directory. Khả năng 1 hoặc 1 vài trong số này có thể truy cập được. Lưu dic này và bruteforce để tìm ra đường dẫn hợp lệ.
Trong số này thì duy nhất pwned.vuln
có status 200.
Exploitation
Response trả về trong source có xuất hiện đoạn comment code php do dev sơ suất để lại. Hơn nữa, đoạn comment này đã leak tài khoản của 1 dịch vụ nào đó, check username và password cộng với việc port 21 mở ta có thể suy ra đây là user của ftp service.
Login thành công. Get 2 file trong folder share về và đọc chúng
1 file có chứa private key để login SSH nhưng chứa 1 số kí tự gây nhiễu, file còn lại tưởng vô nghĩa nhưng thực chất có chứa thông tin user. Có thể thu thập được username của SSH service từ đây đó là cmc
. Sửa lại file private key và dùng dữ kiện tìm được để login SSH.
Pwned cmc và capture cmc’s flag thành công!
Privilege Escalation
Kiểm tra quyền của user cmc
Có thể thấy, cmc có quyền thực thi file script /home/messenger.sh
với tư cách là user hoangmongto
. Vậy điều cần làm tiếp theo là chiếm quyền của hoangmongto
và còn 1 user flag nằm ở home directory của user này.
hoangmongto
Phân tích một chút về file script này, có 1 biến msg
được nhập từ input, sau đó được chạy như 1 câu lệnh. Ngoài ra, các lỗi sẽ được chuyển hướng sang /dev/null => Từ đó, ta có thể chèn 1 shell nhờ /bin/bash
.
1
sudo -u hoangmongto /home/messenger.sh
Spawn TTY shell và lấy được user flag thứ 2!
root
Như chúng ta có thể thấy, hoangmongto
thuộc group docker
. May mắn thay, ta có thể leo lên root nhờ đó, đọc thêm tại đây.
1
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
Payload từ GTFOBins