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

Ważna uwaga:

image

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:

  1. Identyfikacja wersji PHP:
  • Atakujący określa wersję PHP za pomocą skryptu (<?php echo 'PHP Version is '.PHP_VERSION; ?>).
  1. Pozyskanie źródła PHP:
  • Pobiera źródło PHP z oficjalnej strony PHP lub z archiwum, jeśli wersja jest starsza.
  1. Lokalna konfiguracja PHP:
  • Wydobywa i instaluje konkretną wersję PHP na swoim systemie.
  1. 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:

  1. ZEND_MODULE_API_NO:
  • ZEND_MODULE_API_NO w bypass.c musi odpowiadać bieżącej wersji budowy rozszerzenia Zend, którą można uzyskać za pomocą:
bash
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żywany przez phpize do skonfigurowania środowiska budowy dla niestandardowego rozszerzenia.

Budowanie rozszerzenia:

  1. Polecenia kompilacji:
  • Używa phpize, ./configure i make do kompilacji rozszerzenia.
  • Powstały bypass.so znajduje się w podkatalogu modułów.
  1. Czyszczenie:
  • Uruchamia make clean i phpize --clean po kompilacji.

Przesyłanie i wykonywanie na zainfekowanym hoście:

  1. Kompatybilność wersji:
  • Upewnia się, że wersje API PHP są zgodne między systemami atakującego a ofiary.
  1. Ładowanie rozszerzenia:
  • Wykorzystuje funkcję dl, omijając ograniczenia, używając ścieżek względnych lub skryptu do automatyzacji procesu.
  1. 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łuje bypass_exec z poleceniem przekazanym przez parametr zapytania cmd.

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