disable_functions bypass - dl function
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Important note:
dl
je PHP funkcija koja se može koristiti za učitavanje PHP ekstenzija. Ako funkcija nije onemogućena, može se zloupotrebiti da obiđe disable_functions
i izvrši proizvoljne komande.
Međutim, ima neka stroga ograničenja:
dl
funkcija mora biti prisutna u okruženju i nije onemogućenaPHP ekstenzija mora biti kompajlirana sa istom glavnom verzijom (PHP API verzija) koju server koristi (ovaj podatak možete videti u izlazu phpinfo)
PHP ekstenzija mora biti smeštena u direktorijumu koji je definisan direktivom
extension_dir
(možete ga videti u izlazu phpinfo). Veoma je malo verovatno da će napadač koji pokušava da zloupotrebi server imati pristup za pisanje u ovaj direktorijum, tako da će ovo zahtevati verovatno sprečiti zloupotrebu ove tehnike).
Ako ispunjavate ove zahteve, nastavite sa čitanjem posta https://antichat.com/threads/70763/ da biste saznali kako da obiđete disable_functions. Evo sažetak:
dl funkcija se koristi za dinamičko učitavanje PHP ekstenzija tokom izvršavanja skripte. PHP ekstenzije, obično napisane u C/C++, poboljšavaju funkcionalnost PHP-a. Napadač, primetivši da dl
funkcija nije onemogućena, odlučuje da kreira prilagođenu PHP ekstenziju za izvršavanje sistemskih komandi.
Koraci koje je preduzeo napadač:
Identifikacija PHP verzije:
Napadač određuje PHP verziju koristeći skriptu (
<?php echo 'PHP Version is '.PHP_VERSION; ?>
).
Nabavka PHP izvora:
Preuzima PHP izvor sa zvanične PHP veb stranice ili iz arhive ako je verzija starija.
Lokalna PHP postavka:
Ekstrahuje i instalira specifičnu PHP verziju na svom sistemu.
Kreiranje ekstenzije:
Proučava kako se kreiraju PHP ekstenzije i ispituje PHP izvorni kod.
Fokusira se na dupliciranje funkcionalnosti exec funkcije koja se nalazi u
ext/standard/exec.c
.
Napomene za kompajliranje prilagođene ekstenzije:
ZEND_MODULE_API_NO:
ZEND_MODULE_API_NO
ubypass.c
mora odgovarati trenutnoj Zend Extension Build, koju možete dobiti sa:
PHP_FUNCTION modifikacija:
Za novije PHP verzije (5, 7, 8),
PHP_FUNCTION(bypass_exec)
može zahtevati prilagođavanje. Pruženi kodni isječak detaljno opisuje ovu modifikaciju.
Datoteke prilagođene ekstenzije:
bypass.c:
Implementira osnovnu funkcionalnost prilagođene ekstenzije.
php_bypass.h:
Header datoteka, definišući osobine ekstenzije.
config.m4:
Koristi se od strane
phpize
za konfiguraciju okruženja za izgradnju prilagođene ekstenzije.
Izgradnja ekstenzije:
Komande za kompajliranje:
Koristi
phpize
,./configure
imake
za kompajliranje ekstenzije.Rezultantni
bypass.so
se zatim nalazi u poddirektorijumu modula.
Čišćenje:
Pokreće
make clean
iphpize --clean
nakon kompajliranja.
Učitavanje i izvršavanje na žrtvovanoj mašini:
Kompatibilnost verzija:
Osigurava da se PHP API verzije poklapaju između napadačeve i žrtvine mašine.
Učitavanje ekstenzije:
Koristi
dl
funkciju, zaobilazeći ograničenja korišćenjem relativnih putanja ili skripte za automatizaciju procesa.
Izvršavanje skripte:
Napadač učitava
bypass.so
i PHP skriptu na server žrtve.Skripta koristi
dl_local
funkciju za dinamičko učitavanjebypass.so
i zatim pozivabypass_exec
sa komandom prosleđenom putemcmd
upitnog parametra.
Izvršavanje komandi:
Napadač sada može izvršavati komande pristupom:
http://www.example.com/script.php?cmd=<command>
Ovaj detaljan vodič opisuje proces kreiranja i implementacije PHP ekstenzije za izvršavanje sistemskih komandi, koristeći dl
funkciju, koja bi idealno trebala biti onemogućena kako bi se sprečile ovakve sigurnosne povrede.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated