# phpunit 远程代码执行漏洞(CVE-2017-9841)
composer是php包管理工具,使用composer安装扩展包将会在当前目录创建一个vendor文件夹,并将所有文件放在其中。通常这个目录需要放在web目录外,使用户不能直接访问。
phpunit是php中的单元测试工具,其4.8.19 ~ 4.8.27和5.0.10 ~ 5.6.2版本的`vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php`文件有如下代码:
```php
eval('?>'.file_get_contents('php://input'));
```
如果该文件被用户直接访问到,将造成远程代码执行漏洞。
参考链接:http://phpunit.vulnbusters.com
## 漏洞环境
执行如下命令启动一个php环境,其中phpunit被安装在web目录下。
```
docker-compose build
docker-compose up -d
```
web环境将启动在`http://your-ip:8080`。
## 漏洞复现
直接将PHP代码作为POST Body发送给`http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php`:

[4.0K] /data/pocs/46f26284d8a77997a0eb0a9e2072586ef5bbc2d0
├── [ 52K] 1.png
├── [ 66] docker-compose.yml
├── [ 410] Dockerfile
├── [ 8] flagA
└── [ 968] README.md
0 directories, 5 files