Werkzeug / Flask Debug
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kry 'n hacker se perspektief op jou webtoepassings, netwerk, en wolk
Vind en rapporteer kritieke, exploiteerbare kwesbaarhede met werklike besigheidsimpak. Gebruik ons 20+ pasgemaakte gereedskap om die aanvaloppervlak te karteer, vind sekuriteitskwessies wat jou toelaat om bevoegdhede te verhoog, en gebruik geoutomatiseerde eksploit om noodsaaklike bewyse te versamel, wat jou harde werk in oortuigende verslae omskakel.
As debug aktief is, kan jy probeer om toegang te verkry tot /console
en RCE te verkry.
Daar is ook verskeie exploits op die internet soos hierdie of een in metasploit.
In sommige gevalle gaan die /console
eindpunt beskerm word deur 'n pin. As jy 'n file traversal vulnerability het, kan jy al die nodige inligting lek om daardie pin te genereer.
Forceer 'n debug foutbladsy in die app om dit te sien:
'n Boodskap rakende die "konsole vergrendel" scenario word teëgekom wanneer daar probeer word om toegang te verkry tot Werkzeug se foutopsporing koppelvlak, wat 'n vereiste vir 'n PIN aandui om die konsole te ontgrendel. Die voorstel word gemaak om die konsole PIN te benut deur die PIN generasie-algoritme in Werkzeug se foutopsporing inisialiseringslêer (__init__.py
) te analiseer. Die PIN generasie-meganisme kan bestudeer word vanaf die Werkzeug bronkode-bewaarplek, alhoewel dit aanbeveel word om die werklike bediener kode te verkry via 'n lêer traversering kwesbaarheid weens moontlike weergawe verskille.
Om die konsole PIN te benut, is twee stelle veranderlikes, probably_public_bits
en private_bits
, nodig:
probably_public_bits
username
: Verwys na die gebruiker wat die Flask-sessie begin het.
modname
: Gewoonlik aangewys as flask.app
.
getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Oor die algemeen los dit op na Flask.
getattr(mod, '__file__', None)
: Verteenwoordig die volle pad na app.py
binne die Flask-gids (bv. /usr/local/lib/python3.5/dist-packages/flask/app.py
). As app.py
nie van toepassing is nie, probeer app.pyc
.
private_bits
uuid.getnode()
: Verkry die MAC-adres van die huidige masjien, met str(uuid.getnode())
wat dit in 'n desimale formaat vertaal.
Om die bediener se MAC-adres te bepaal, moet 'n mens die aktiewe netwerkinterface wat deur die app gebruik word, identifiseer (bv. ens3
). In gevalle van onsekerheid, lek /proc/net/arp
om die toestel-ID te vind, dan onttrek die MAC-adres van /sys/class/net/<device id>/address
.
Om 'n heksadesimale MAC-adres na desimaal om te skakel kan soos hieronder gedoen word:
get_machine_id()
: Voeg data van /etc/machine-id
of /proc/sys/kernel/random/boot_id
saam met die eerste lyn van /proc/self/cgroup
na die laaste skuinsstreep (/
).
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)