!
也想出现在这里? 联系我们
广告位
当前位置:首页>安全咨询>漏洞复现>DedeCMS V5.7后台任意代码执行CVE-2018-7700

DedeCMS V5.7后台任意代码执行CVE-2018-7700

漏洞简介

该漏洞的触发文件为 /dede/tag_test_action.php。起因是 csrf_check() 函数的绕过,导致可执行任意代码。
 


 

利用条件

登录后台
 


 

漏洞分析

该漏洞的触发点为/dede/tag_test_action.php。起因是csrf_check()的绕过,导致可执行任意代码。
查看/dede/tag_test_action.php文件的源码:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

如果直接访问这个文件,会进入csrf_check()函数。提示token错误,且退出执行。
跟进csrf_check(),该函数所在文件为dede/config.php:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

这里的判断只是判断token值是否和session中的token相等,还有就是判断token是否存在。就这么来看,貌似比较矛盾。Session[token]的值我们不知道,我们没法伪造token。有趣的是,当我们登录之后,并不会生成session[token],也就是说,这时的session[token]null
这样的话,我们只需要构造http://localhost/a.php?token=
这样就可绕过csrf_check()

绕过之后,便可为$partcode构造payload

首先是对数据进行初始化。跟进$pv->SetTemplet(),跟踪变量的流向:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

DedeCMS V5.7后台任意代码执行CVE-2018-7700

继续跟进DedeTagParse类的LoadSource方法:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

在这个方法中,我们传入的payload被写入inc文件中,继续跟踪LoadTemplate

DedeCMS V5.7后台任意代码执行CVE-2018-7700

这里先是判断文件是否存在,很显然是存在的。随后将文件读入$this->SourceString字符串中。

继续跟踪LoadCache方法:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

在这里,将数据读入缓存中。至此,数据初始化完成。

触发代码执行的点在PartView类的Display方法,源码如下:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

DedeCMS V5.7后台任意代码执行CVE-2018-7700

display()方法中再次调用DedeTagParse类中的display()方法:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

跟进GetResult():

DedeCMS V5.7后台任意代码执行CVE-2018-7700

跟进AssignSysTag()方法:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

最后跟进Runphp方法:

DedeCMS V5.7后台任意代码执行CVE-2018-7700

在这里,只是简单的将数据从对象中提取出来,做一些简单的字符串替换,便可成功执行代码。

综上,我们传入的$partcode变量应该符合dedecms模板格式,且带有runphp=yes’标签。
基于此,我们可构造以下payload


 


 

漏洞复现

加上绕过csrf_check()payload,得到最后的poc:


DedeCMS V5.7后台任意代码执行CVE-2018-7700

 


 

解决方案

重新实现csrf_check()函数
 

给TA打赏
共{{data.count}}人
人已打赏
漏洞复现

DedeCms后台地址泄露漏洞(dedecms漏洞复现)

2022-10-4 22:07:59

漏洞复现

DedeCMS 5.7 swf文件反射型xss漏洞

2022-10-4 22:08:47

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 2651636361@qq.com 或点击右侧 私信:少羽 反馈,我们将尽快处理。
0 条回复A文章作者M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索