hacktricks/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md

2.7 KiB

Python Interne Lees Gadgets

{{#include ../../banners/hacktricks-training.md}}

Basiese Inligting

Verskillende kwesbaarhede soos Python Formaat Strings of Klas Besoedeling mag jou toelaat om python interne data te lees maar sal jou nie toelaat om kode uit te voer nie. Daarom sal 'n pentester die meeste van hierdie lees toestemmings moet benut om sensitiewe voorregte te verkry en die kwesbaarheid te eskaleer.

Flask - Lees geheime sleutel

Die hoofblad van 'n Flask-toepassing sal waarskynlik die app globale objek hê waar hierdie geheime sleutel geconfigureer is.

app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'

In hierdie geval is dit moontlik om toegang tot hierdie objek te verkry net deur enige gadget te gebruik om globale objek te benader vanaf die Bypass Python sandboxes page.

In die geval waar die kwesbaarheid in 'n ander python-lêer is, benodig jy 'n gadget om lêers te traverseer om by die hoof een te kom om toegang tot die globale objek app.secret_key te verkry om die Flask geheime sleutel te verander en in staat te wees om privileges te eskaleer deur hierdie sleutel te ken.

'n Payload soos hierdie van hierdie skrywe:

__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key

Gebruik hierdie payload om app.secret_key (die naam in jou app mag anders wees) te verander sodat jy nuwe en meer bevoegdheid flask koekies kan teken.

Werkzeug - machine_id en node uuid

Deur hierdie payload uit hierdie skrywe te gebruik sal jy toegang hê tot die machine_id en die uuid node, wat die hoofdokumente is wat jy nodig het om die Werkzeug pin te genereer wat jy kan gebruik om toegang te verkry tot die python konsole in /console as die foutopsporing modus geaktiveer is:

{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}

Warning

Let daarop dat jy die bediener se plaaslike pad na die app.py kan kry deur 'n fout op die webblad te genereer wat jou die pad sal gee.

As die kwesbaarheid in 'n ander python-lêer is, kyk na die vorige Flask-truk om toegang tot die objekte van die hoof python-lêer te verkry.

{{#include ../../banners/hacktricks-training.md}}