[Joints 2021] Renge's Blog
Diberikan soal dan sebuah website dengan deskripsi seperti berikut.
Renge’s Blog
Deskripsi
Renge baru mencoba belajar membuat blog dari nol, bantu renge mengecheck keamanan blognya
Pada website yang diberikan terdapat sebuah admin page dengan path /admin yang jika kita buka akan mengembalikan error 403 Access Forbidden. Di saat yang bersamaan juga, page /admin membuat sebuah Cookie token yang berisi JSON Web Token (JWT)
Nah kita dapat mendecode JWT tersebut pada website jwt.io.
Kita dapat melihat di bagian payload di sebelah kanan, name yang muncul adalah guest1234 dengan akses admin false. Dari situ kita mendapatkan clue bahwa admin page dapat diakses jika user mempunyai akses admin adalah true.
Sebenarnya kita dapat mengubah value dari payload JWT tersebut, tetapi karena JWT tersebut menggunakan algoritma RS256, untuk mengubah valuenya kita harus mempunyai public key dan private key yang digunakan pada JWT tersebut.
Lalu.. bagaimana cara kita mendapatkannya?
Jika kita view-source pada halaman / kita akan mendapatkan clue di mana public key disimpan
Public key: http://dubwewsub.joints.id:45500/key/public.key
Lalu.. dimana sekarang private key??
Sedikit intermezzo, pada real world case biasanya developer menaruh file-file yang berkaitan satu sama lain pada folder yang sama. Jadi kita dapat melakukan hal tersebut untuk mendapatkan private keynya, kita dapat mengubah file public.key ke private.key dan didapatkan private keynya
Private key: http://dubwewsub.joints.id:45500/key/public.key
Nah, kita dapat menaruh public key dan private key yang kita dapat pada bagian bawah jwt.io tadi. Lalu kita baru bisa mengubah value dari payload JWT.
Copy JWT yang baru lalu lakukan replace cookie pada website