dedecms 5.7 download.php 代码执行漏洞,Dedecms V5.7后台任意代码执行[CVE-2018-7700] [高危漏洞][官方未修复]...

该漏洞的前提是登陆了后台,所以要不要修复大家看着办吧!

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

查看/dede/tag_test_action.php文件的源码:

3a8b86cfa3950fbbce0ab1141173cc42.png

如果直接访问这个文件,会进入csrf_check()函数。提示token错误,且退出执行。

跟进csrf_check(),该函数所在文件为dede/config.php:

0834cb78064ee2965bbd4b80e3f2602f.png

这里的判断只是判断token值是否和session中的token相等,还有就是判断token是否存在。就这么来看,貌似比较矛盾。Session[‘token’]的值我们不知道,我们没法伪造token。有趣的是,当我们登录之后,并不会生成session[‘token’],也就是说,这时的session[‘token’]为null。

这样的话,我们只需要构造http://localhost/a.php?token=

这样就可绕过csrf_check()

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

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

8fb93b306b36357f89a262cdc298b922.png

85e0cd0969ecfbfd2735bdf3af56d3d7.png

继续跟进DedeTagParse类的LoadSource方法:

79cc6b8ec8a212a917adbd363a926202.png

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

e86607ab942d897ad125da29aa88f897.png

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

继续跟踪LoadCache方法:

40e7acd5e51b58ba4ed73be37845c7a9.png

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

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

8e35e5dfabaa8caa9d46cc22cee56ca9.png

edf5f252f70c3cefc4dd077d7bf58203.png

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

5abc6e80ff97418625bc6af30216f190.png

跟进GetResult():

4e32bfa389dec796a89087dc729611f2.png

跟进AssignSysTag()方法:

6628239729cddb962a2d6a3665321a04.png

最后跟进Runphp方法:

ba37d0d470fe3aead7dcfc6e93c133d5.png

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

综上,我们传入的$partcode变量应该符合dedecms模板格式,且带有runphp=’yes’标签。

基于此,我们可构造以下payload:

partcode={dede:field name='source' runphp='yes'}phpinfo();{/dede:field}

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

2e665ea9530852e3570ad68cffa99a88.png

利用条件:登录后台

解决方案:重新实现csrf_check()函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值