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

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

漏洞简述

PHPUnit是其中的一个基于PHP的测试框架。PHPUnit 4.8.28之前的版本和5.6.3之前的5.x版本中的Util/PHP/eval-stdin.php文件存在安全漏洞。远程攻击者可通过发送以‘<?php’字符串开头的HTTP POST数据利用该漏洞执行任意PHP代码。

漏洞影响版本

  • 4.8.19 <= PHPUnit <= 4.8.27
  • 5.0.10 <= PHPUnit <= 5.6.2

漏洞poc

https://github.com/RandomRobbieBF/phpunit-brute

漏洞环境搭建

使用vulhub进行复现,访问下面的地址。

http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

能访问该文件路径即存在漏洞。

漏洞复现

可以使用上面的poc进行验证,爆破phpunit的路径。

获取到漏洞路径后,直接post php代码即可执行。

溯源排查

以该容器为例,排查Apache的日志即可。但是容器中把日志的输出重定向到标准输出,所以需要通过docker logs查看日志。同时一旦容器停止运行标准输出的日志也会没有。

排查关键词:eval-stdin.php,200

docker-compose logs | grep eval-stdin.php | grep 200

修复方式

厂商已发布了漏洞修复程序,请及时关注更新:
https://github.com/sebastianbergmann/phpunit/commit/284a69fb88a2d0845d23f42974a583d8f59bf5a5

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论