首页 - 神途资讯 > Dedecms V5.7后台任意代码执行[CVE-2018-7700]

Dedecms V5.7后台任意代码执行[CVE-2018-7700]

发布于:2024-07-19 作者:admin 阅读:88

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

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

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

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

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

这样的话,我们只需要构造

这样就可绕过()

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

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

继续跟进类的方法:

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

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

继续跟踪方法:

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

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

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

跟进():

跟进()方法:

最后跟进方法:

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

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

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

={dede:field ='yes'}();{/dede:field}

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

后台地址/.php?url=a&token=&={dede:field ='yes'}();{/dede:field}

利用条件:登录后台

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

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,请告知我们,本站将立刻删除涉嫌侵权内容。

相关文章