disable_functions bypass - dl function

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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żyta do ominięcia disable_functions i wykonania dowolnych poleceń. Jednak ma pewne ograniczenia:

  • Funkcja dl musi być obecna w środowisku i nie wyłączona

  • Rozszerzenie PHP musi być skompilowane z tą samą główną wersją (wersją interfejsu API PHP), którą używa serwer (można to sprawdzić w wyniku phpinfo)

  • Rozszerzenie PHP musi być znajdować się w katalogu, który jest określony przez dyrektywę extension_dir (można to zobaczyć w wyniku phpinfo). 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 to wymaganie prawdopodobnie uniemożliwi nadużycie tej techniki.

Jeśli spełniasz te wymagania, kontynuuj czytanie posta https://antichat.com/threads/70763/ , aby dowiedzieć się, jak ominąć disable_functions. Oto podsumowanie:

Funkcja dl jest używana do dynamicznego ładowania rozszerzeń PHP podczas wykonywania skryptu. Rozszerzenia PHP, zwykle napisane w C/C++, rozszerzają funkcjonalność PHP. Atakujący, zauważając, że funkcja dl nie jest wyłączona, postanawia stworzyć niestandardowe rozszerzenie PHP do wykonania poleceń systemowych.

Kroki podjęte przez atakującego:

  1. Identyfikacja wersji PHP:

  • Atakujący określa wersję PHP za pomocą skryptu (<?php echo 'Wersja PHP to '.PHP_VERSION; ?>).

  1. Pobieranie źródła PHP:

  1. Lokalna konfiguracja PHP:

  • Rozpakowuje i instaluje konkretną wersję PHP na swoim systemie.

  1. Tworzenie rozszerzenia:

  • Studiuje tworzenie rozszerzeń PHP i analizuje kod źródłowy PHP.

  • Skupia się na duplikowaniu funkcjonalności funkcji exec znajdującej się w ext/standard/exec.c.

Uwagi dotyczące kompilacji niestandardowego rozszerzenia:

  1. ZEND_MODULE_API_NO:

  • ZEND_MODULE_API_NO w bypass.c musi pasować do bieżącej kompilacji rozszerzenia Zend, którą można uzyskać za pomocą:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  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żywane przez phpize do konfiguracji środowiska kompilacji niestandardowego rozszerzenia.

Budowanie rozszerzenia:

  1. Polecenia kompilacji:

  • Używa phpize, ./configure i make do skompilowania rozszerzenia.

  • Otrzymany plik bypass.so znajduje się w podkatalogu modules.

  1. Czyszczenie:

  • Wykonuje make clean i phpize --clean po kompilacji.

Przesyłanie i wykonanie na hostingu ofiary:

  1. Zgodność wersji:

  • Zapewnia zgodność wersji interfejsu API PHP między systemami atakującego i ofiary.

  1. Ładowanie rozszerzenia:

  • Wykorzystuje funkcję dl, obejście ograniczeń za pomocą ścieżek względnych lub skryptu automatyzującego ten proces.

  1. Wykonanie skryptu:

  • Atakujący przesyła bypass.so i skrypt PHP na serwer ofiary.

  • Skrypt używa funkcji dl_local do dynamicznego ładowania bypass.so, a następnie wywołuje bypass_exec z poleceniem przekazanym za pomocą parametru zapytania cmd.

Wykonanie polecenia:

  • Atakujący może teraz wykonywać polecenia, uzyskując dostęp do: http://www.example.com/script.php?cmd=<polecenie>

Ten szczegółowy przewodnik przedstawia proces tworzenia i wdrażania rozszerzenia PHP do wykonywania poleceń systemowych, wykorzystując funkcję dl, która idealnie powinna być wyłączona, aby zapobiec takim naruszeniom bezpieczeństwa.

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated