
Laboratoire basé sur Docker pour reproduire CVE-2017-9841, une vulnérabilité d'exécution de code à distance dans eval-stdin.php de PHPUnit lorsqu'il est installé dans une racine web.
Composer est un gestionnaire de paquets PHP. L'installation d'un paquet avec Composer crée un dossier vendor dans le répertoire courant et y place tous les fichiers. Normalement, ce dossier doit être placé en dehors du répertoire web pour que les utilisateurs ne puissent pas y accéder directement.
phpunit est un outil de test unitaire pour PHP. Les versions 4.8.19 à 4.8.27 et 5.0.10 à 5.6.2 contiennent le fichier vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php avec le code suivant :
eval('?>'.file_get_contents('php://input'));
Si ce fichier est accessible directement par un utilisateur, cela entraîne une vulnérabilité d'exécution de code à distance.
Lien de référence : http://phpunit.vulnbusters.com
Exécutez la commande suivante pour lancer un environnement PHP dans lequel phpunit est installé dans le répertoire web.
docker-compose build
docker-compose up -d
L'environnement web sera accessible à http://your-ip:8080.
Envoyez simplement du code PHP en tant que corps POST à http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php :
