disable_functions bypass - dl function

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

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ćena

  • PHP 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č:

  1. Identifikacija verzije PHP-a:

  • Napadač određuje verziju PHP-a koristeći skriptu (<?php echo 'PHP verzija je '.PHP_VERSION; ?>).

  1. Dobavljanje izvornog koda PHP-a:

  1. Lokalno podešavanje PHP-a:

  • Izdvaja i instalira određenu verziju PHP-a na svom sistemu.

  1. Kreiranje ekstenzije:

Napomene za kompajliranje prilagođene ekstenzije:

  1. ZEND_MODULE_API_NO:

  • ZEND_MODULE_API_NO u bypass.c mora se podudarati sa trenutnom Zend Extension Build-om, koji se može dobiti sa:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. 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:

  1. Komande za kompajliranje:

  • Koristi phpize, ./configure i make za kompajliranje ekstenzije.

  • Rezultirajući bypass.so se zatim nalazi u poddirektorijumu modules.

  1. Čišćenje:

  • Pokreće make clean i phpize --clean nakon kompajliranja.

Postavljanje i izvršavanje na žrtvinoj mašini:

  1. Kompatibilnost verzija:

  • Osigurava da se PHP API verzije podudaraju između napadačevog i žrtvinog sistema.

  1. Učitavanje ekstenzije:

  • Koristi funkciju dl, zaobilazeći ograničenja korišćenjem relativnih putanja ili skripta za automatizaciju procesa.

  1. Izvršavanje skripte:

  • Napadač postavlja bypass.so i PHP skriptu na server žrtve.

  • Skripta koristi funkciju dl_local za dinamičko učitavanje bypass.so, a zatim poziva bypass_exec sa komandom koja se prenosi putem upita cmd.

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.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated