Python Internal Read Gadgets

Reading time: 3 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Osnovne informacije

Različite ranjivosti kao što su Python Format Strings ili Class Pollution mogu vam omogućiti da pročitate interne podatke u Pythonu, ali neće vam omogućiti da izvršite kod. Stoga, pentester će morati da iskoristi ova prava čitanja da dobije osetljive privilegije i eskalira ranjivost.

Flask - Pročitajte tajni ključ

Glavna stranica Flask aplikacije verovatno će imati app globalni objekat gde je ovaj tajni ključ konfigurisan.

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

U ovom slučaju je moguće pristupiti ovom objektu koristeći bilo koji gadget za pristup globalnim objektima sa strane za zaobilaženje Python sandboxes.

U slučaju kada je ranjivost u drugom python fajlu, potreban vam je gadget za pretraživanje fajlova kako biste došli do glavnog da pristupite globalnom objektu app.secret_key kako biste promenili Flask tajni ključ i mogli da povećate privilegije znajući ovaj ključ.

Payload poput ovog iz ovog izveštaja:

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

Koristite ovaj payload da promenite app.secret_key (ime u vašoj aplikaciji može biti drugačije) kako biste mogli da potpišete nove i privilegovanije flask kolačiće.

Werkzeug - machine_id i node uuid

Koristeći ove payload-ove iz ovog izveštaja moći ćete da pristupite machine_id i uuid node, koji su glavne tajne koje su vam potrebne da generišete Werkzeug pin koji možete koristiti za pristup python konzoli u /console ako je debug mode omogućen:

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

warning

Imajte na umu da možete dobiti lokalnu putanju servera do app.py generišući neku grešku na veb stranici koja će dati putanju.

Ako je ranjivost u drugom python fajlu, proverite prethodni Flask trik za pristup objektima iz glavnog python fajla.

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks