4.8 KiB
Python Interni Čitački Gadgeti
{% hint style="success" %}
Naučite i vežbajte AWS hakovanje:HackTricks Obuka AWS Crveni Tim Stručnjak (ARTE)
Naučite i vežbajte GCP hakovanje: HackTricks Obuka GCP Crveni Tim Stručnjak (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
- Podelite hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
{% code overflow="wrap" %}
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
{% endcode %}
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}
{% hint style="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 vam omogućiti pristup putanji.
{% endhint %}
Ako je ranjivost u drugom Python fajlu, proverite prethodni trik sa Flask-om kako biste pristupili objektima iz glavnog Python fajla.
{% hint style="success" %}
Učite i vežbajte hakovanje AWS-a:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte hakovanje GCP-a: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
- Podelite hakovanje trikova slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.