Python Internal Read Gadgets
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 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é.
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 pouvoir escalader les privilèges en connaissant cette clé.
Une charge utile comme celle-ci de ce writeup:
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é:
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.
Si la vulnérabilité se trouve dans un fichier python différent, vérifiez le truc Flask précédent pour accéder aux objets depuis le fichier python principal.
Last updated