
phpunit-shell | CVE_2017-9841
un simple script python3 pour exploiter CVE-2017-9841.
Script simple qui exploite une vulnérabilité d'exécution de code à distance trouvée dans
PHPUnit avant 4.8.28 et 5.x avant 5.6.3. Effectue une requête POST vers la
cible avec des commandes système fournies par l'utilisateur.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9841.
pip3 install requests bs4
Après avoir identifié une cible exécutant phpunit :
chmod +x phpunit-shell
./phpunit-shell -h
ou
python3 phpunit-shell -h
L'option -h ou --help montre comment exécuter le script avec quelques exemples.
Il y a deux arguments positionnels et quelques arguments optionnels.
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
Par défaut, phpunit-shell imprime en couleur et avec un formatage supplémentaire dans le terminal, mais cela n'est pas toujours utile pour les personnes utilisant des lecteurs d'écran. L'argument --accessible désactivera le formatage fantaisiste et la couleur de l'affichage terminal.
Il désactivera également l'art ASCII.
Le script ne peut pas faire d'hypothèses sur le système ciblé ni sur les limitations de l'utilisateur/service exécutant l'application vulnérable. C'est-à-dire que ce n'est pas un shell complet, donc changer de répertoire n'est pas possible et les commandes longues peuvent ne pas fonctionner.
C'est plus un demi-shell simple et rapide 🐢 conçu comme une passerelle vers une exploitation ultérieure - et éventuellement un shell complet, élévation de privilèges, etc... 👍
Le script utilise également un délai d'attente de 30 secondes pour les requêtes, cela peut être modifié ou désactivé en éditant le script.
Le code PHP 'shell_exec' est utilisé par défaut, mais cela peut être changé si l'utilisateur le souhaite. Par exemple en utilisant 'system' à la place.
Le script était principalement un exercice pour créer un simple script Python exploitant CVE-2017-9841 et accélérer l'exploitation ultérieure.
https://skerritt.blog/a11y/ - implémentation de l'accessibilité.