tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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 za obići disable_functions
i izvršiti proizvoljne komande.
Međutim, ima neka stroga ograničenja:
- Funkcija
dl
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 to 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 ovaj zahtev 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:
Funkcija dl 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 kreira prilagođenu PHP ekstenziju za izvršavanje sistemskih komandi.
Koraci koje preduzima napadač:
- Identifikacija PHP verzije:
- Napadač određuje verziju PHP-a 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 verziju PHP-a 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 -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Izmena PHP_FUNCTION:
- Za novije verzije PHP-a (5, 7, 8),
PHP_FUNCTION(bypass_exec)
može zahtevati prilagođavanje. Pruženi kodni isječak detaljno opisuje ovu izmenu.
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 žrtvinom hostu:
- Kompatibilnost verzija:
- Osigurava da se PHP API verzije poklapaju između napadačevog i žrtvinog sistema.
- Učitavanje ekstenzije:
- Koristi funkciju
dl
, 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 funkciju dl
, koja bi idealno trebala biti onemogućena kako bi se sprečile ovakve sigurnosne povrede.
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.