
Laravel-RCE: CVE-2017-9841
Laravel-RCE: CVE-2017-9841
CVE-2017-9841 ist eine kritische Schwachstelle zur Remote-Code-Ausführung (RCE), die die PHPUnit-Bibliothek betrifft, die häufig für automatisierte Tests in PHP verwendet wird. Dieser Fehler ermöglicht es einem Angreifer, beliebige Befehle auf dem Server auszuführen, wenn er auf eine bestimmte, öffentlich zugängliche PHPUnit-Datei zugreifen kann.
📌 Wichtige Details Identifikator: CVE-2017-9841 GOOGLE DORK "inurl:"/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" Betroffenes Produkt: PHPUnit (Komponente phpunit/phpunit)
Verwundbare Versionen: vor 5.6.3 und 4.8.28
Schwachstellentyp: Remote-Code-Ausführung (RCE)
Auswirkung: Kritisch – ermöglicht dem Angreifer die Ausführung beliebigen PHP-Codes auf dem Server.
🔍 Wie die Schwachstelle funktioniert Das Problem liegt in der Datei eval-stdin.php, die sich befindet in:
text /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php (oder in ähnlichen Pfaden, abhängig von der Projektstruktur).
Diese Datei wurde für die interne Nutzung durch PHPUnit entwickelt, bleibt aber in vielen Installationen öffentlich zugänglich. Der Code dieser Datei liest einfach Daten von der Standardeingabe (php://input) und führt sie direkt mit der Funktion eval() aus. Das bedeutet, jede POST-Anfrage an diesen Endpunkt wird als PHP-Code ausgewertet.
Beispiel zur Ausnutzung Ein Angreifer kann eine HTTP-POST-Anfrage an die verwundbare Datei senden, die beispielsweise Folgendes enthält:
http POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
Host: alvo.com
Content-Type: application/x-www-form-urlencoded
Payload 🛡️ " "
Der Server führt den Code aus und gibt die Ausgabe zurück, was die Ausführung bestätigt.
Damit kann der Angreifer den Angriff ausweiten, um eine Reverse-Shell zu erhalten, sensible Dateien zu lesen, Daten zu ändern usw.
🛡️ Minderung
📚 Zusätzlicher Kontext Diese Schwachstelle wurde sehr bekannt, weil viele Projekte versehentlich das vendor-Verzeichnis öffentlich zugänglich lassen. Da PHPUnit eine häufige Abhängigkeit in PHP-Projekten (einschließlich Frameworks wie Laravel, Symfony usw.) ist, kommt es häufig zu einer versehentlichen Offenlegung. Daher ist es einer der ersten Vektoren, die bei automatisierten Sicherheitsscans getestet werden.
Wenn Sie Entwickler oder Systemadministrator sind, überprüfen Sie, ob Ihre Websites in der Produktion nicht die Datei eval-stdin.php extern zugänglich haben.