Werkzeug / Flask Debug
Onmiddellik beskikbare opstelling vir kwetsbaarheidsevaluering & pentesting. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & funksies wat strek vanaf rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd terug te gee om dieper te delf, skulpe te laat pop, en pret te hê.
Konsol RCE
As foutopsporing aktief is, kan jy probeer om toegang te verkry tot /console
en RCE te verkry.
Daar is ook verskeie uitbuite op die internet soos hierdie of een in metasploit.
Pin Beskerm - Pad Traversal
In sommige gevalle gaan die /console
eindpunt beskerm word deur 'n pin. As jy 'n lêer traversal kwesbaarheid het, kan jy al die nodige inligting lek om daardie pin te genereer.
Werkzeug Console PIN Uitbuiting
Dwing 'n foutbladsy in die app af om dit te sien:
'n Berig rakende die "konsole gesluit" scenario word aangetref wanneer daar gepoog word om toegang tot Werkzeug se foutopsporingskoppelvlak te verkry, wat 'n vereiste vir 'n PIN aandui om die konsole te ontgrendel. Die voorstel word gemaak om die konsole PIN uit te buit deur die PIN-genereringsalgoritme in Werkzeug se foutopsporingsinitsialisasie-lêer (__init__.py
) te analiseer. Die PIN-genereringsmeganisme kan bestudeer word vanuit die Werkzeug bronkode-opgaarplek, alhoewel dit aanbeveel word om die werklike bedienerkode te bekom deur 'n lêertraversie-kwesbaarheid weens potensiële weergawe-afwykings.
Om die konsole PIN uit te buit, word twee stelle veranderlikes, probably_public_bits
en private_bits
, benodig:
probably_public_bits
probably_public_bits
username
: Verwys na die gebruiker wat die Flask-sessie geïnisieer het.modname
: Tipies aangedui asflask.app
.getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Los gewoonlik op na Flask.getattr(mod, '__file__', None)
: Verteenwoordig die volledige pad naapp.py
binne die Flask-gids (byvoorbeeld,/usr/local/lib/python3.5/dist-packages/flask/app.py
). Asapp.py
nie van toepassing is nie, probeerapp.pyc
.
private_bits
private_bits
uuid.getnode()
: Haal die MAC-adres van die huidige masjien op, metstr(uuid.getnode())
wat dit na 'n desimale formaat omskakel.Om die bediener se MAC-adres te bepaal, moet mens die aktiewe netwerkinterface wat deur die app gebruik word identifiseer (byvoorbeeld,
ens3
). In gevalle van onsekerheid, lek/proc/net/arp
om die toestel-ID te vind, en dan ekstraheer die MAC-adres uit/sys/class/net/<toestel id>/address
.Die omskakeling van 'n heksadesimale MAC-adres na desimaal kan uitgevoer word soos hieronder getoon:
get_machine_id()
: Kombineer data vanaf/etc/machine-id
of/proc/sys/kernel/random/boot_id
met die eerste lyn van/proc/self/cgroup
na die laaste skuiwingsteken (/
).
Last updated