← cd ..

MISSION_LOG: Java_Code_Analysis!?!

Platform: picoCTFCategory: WebStatus: Pwned

0x01: Analysis

Diberikan sebuah lab bernama Java_Code_Analysis!?!, berdasarkan hasil observasi awal cara untuk menyelesaikan lab ini adalah dengan cara membaca buku bernama Flag. Lalu kita juga diberikan sebuah kredential untuk login dan source code web target.

Initial Lab State

0x02: Methodology

Pada saat saya mengunjungi web target saya melihat fitur login dan saya menggunakan kredensial yang sudah di berikan yaitu:
username: user
password: user

Setelah saya memasukkan kredensial di atas dan login saya diarahkah ke menu dashboard dan saya melihat ada buku bernama flag tapi sayangnya membutuhkan hak akses Admin sedangkan saya masih di level Free.

Web Interface
Dashboard Restricted

Saya mencoba untuk menganalisis kode Java yang sudah di berikan dan pada saat saya membaca file UserService.java, saya menemukan kata kunci JWT yang kemungkinan ini berhubungan dengan token JWT.

Saya mencoba melihat localstorage pada web target benar saja saya menemukan sebuah token JWT.

UserService Code Analysis
JWT Token Discovery

Saya langsung menyalin token JWT yang saya temukan dan saya menggunakan jwt.io. Pada saat saya mendecode token JWT saya menemukan sebuah parameter role ada kemungkinan saya harus mengubah parameter ini.

Pada saat saya menganalisis kembali kode Java saya menemukan sebuah secret pada file SecretGenerator.java.

JWT Decoding
Secret Key Leak

Saya menemukan hal menarik pada file data.sql yang berisi roles values. Saya mengubah parameter role, userId, email dan secret menjadi Admin untuk membaca buku bernama flag.

Role Values Analysis
Forging New Token

Tapi sayangnya pada saat saya mengakses buku Flag terjadi error. Saya mencoba mengubah userId menjadi 1, masih error. Akhirnya saya mencoba mengubah userId menjadi 2 dan ternyata berhasil saya mendapatkan flag-nya.

First Error Response
Flag captured successfully
CAPTURE THE FLAG: picoCTF{w34k_jwt_n0t_g00d_7745dc02}