disable_functions bypass - dl function

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Wichtiger Hinweis:

dl ist eine PHP-Funktion, die verwendet werden kann, um PHP-Erweiterungen zu laden. Wenn die Funktion nicht deaktiviert ist, kann sie missbraucht werden, um disable_functions zu umgehen und beliebige Befehle auszuführen. Es gibt jedoch einige strenge Einschränkungen:

  • Die Funktion dl muss in der Umgebung vorhanden und nicht deaktiviert sein.

  • Die PHP-Erweiterung muss mit derselben Hauptversion (PHP-API-Version) kompiliert sein, die der Server verwendet (diese Informationen finden Sie in der Ausgabe von phpinfo).

  • Die PHP-Erweiterung muss sich im Verzeichnis befinden, das durch die Direktive extension_dir definiert ist (dies können Sie in der Ausgabe von phpinfo sehen). Es ist sehr unwahrscheinlich, dass ein Angreifer, der versucht, den Server zu missbrauchen, Schreibzugriff auf dieses Verzeichnis hat. Daher wird diese Anforderung Sie wahrscheinlich daran hindern, diese Technik zu missbrauchen.

Wenn Sie diese Anforderungen erfüllen, lesen Sie den Beitrag weiter https://antichat.com/threads/70763/ , um zu erfahren, wie Sie disable_functions umgehen können. Hier ist eine Zusammenfassung:

Die dl-Funktion wird verwendet, um PHP-Erweiterungen während der Skriptausführung dynamisch zu laden. PHP-Erweiterungen, die normalerweise in C/C++ geschrieben sind, erweitern die Funktionalität von PHP. Der Angreifer bemerkt, dass die dl-Funktion nicht deaktiviert ist, und entscheidet sich, eine benutzerdefinierte PHP-Erweiterung zu erstellen, um Systembefehle auszuführen.

Vom Angreifer durchgeführte Schritte:

  1. PHP-Versionsermittlung:

  • Der Angreifer ermittelt die PHP-Version mithilfe eines Skripts (<?php echo 'PHP-Version ist '.PHP_VERSION; ?>).

  1. Beschaffung des PHP-Quellcodes:

  • Lädt den PHP-Quellcode von der offiziellen PHP-Website oder dem Archiv herunter, wenn es sich um eine ältere Version handelt.

  1. Lokale PHP-Installation:

  • Extrahiert und installiert die spezifische PHP-Version auf ihrem System.

  1. Erstellung der Erweiterung:

Hinweise zur Kompilierung der benutzerdefinierten Erweiterung:

  1. ZEND_MODULE_API_NO:

  • Das ZEND_MODULE_API_NO in bypass.c muss mit dem aktuellen Zend Extension Build übereinstimmen, der mit folgendem Befehl abgerufen werden kann:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. Änderung von PHP_FUNCTION:

  • Für aktuelle PHP-Versionen (5, 7, 8) muss PHP_FUNCTION(bypass_exec) möglicherweise angepasst werden. Der bereitgestellte Codeausschnitt enthält Details zu dieser Änderung.

Dateien der benutzerdefinierten Erweiterung:

  • bypass.c:

  • Implementiert die Kernfunktionalität der benutzerdefinierten Erweiterung.

  • php_bypass.h:

  • Header-Datei, die Erweiterungseigenschaften definiert.

  • config.m4:

  • Wird von phpize verwendet, um die Build-Umgebung für die benutzerdefinierte Erweiterung zu konfigurieren.

Erstellung der Erweiterung:

  1. Kompilierungsbefehle:

  • Verwendet phpize, ./configure und make, um die Erweiterung zu kompilieren.

  • Die resultierende bypass.so befindet sich dann im Unterverzeichnis "modules".

  1. Aufräumen:

  • Führt nach der Kompilierung make clean und phpize --clean aus.

Hochladen und Ausführen auf dem Opferhost:

  1. Versionskompatibilität:

  • Stellt sicher, dass die PHP-API-Versionen zwischen dem System des Angreifers und dem des Opfers übereinstimmen.

  1. Erweiterungsladen:

  • Verwendet die dl-Funktion, um Einschränkungen zu umgehen, indem relative Pfade oder ein Skript zur Automatisierung des Vorgangs verwendet werden.

  1. Skriptausführung:

  • Der Angreifer lädt bypass.so und ein PHP-Skript auf den Server des Opfers hoch.

  • Das Skript verwendet die Funktion dl_local, um bypass.so dynamisch zu laden, und ruft dann bypass_exec mit einem über den cmd-Abfrageparameter übergebenen Befehl auf.

Befehlsausführung:

  • Der Angreifer kann jetzt Befehle ausführen, indem er auf Folgendes zugreift: http://www.example.com/script.php?cmd=<Befehl>

Diese ausführliche Anleitung beschreibt den Prozess der Erstellung und Bereitstellung einer PHP-Erweiterung zur Ausführung von Systembefehlen unter Ausnutzung der dl-Funktion, die idealerweise deaktiviert sein sollte, um solche Sicherheitsverletzungen zu verhindern.

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated