disable_functions bypass - dl function
Važna napomena:
dl
je PHP funkcija koja se može koristiti za učitavanje PHP ekstenzija. Ako funkcija nije onemogućena, može se zloupotrebiti da bi se zaobišle disable_functions
i izvršile proizvoljne komande.
Međutim, postoje neka stroga ograničenja:
Funkcija
dl
mora biti prisutna u okruženju i ne sme biti onemogućenaPHP ekstenzija mora biti kompajlirana sa istom glavnom verzijom (PHP API verzija) koju koristi server (ovu informaciju možete videti u izlazu phpinfo)
PHP ekstenzija mora biti smještena u direktorijumu koji je definisan direktivom
extension_dir
(možete je videti u izlazu phpinfo). Vrlo je malo verovatno da će napadač koji pokušava zloupotrebiti server imati pristup pisanju u ovaj direktorijum, pa će ovo zahtevanje verovatno sprečiti zloupotrebu ove tehnike).
Ako ispunjavate ove zahteve, nastavite čitati post https://antichat.com/threads/70763/ da biste naučili kako zaobići disable_functions. Evo sažetka:
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 funkcija dl
nije onemogućena, odlučuje da napravi prilagođenu PHP ekstenziju za izvršavanje sistemskih komandi.
Koraci koje preduzima napadač:
Identifikacija verzije PHP-a:
Napadač određuje verziju PHP-a koristeći skriptu (
<?php echo 'PHP verzija je '.PHP_VERSION; ?>
).
Dobavljanje izvornog koda PHP-a:
Preuzima izvorni kod PHP-a sa zvanične PHP veb stranice ili arhive ako je verzija starija.
Lokalno podešavanje PHP-a:
Izdvaja i instalira određenu verziju PHP-a na svom sistemu.
Kreiranje ekstenzije:
Proučava kreiranje PHP ekstenzija i pregleda izvorni kod PHP-a.
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 se podudarati sa trenutnom Zend Extension Build-om, koji se može dobiti sa:
Modifikacija PHP_FUNCTION:
Za nove verzije PHP-a (5, 7, 8), možda će biti potrebna prilagođavanje
PHP_FUNCTION(bypass_exec)
. Priloženi kod detaljno opisuje ovu modifikaciju.
Datoteke prilagođene ekstenzije:
bypass.c:
Implementira osnovnu funkcionalnost prilagođene ekstenzije.
php_bypass.h:
Header datoteka koja definiše osobine ekstenzije.
config.m4:
Koristi se od strane
phpize
za konfigurisanje okruženja za izgradnju prilagođene ekstenzije.
Izgradnja ekstenzije:
Komande za kompajliranje:
Koristi
phpize
,./configure
imake
za kompajliranje ekstenzije.Rezultirajući
bypass.so
se zatim nalazi u poddirektorijumu modules.
Čišćenje:
Pokreće
make clean
iphpize --clean
nakon kompajliranja.
Postavljanje i izvršavanje na žrtvinoj mašini:
Kompatibilnost verzija:
Osigurava da se PHP API verzije podudaraju između napadačevog i žrtvinog sistema.
Učitavanje ekstenzije:
Koristi funkciju
dl
, zaobilazeći ograničenja korišćenjem relativnih putanja ili skripta za automatizaciju procesa.
Izvršavanje skripte:
Napadač postavlja
bypass.so
i PHP skriptu na server žrtve.Skripta koristi funkciju
dl_local
za dinamičko učitavanjebypass.so
, a zatim pozivabypass_exec
sa komandom koja se prenosi putem upitacmd
.
Izvršavanje komandi:
Napadač sada može izvršavati komande pristupanjem:
http://www.example.com/script.php?cmd=<komanda>
Ovaj detaljni vodič opisuje proces kreiranja i implementacije PHP ekstenzije za izvršavanje sistemskih komandi, iskorišćavajući funkciju dl
, koja bi idealno trebala biti onemogućena kako bi se sprečila takva sigurnosna ugrožavanja.
Last updated