Werkzeug / Flask Debug
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Dobijte perspektivu hakera o vašim veb aplikacijama, mreži i oblaku
Pronađite i prijavite kritične, eksploatabilne ranjivosti sa stvarnim poslovnim uticajem. Koristite naših 20+ prilagođenih alata za mapiranje napadačke površine, pronalaženje sigurnosnih problema koji vam omogućavaju da eskalirate privilegije, i koristite automatizovane eksploate za prikupljanje suštinskih dokaza, pretvarajući vaš težak rad u uverljive izveštaje.
Ako je debagovanje aktivno, možete pokušati da pristupite /console
i dobijete RCE.
Postoji nekoliko eksploata na internetu kao što je ovaj ili jedan u metasploit-u.
U nekim slučajevima, /console
krajnja tačka će biti zaštićena PIN-om. Ako imate ranjivost u pretrazi datoteka, možete da otkrijete sve potrebne informacije za generisanje tog PIN-a.
Prisilite stranicu sa greškom za debagovanje u aplikaciji da biste videli ovo:
Poruka u vezi sa scenarijom "konzola zaključana" se pojavljuje kada se pokušava pristupiti Werkzeug-ovom debug interfejsu, što ukazuje na potrebu za PIN-om za otključavanje konzole. Predlaže se da se iskoristi PIN konzole analizom algoritma za generisanje PIN-a u Werkzeug-ovom inicijalizacionom fajlu (__init__.py
). Mehanizam generisanja PIN-a može se proučiti iz Werkzeug source code repository, iako se savetuje da se pribavi stvarni kod servera putem ranjivosti u pretraživanju fajlova zbog mogućih razlika u verzijama.
Da bi se iskoristio PIN konzole, potrebna su dva skupa varijabli, probably_public_bits
i private_bits
:
probably_public_bits
username
: Odnosi se na korisnika koji je pokrenuo Flask sesiju.
modname
: Obično označen kao flask.app
.
getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Obično se rešava u Flask.
getattr(mod, '__file__', None)
: Predstavlja punu putanju do app.py
unutar Flask direktorijuma (npr., /usr/local/lib/python3.5/dist-packages/flask/app.py
). Ako app.py
nije primenljiv, probajte app.pyc
.
private_bits
uuid.getnode()
: Dohvata MAC adresu trenutne mašine, pri čemu str(uuid.getnode())
prevodi u decimalni format.
Da bi se odredila MAC adresa servera, potrebno je identifikovati aktivni mrežni interfejs koji koristi aplikacija (npr., ens3
). U slučajevima nesigurnosti, leak /proc/net/arp
da biste pronašli ID uređaja, zatim izvucite MAC adresu iz /sys/class/net/<device id>/address
.
Konverzija heksadecimalne MAC adrese u decimalnu može se izvršiti kao što je prikazano u nastavku:
get_machine_id()
: Spaja podatke iz /etc/machine-id
ili /proc/sys/kernel/random/boot_id
sa prvom linijom /proc/self/cgroup
posle poslednjeg kosa (/
).
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)