Python Internal Read Gadgets

Podržite HackTricks

Osnovne Informacije

Različite ranjivosti poput Python Format Stringova ili Zagađenje Klasa mogu vam omogućiti da čitate interne podatke Pythona ali vam neće dozvoliti izvršavanje koda. Stoga, pentester će morati maksimalno iskoristiti ova dozvola za čitanje kako bi dobio osetljive privilegije i eskalirao ranjivost.

Flask - Čitanje tajnog ključa

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

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

U ovom slučaju moguće je pristupiti ovom objektu koristeći bilo koji gedžet za pristup globalnim objektima sa Bypass Python sandboxes stranice.

U slučaju kada je ranjivost u drugom Python fajlu, potreban vam je gedžet za pretragu fajlova kako biste došli do glavnog fajla i pristupili globalnom objektu app.secret_key kako biste promenili Flask tajni ključ i bili u mogućnosti da dignete privilegije znajući ovaj ključ.

Payload poput ovog iz ovog writeupa:

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

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

Werkzeug - machine_id i node uuid

Koristeći ovaj payload iz ovog writeupa bićete u mogućnosti da pristupite machine_id-u i uuid nodu, koji su glavne tajne koje su vam potrebne da generišete Werkzeug pin koji možete koristiti da pristupite python konzoli na /console ako je omogućen debug režim:

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

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

Ako je ranjivost u drugom Python fajlu, proverite prethodni trik sa Flask-om kako biste pristupili objektima iz glavnog Python fajla.

Podržite HackTricks

Last updated