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

Važna napomena:

image

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

  1. Identifikacija PHP verzije:
  • Napadač određuje verziju PHP-a koristeći skriptu (<?php echo 'PHP Version is '.PHP_VERSION; ?>).
  1. Nabavka PHP izvora:
  1. Lokalna PHP postavka:
  • Ekstrahuje i instalira specifičnu 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 odgovarati trenutnoj Zend Extension Build, koju možete dobiti sa:
bash
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  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:

  1. Komande za kompajliranje:
  • Koristi phpize, ./configure i make za kompajliranje ekstenzije.
  • Rezultantni bypass.so se zatim nalazi u poddirektorijumu modula.
  1. Čišćenje:
  • Pokreće make clean i phpize --clean nakon kompajliranja.

Učitavanje i izvršavanje na žrtvinom hostu:

  1. Kompatibilnost verzija:
  • Osigurava da se PHP API verzije poklapaju između napadačevog i žrtvinog sistema.
  1. Učitavanje ekstenzije:
  • Koristi funkciju dl, zaobilazeći ograničenja korišćenjem relativnih putanja ili skripte za automatizaciju procesa.
  1. 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.

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