WU
Last updated
Was this helpful?
Last updated
Was this helpful?
HTB CTF
**GUNship
Đề cung cấp cho mình mã nguồn nên ta sẽ đọc qua 1 lượt và xác định file quan trọng, nhận thấy file index.js ở routes là nguồn xử lý chính của chall nên ta sẽ forcus vào đó
server sử dụng flat và và handlebars template
Đọc dòng cmt dẫn ngay tới link research
https://blog.p6.is/AST-Injection/
phân tích mã nguồn ta thấy, để đủ điều kiện RCE thì cần cho chương trình chạy vào if, tức là phải chứa 1 trường artist.name có chứa 1 trong 3 cái tên cung cấp.
```
Post json đơn giản sau và thực hiện lắng nghe kết nối từ server ta sẽ nhận được nội dung của lệnh ls
**Cached
Tiếp tục chúng ta có thể tải mã nguồn về phân tích
Ta có 3 endpoints gồm, /flag, / , /cache
Flag nằm ở /flag và phải request từ local mới có thể access được endpoint này.
Vậy mục tiêu đã rõ, chúng ta sẽ thực hiên ssrf
Tiếp theo, ta đọc vào file util.py nơi có luồng xử lý chính của server.
Chúng ta có, server nhận input từ user ,và đưa vào selenium headless để request tới,
ở đây có hàm is_inner_ipaddress nhằm chống ta sử dụng các ip biến thể của ip localhost như dec,hex và octa
chúng ta không thể sử dụng cuộc tấn công DNS REBINDING bởi vì hàm socket.gethostbyname sẽ phân giải tên miền thành ip,
xem thêm DNS REBINDING tại: https://geleta.eu/2019/my-first-ssrf-using-dns-rebinfing/
sau một lúc stuck thì mình thử đến cách chuyển hướng trang
mình dựng 1 tệp php đơn giản như sau
Nhận thấy server trả về cho mình screenshot của trang example.com, vậy mình xác định mình đi đúng hướng.
Tiếp theo mình thử nghiệm chuyển hướng về local nhưng không thành công, sau một lúc tìm kiếm thì mình đọc lại file run.py thì thấy điều này
Server đang chạy trên cổng 1337 nên mình sẽ chỉnh lại để selenium có thể request tới server local
Chờ một lúc ta sẽ thấy 1 hình chứa flag.