
Laboratorio basado en Docker para reproducir CVE-2017-9841, una vulnerabilidad de ejecución remota de código en eval-stdin.php de PHPUnit cuando está instalado bajo una raíz web.
Composer es una herramienta de gestión de paquetes de PHP. Al usar Composer para instalar un paquete de extensión, se creará una carpeta 'vendor' en el directorio actual y todos los archivos se colocarán allí. Normalmente, este directorio debe colocarse fuera del directorio web para que los usuarios no puedan acceder directamente.
PHPUnit es una herramienta de pruebas unitarias en PHP. En sus versiones 4.8.19 ~ 4.8.27 y 5.0.10 ~ 5.6.2, el archivo vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php contiene el siguiente código:
eval('?>'.file_get_contents('php://input'));
Si este archivo es accesible directamente por un usuario, se producirá una vulnerabilidad de ejecución remota de código.
Enlace de referencia: http://phpunit.vulnbusters.com
Ejecute el siguiente comando para iniciar un entorno PHP, donde PHPUnit está instalado en el directorio web.
docker-compose build
docker-compose up -d
El entorno web se iniciará en http://your-ip:8080.
Simplemente envíe código PHP como cuerpo POST a http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php:
