disable_functions bypass - dl function
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)
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ćena
PHP 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šenja 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.
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
.
ZEND_MODULE_API_NO:
ZEND_MODULE_API_NO
u bypass.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.
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.
Komande za kompajliranje:
Koristi phpize
, ./configure
, i make
za kompajliranje ekstenzije.
Rezultantni bypass.so
se zatim nalazi u poddirektorijumu modula.
Čišćenje:
Pokreće make clean
i phpize --clean
nakon kompajliranja.
Kompatibilnost verzija:
Osigurava da se PHP API verzije poklapaju između napadačevog i žrtvinog sistema.
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čitavanje bypass.so
i zatim poziva bypass_exec
sa komandom prosleđenom putem cmd
upitnog parametra.
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)