Python Internal Read Gadgets

Ondersteun HackTricks

Basiese Inligting

Verskillende kwesbaarhede soos Python Formaat Strings of Klas Besoedeling mag jou in staat stel om Python interne data te lees, maar sal nie toelaat dat jy kode uitvoer nie. Daarom sal 'n pentester die meeste moet maak van hierdie leesregte om sensitiewe voorregte te verkry en die kwesbaarheid te eskaleer.

Flask - Lees geheime sleutel

Die hoofbladsy van 'n Flask-aansoek sal waarskynlik die app globale objek hê waar hierdie geheime ingestel is.

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

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

In die geval waar die kwesbaarheid in 'n ander Python-lêer is, het jy 'n gadget nodig om deur lêers te navigeer om by die hooflêer te kom om die globale objek app.secret_key te benader om die Flask-geheim sleutel te verander en in staat te wees om privileges te eskaleer deur hierdie sleutel te ken.

'n Lading soos hierdie een van hierdie skryfstuk:

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

Gebruik hierdie ladingstuk om app.secret_key te verander (die naam in jou app kan verskil) sodat jy nuwe en meer voorregte flask-koekies kan teken.

Werkzeug - machine_id en node uuid

Deur hierdie ladingstuk van hierdie skryfstuk te gebruik sal jy in staat wees om die machine_id en die uuid node te ontsluit, wat die hoofgeheime is wat jy nodig het om die Werkzeug-speld te genereer wat jy kan gebruik om toegang tot die python-konsole in /console te verkry as die foutopsporingsmodus geaktiveer is:

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

Let wel dat jy die bedieners se plaaslike pad na die app.py kan kry deur 'n fout op die webbladsy te veroorsaak wat jou die pad sal gee.

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

Ondersteun HackTricks

Last updated