
Laravel-RCE : CVE-2017-9841
Laravel-RCE: CVE-2017-9841
CVE-2017-9841 est une vulnérabilité critique d'exécution de code à distance (RCE) qui affecte la bibliothèque PHPUnit, largement utilisée pour les tests automatisés en PHP. Cette faille permet à un attaquant d'exécuter des commandes arbitraires sur le serveur s'il parvient à accéder à un fichier spécifique de PHPUnit exposé publiquement.
📌 Détails principaux Identifiant : CVE-2017-9841 GOOGLE DORK "inurl:"/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" Produit affecté : PHPUnit (composant phpunit/phpunit) Versions vulnérables : antérieures à 5.6.3 et 4.8.28 Type de vulnérabilité : Exécution de code à distance (RCE) Impact : Critique – permet à l'attaquant d'exécuter du code PHP arbitraire sur le serveur.
🔍 Comment fonctionne la vulnérabilité Le problème réside dans le fichier eval-stdin.php, situé à :
text /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
(ou dans des chemins similaires, selon la structure du projet).
Ce fichier a été conçu pour un usage interne de PHPUnit, mais dans de nombreuses installations, il reste accessible publiquement. Le code de ce fichier lit simplement les données de l'entrée standard (php://input) et les exécute directement avec la fonction eval(). Autrement dit, toute requête POST envoyée à ce point de terminaison sera évaluée comme du code PHP.
Exemple d'exploitation Un attaquant peut envoyer une requête HTTP POST vers le fichier vulnérable contenant, par exemple :
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 🛡️ " "
Le serveur exécutera le code et retournera la sortie, confirmant l'exécution.
Avec cela, l'attaquant peut escalader l'attaque pour obtenir un shell inversé, lire des fichiers sensibles, modifier des données, etc.
🛡️ Atténuation
vendor/phpunit/ dans les environnements de production, car les bibliothèques de test ne doivent pas être accessibles publiquement.eval-stdin.php.📚 Contexte supplémentaire
Cette vulnérabilité est devenue très connue car de nombreux projets laissent par inadvertance le répertoire vendor accessible au public. Comme PHPUnit est une dépendance courante dans les projets PHP (y compris les frameworks comme Laravel, Symfony, etc.), l'exposition accidentelle est fréquente. C'est pourquoi c'est l'un des premiers vecteurs testés dans les scans automatisés de sécurité.
Si vous êtes développeur ou administrateur système, vérifiez que vos sites en production ne possèdent pas le fichier eval-stdin.php accessible de l'extérieur.