Thứ Bảy, 21 tháng 9, 2019

[WRITEUP]JSON WEB TOKEN - WEAK SECRET ROOTME!

PHẢI NHỜ ĐẾN SỰ TRỢ GIÚP CỦA TEAMMATE MỚI LÀM DC BÀI NÀY THÀNH CÔNG . KẸT Ở KHÂU PHÂN TÍCH SIGNATURE !
GIỚI THIỆU VỀ JWT
 



Mở đầu là phần intro, chall này chào đón ta bằng dòng
{"message": "Let's play a small game, I bet you cannot access to my super secret admin section. Make a GET request to /token and use the token you'll get to try to access /admin with a POST request."}
OK , TRƯỚC TIÊN TA INPUT /TOKEN VÀO URL :
{"Here is your token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJyb2xlIjoiZ3Vlc3QifQ.4kBPNf7Y6BrtP-Y3A-vQXPY9jAh_d0E6L4IUjL65CvmEjgdTZyr2ag-TM-glH6EYKGgO3dBYbhblaPQsbeClcw"}
Quăng vào đây decode
https://jwt.io/


TIẾP TỤC SỬ DỤNG PHƯƠNG THỨC POST GỬI REQUEST TỚI /admin
{"message": "method to authenticate is: 'Authorization: Bearer YOURTOKEN'"}

OK vậy xác định là ta sẽ chuyển đổi TOKEN get dc sao cho access dc vào admin section
Ta sẽ chuyển phần payload thành "role: admin" đó là điều chắc chắn . Vấn đề còn lại là phần signature với thuật toán HS512 . Đề bài là WEAK SECRET . SECRET ở đây được phỏng đoán chính là secret key mà signature đang xài .Hướng đi tiếp theo là phải bruteforce để lấy được secret key . Với sự trợ giúp nhiet tình của TEAMMATE chuyên crypto :D . Ta có hướng đi tiếp theo : HEX signature . sau đó tiếp tục HEX 2 phần header và payload của TOKEN . với cấu trúc như trên hình 1 đã giới thiệu , sau khi so sánh 2 chuỗi hex , nếu đồng dạng sẽ bật secret key ra có sử dụng sự hỗ trợ của worldlist rockyou
code python
secret key là " lol " :D

thêm nó vào phần secret key của signature đã được edit role :admin
Submit đến /admin section
Cú pháp
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJyb2xlIjoiYWRtaW4ifQ.y9GHxQbH70x_S8F_VPAjra_S-nQ9MsRnuvwWFGoIyKXKk8xCcMpYljN190KcV1qV6qLFTNrvg4Gwyv29OCjAWA

Ta có flag :D PleaseUseAStrongSecretXXXXXXXX

Phổ Biến