JWT authentication bypass via unverified signature

Link: https://portswigger.net/web-security/jwt/lab-jwt-authentication-bypass-via-unverified-signature

Description:

This lab uses a JWT-based mechanism for handling sessions. Due to implementation flaws, the server doesn't verify the signature of any JWTs that it receives.

To solve the lab, modify your session token to gain access to the admin panel at /admin, then delete the user carlos.

You can log in to your own account using the following credentials: wiener:peter

Preparation:

  • Install JWT Editor on Burp Suite Extension

Proof of concept:

  1. Analisa seluruh fitur web target menggunakan akun testing

  2. Dari pengumpulan informasi didapati terdapat direktori /admin

  3. Akses halaman /admin. Terlihat halaman /admin hanya dapat diakses oleh administrator

  4. Dapat dilihat pada web target ini menggunakan JWT, analisa JWT yang diberikan ketika login menggunakan akun testing. Kirim request pada saat mengakses /admin ke burp repeater

  5. Buka tab JSON Web Token. Pada payload terlihat terdapat parameter sub dengan nilai wiener. Parameter tersebut berisikan nilai username yang sedang login

  6. Ubah nilai pada parameter sub tersebut menjadi administrator. Jika sudah lakukan sign dengan Header Options Don’t modify header

  7. Kirim kembali request untuk mengakses /admin. Dapat dilihat sebelumnya status code pada saat mengakses /admin adalah 401 sekarang menjadi 200 yang artinya sudah dapat mengakses halaman /admin. Untuk menyelesaikan tangtangan pada lab ini lakukan penghapusan user carlos

Thanks, Stay Ethical & Happy Hacking! 🍻

Last updated