Joints 2021 Web Exploitation Challenge (Renge’s Blog)
Pada soal ini, kita disajikan sebuah blog website biasa yang memiliki berbagai macam section dan sebuah admin page. Tentu saja disini kita tidak dapat mengakses admin page karena kita bukanlah admin. Disini kami mencoba memeriksa cookie untuk melihat apakah ada yang menarik atau tidak.

Ternyata ada sebuah cookie berupa token. Berbekal pengalaman dari CTF” sebelumnya, kami mengetahui bahwa token tersebut adalah sebuah JWT (JSON Web Token). Dari sini, kami mencoba menggunakan website JSON Web Tokens — jwt.io untuk mendecrypt token tersebut.

Ternyata memang benar token itu adalah sebuah JWT, terbukti dari hasil decryptnya. Sekarang kami hanya perlu mengedit payload cookie tersebut agar bagian “admin” nya bernilai “true”. Namun, karena algoritma yang digunakan adalah RS256 maka dibutuhkan public key dan private key agar kita bisa mengedit cookienya.
Untuk mendapatkan public key, kita bisa dengan mudah mendapatkannya dengan membaca informasi yang ada via “view page source”.

Sekarang kita tahu URL path untuk mendapatkan public key. Kita bisa tinggal mengakses path tersebut untuk mendownload public key nya.
Setelah didownload, maka didapatkanlah public key dari website tersebut.

Karena kita sudah mendapatkan public key, maka kita perlu mencari private key. Disini kami mencoba-coba untuk memanipulasi path yang sebelumnya dengan harapan private key disimpan dalam format path yang sama.
Kami mencoba mengakses “/key/private.key”. Dan ternyata path tersebut memang ada dan kami berhasil mendapatkan private key.

Sekarang kita sudah berhasil mendapatkan public key dan private key. Karena kita sudah mendapatkan kedua key tersebut, kita bisa tinggal memasukkannya ke dalam decoder.

Setelah memasukkan kedua key tersebut, kita bisa mengedit payload “admin” agar bernilai “true”. Dan dari sini, kita mendapatkan sebuah token baru yang memiliki akses sebagai admin.

Karena kita sudah memiliki token yang baru, kita bisa tinggal mengganti cookie yang ada di browser kita menjadi cookie yang baru saja kita buat.
Setelah mengganti cookie, kita dapat mengakses admin page. Dan setelah itu, maka didapatkanlah flag yang kita cari.

FLAG: JOINTS21{H1d3_y0ur_key5}