5.1 KiB
Gadgets de Lecture Interne Python
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :Formation HackTricks AWS Red Team Expert (ARTE)
Apprenez et pratiquez le Hacking GCP : Formation HackTricks GCP Red Team Expert (GRTE)
Soutenez HackTricks
- Consultez les plans d'abonnement!
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud github repos.
Informations de Base
Différentes vulnérabilités telles que les Chaines de Format Python ou la Pollution de Classe pourraient vous permettre de lire des données internes de Python mais ne vous permettront pas d'exécuter du code. Par conséquent, un testeur d'intrusion devra tirer le meilleur parti de ces autorisations de lecture pour obtenir des privilèges sensibles et escalader la vulnérabilité.
Flask - Lire la clé secrète
La page principale d'une application Flask aura probablement l'objet global app
où ce secret est configuré.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
Dans ce cas, il est possible d'accéder à cet objet en utilisant simplement n'importe quel gadget pour accéder aux objets globaux de la page de contournement des sandbox Python.
Dans le cas où la vulnérabilité se trouve dans un fichier Python différent, vous avez besoin d'un gadget pour parcourir les fichiers pour accéder à celui principal afin de accéder à l'objet global app.secret_key
pour changer la clé secrète de Flask et être en mesure de escalader les privilèges en connaissant cette clé.
Une charge utile comme celle-ci de ce writeup:
{% code overflow="wrap" %}
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
{% endcode %}
Utilisez cette charge utile pour changer app.secret_key
(le nom dans votre application peut être différent) afin de pouvoir signer de nouveaux cookies flask avec plus de privilèges.
Werkzeug - machine_id et node uuid
En utilisant cette charge utile de ce writeup, vous pourrez accéder à machine_id et à l'uuid du nœud, qui sont les secrets principaux dont vous avez besoin pour générer le code pin Werkzeug que vous pouvez utiliser pour accéder à la console Python dans /console
si le mode de débogage est activé:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
{% hint style="warning" %}
Notez que vous pouvez obtenir le chemin local des serveurs vers le fichier app.py
en générant une erreur sur la page web qui vous donnera le chemin.
{% endhint %}
Si la vulnérabilité se trouve dans un fichier python différent, vérifiez l'astuce Flask précédente pour accéder aux objets depuis le fichier python principal.
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :Formation HackTricks AWS Red Team Expert (ARTE)
Apprenez et pratiquez le Hacking GCP : Formation HackTricks GCP Red Team Expert (GRTE)
Soutenez HackTricks
- Consultez les plans d'abonnement!
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR aux HackTricks et HackTricks Cloud dépôts github.