
phpunit-shell | CVE_2017-9841
Ein einfaches python3-Skript zum Ausnutzen von CVE-2017-9841.
Einfaches Skript, das eine Schwachstelle zur Remote-Codeausführung ausnutzt, die in
PHPUnit vor 4.8.28 und 5.x vor 5.6.3 gefunden wurde. Sendet eine POST-Anfrage an das
Ziel mit vom Benutzer eingegebenen Systembefehlen.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9841.
pip3 install requests bs4
Nachdem ein Ziel identifiziert wurde, auf dem phpunit läuft:
chmod +x phpunit-shell
./phpunit-shell -h
oder
python3 phpunit-shell -h
Die Option -h oder --help zeigt, wie das Skript mit einigen Beispielen ausgeführt wird.
Es gibt zwei Positionsargumente und einige optionale Argumente.
usage: phpunit-shell.py [-h] [-a] [-n] address
phpunit-shell.py exploits an RCE vulnerability in
applications running PHPUnit before 4.8.28 and 5.x before 5.6.3.
positional arguments:
address ip/hostname, port, sub-directories to the vulnerable eval-stdin.php file.
optional arguments:
-h, --help show this help message and exit
-a, --accessible turns off features which may negatively affect screen readers
-n, --no-colour removes colour output
example:
phpunit-shell.py 10.10.10.10/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
phpunit-shell gibt standardmäßig in Farbe und mit einiger zusätzlicher Formatierung an die Terminalausgabe aus, dies ist jedoch nicht immer hilfreich für diejenigen, die Screenreader verwenden. Die Verwendung des --accessible-Arguments deaktiviert ausgefallene Formatierung und Farbe in der Terminalausgabe.
Es deaktiviert auch ASCII-Art.
Das Skript kann keine Annahmen über das System treffen, das es angreift, oder über die Einschränkungen des Benutzers/Dienstes, der die angreifbare Anwendung ausführt. d.h. dies ist keine vollwertige Shell, daher kann das Wechseln von Verzeichnissen nicht erreicht werden und längere Befehle sind möglicherweise nicht möglich.
Es ist eher eine einfache, schnelle Halb-Shell 🐢, die als Tor zu weiterer Ausnutzung konzipiert ist - und schließlich zu vollwertiger Shell, Privilegieneskalation, usw... 👍
Das Skript verwendet außerdem ein Zeitlimit von 30 Sekunden für Anfragen; dies kann geändert oder ganz deaktiviert werden, indem man das Skript bearbeitet.
Standardmäßig wird der PHP-Code 'shell_exec' verwendet, aber dies kann auch geändert werden, wenn der Benutzer es wünscht. z.B. stattdessen 'system' verwenden.
Das Skript war hauptsächlich eine Übung, um ein einfaches Python-Skript zur Ausnutzung von CVE-2017-9841 zu erstellen und die weitere Ausnutzung zu beschleunigen.
https://skerritt.blog/a11y/ - Implementierung der Barrierefreiheit.