
Docker-basiertes Labor zur Reproduktion von CVE-2017-9841, einer Remote-Codeausführungsschwachstelle in PHPUnit's eval-stdin.php, wenn es unter einem Web-Root installiert ist.
Composer ist ein PHP-Paketverwaltungstool. Bei der Installation eines Pakets mit Composer wird im aktuellen Verzeichnis ein vendor-Ordner erstellt, in dem alle Dateien abgelegt werden. Normalerweise sollte dieses Verzeichnis außerhalb des Webverzeichnisses liegen, damit Benutzer nicht direkt darauf zugreifen können.
phpunit ist ein Unit-Testing-Tool für PHP. In den Versionen 4.8.19 bis 4.8.27 und 5.0.10 bis 5.6.2 enthält die Datei vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php folgenden Code:
eval('?>'.file_get_contents('php://input'));
Wenn diese Datei von einem Benutzer direkt aufgerufen wird, führt dies zu einer Sicherheitslücke für die Ausführung von entferntem Code (Remote Code Execution).
Referenzlink: http://phpunit.vulnbusters.com
Führen Sie die folgenden Befehle aus, um eine PHP-Umgebung zu starten, in der phpunit im Webverzeichnis installiert ist.
docker-compose build
docker-compose up -d
Die Webumgebung wird unter http://your-ip:8080 gestartet.
Senden Sie PHP-Code direkt als POST-Body an http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php:
