tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Ważna uwaga:
dl
to funkcja PHP, która może być używana do ładowania rozszerzeń PHP. Jeśli funkcja nie jest wyłączona, może być nadużywana do obejścia disable_functions
i wykonywania dowolnych poleceń.
Jednak ma pewne surowe ograniczenia:
- Funkcja
dl
musi być obecna w środowisku i nie wyłączona - Rozszerzenie PHP musi być skompilowane z tą samą główną wersją (wersja API PHP), której używa serwer (możesz zobaczyć te informacje w wynikach phpinfo)
- Rozszerzenie PHP musi być znajdować się w katalogu, który jest zdefiniowany przez dyrektywę
extension_dir
(możesz to zobaczyć w wynikach phpinfo). Jest bardzo mało prawdopodobne, że atakujący próbujący nadużyć serwera będzie miał dostęp do zapisu w tym katalogu, więc ten wymóg prawdopodobnie uniemożliwi ci nadużycie tej techniki).
Jeśli spełniasz te wymagania, kontynuuj czytanie posta https://antichat.com/threads/70763/ aby dowiedzieć się, jak obejść disable_functions. Oto podsumowanie:
Funkcja dl jest używana do dynamicznego ładowania rozszerzeń PHP podczas wykonywania skryptu. Rozszerzenia PHP, zazwyczaj napisane w C/C++, zwiększają funkcjonalność PHP. Atakujący, zauważając, że funkcja dl
nie jest wyłączona, postanawia stworzyć niestandardowe rozszerzenie PHP do wykonywania poleceń systemowych.
Kroki podjęte przez atakującego:
- Identyfikacja wersji PHP:
- Atakujący określa wersję PHP za pomocą skryptu (
<?php echo 'PHP Version is '.PHP_VERSION; ?>
).
- Pozyskanie źródła PHP:
- Pobiera źródło PHP z oficjalnej strony PHP lub z archiwum, jeśli wersja jest starsza.
- Lokalna konfiguracja PHP:
- Wydobywa i instaluje konkretną wersję PHP na swoim systemie.
- Tworzenie rozszerzenia:
- Studia tworzenia rozszerzeń PHP i przegląda kod źródłowy PHP.
- Skupia się na powieleniu funkcjonalności funkcji exec znajdującej się w
ext/standard/exec.c
.
Uwagi dotyczące kompilacji niestandardowego rozszerzenia:
- ZEND_MODULE_API_NO:
ZEND_MODULE_API_NO
wbypass.c
musi odpowiadać bieżącej wersji budowy rozszerzenia Zend, którą można uzyskać za pomocą:
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
- Modyfikacja PHP_FUNCTION:
- Dla nowszych wersji PHP (5, 7, 8),
PHP_FUNCTION(bypass_exec)
może wymagać dostosowania. Podany fragment kodu szczegółowo opisuje tę modyfikację.
Pliki niestandardowego rozszerzenia:
- bypass.c:
- Implementuje podstawową funkcjonalność niestandardowego rozszerzenia.
- php_bypass.h:
- Plik nagłówkowy, definiujący właściwości rozszerzenia.
- config.m4:
- Używany przez
phpize
do skonfigurowania środowiska budowy dla niestandardowego rozszerzenia.
Budowanie rozszerzenia:
- Polecenia kompilacji:
- Używa
phpize
,./configure
imake
do kompilacji rozszerzenia. - Powstały
bypass.so
znajduje się w podkatalogu modułów.
- Czyszczenie:
- Uruchamia
make clean
iphpize --clean
po kompilacji.
Przesyłanie i wykonywanie na zainfekowanym hoście:
- Kompatybilność wersji:
- Upewnia się, że wersje API PHP są zgodne między systemami atakującego a ofiary.
- Ładowanie rozszerzenia:
- Wykorzystuje funkcję
dl
, omijając ograniczenia, używając ścieżek względnych lub skryptu do automatyzacji procesu.
- Wykonywanie skryptu:
- Atakujący przesyła
bypass.so
i skrypt PHP na serwer ofiary. - Skrypt używa funkcji
dl_local
, aby dynamicznie załadowaćbypass.so
, a następnie wywołujebypass_exec
z poleceniem przekazanym przez parametr zapytaniacmd
.
Wykonywanie poleceń:
- Atakujący może teraz wykonywać polecenia, uzyskując dostęp do:
http://www.example.com/script.php?cmd=<command>
Ten szczegółowy przewodnik opisuje proces tworzenia i wdrażania rozszerzenia PHP do wykonywania poleceń systemowych, wykorzystując funkcję dl
, która powinna być idealnie wyłączona, aby zapobiec takim naruszeniom bezpieczeństwa.
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.