
Laravel-RCE: CVE-2017-9841
Laravel-RCE: CVE-2017-9841
CVE-2017-9841 è una vulnerabilità critica di esecuzione remota di codice (RCE) che colpisce la libreria PHPUnit, ampiamente utilizzata per test automatizzati in PHP. Questa falla consente a un attaccante di eseguire comandi arbitrari sul server se riesce ad accedere a un file specifico di PHPUnit esposto pubblicamente.
📌 Dettagli principali Identificatore: CVE-2017-9841 GOOGLE DORK "inurl:"/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php" Prodotto interessato: PHPUnit (componente phpunit/phpunit)
Versioni vulnerabili: precedenti alla 5.6.3 e alla 4.8.28
Tipo di vulnerabilità: Esecuzione remota di codice (RCE)
Impatto: Critico – consente all'attaccante di eseguire codice PHP arbitrario sul server.
🔍 Come funziona la vulnerabilità Il problema risiede nel file eval-stdin.php, situato in:
text /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php (o in percorsi simili, a seconda della struttura del progetto).
Questo file è stato progettato per uso interno di PHPUnit, ma in molte installazioni rimane accessibile pubblicamente. Il codice di questo file legge semplicemente i dati dall'input standard (php://input) e li esegue direttamente con la funzione eval(). In altre parole, qualsiasi richiesta POST inviata a questo endpoint verrà valutata come codice PHP.
Esempio di sfruttamento Un attaccante può inviare una richiesta HTTP POST al file vulnerabile contenente, ad esempio:
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 🛡️ " "
Il server eseguirà il codice e restituirà l'output, confermando l'esecuzione.
Con questo, l'attaccante può escalare l'attacco per ottenere una reverse shell, leggere file sensibili, modificare dati, ecc.
🛡️ Mitigazione Aggiornare PHPUnit a una versione corretta (≥ 5.6.3 o ≥ 4.8.28).
Rimuovere o limitare l'accesso alla directory vendor/phpunit/ in ambienti di produzione, poiché le librerie di test non dovrebbero essere accessibili pubblicamente.
Configurare il server per bloccare le richieste a file di test comuni, come eval-stdin.php.
Utilizzare un firewall applicativo (WAF) per rilevare e bloccare tentativi di sfruttamento.
📚 Contesto aggiuntivo Questa vulnerabilità è diventata molto nota perché molti progetti, inavvertitamente, lasciano la directory vendor accessibile al pubblico. Poiché PHPUnit è una dipendenza comune nei progetti PHP (inclusi framework come Laravel, Symfony, ecc.), l'esposizione accidentale è frequente. Per questo, è uno dei primi vettori testati negli scan automatizzati di sicurezza.
Se sei uno sviluppatore o un amministratore di sistema, verifica che i tuoi siti in produzione non abbiano il file eval-stdin.php accessibile esternamente.