我是如何利用CSRF Get DedeCms Shell的

说实话,有一两个月没有审计大厂了,然后随便看到群里有人问dede最新有没有漏洞,就下了一套最新的dede,结果我一看还真发现了。

我们发现后台添加广告的地方存在跨站请求伪造漏洞。远程攻击者可通过提交特制的请求利用达到写入WebShell目的。 在添加广告的地方,广告内容你直接写就可以了。

<?php eval($_POST[An])?>

这段代码会直接存到数据库里,然后我们从另一个地方利用这个写进数据库的一句话木马,也是这次漏洞的核心利用文件。

/Plus/ad_js.php

问题代码出现在19-44行,具体来看代码。

然后我们注重去分析这几行代码是如何出现问题的。

首先,用用If语句来判断 是否设置了nocache变量 然后再判断$cacheFile文件是否存在,但是因为是或判断,我们只需要用默认的变量注册注册一个nocache变量即可进入此判断。在If语句内,第一个就是一个SELECT查询语句,我们只可以控制$aid,但是因为前面的三目运算符限制了$aid的值,所以说我们就老老实实的让他查询,这里查询的是存放广告的表,然后初始化$abody的值为空,防止变量注册来写入恶意代码。再往后走又是一个If语句,这个If语句是判断是不是广告无限时间,如果是直接把$abody赋值成数据库中normbody字段的值,如果广告时间不是无限的话,就用现在的时间和设置的过期时间进行判断,如果过期了,就输出存入过期的值,如果不过期,就输出存入的值。

之后再下面,对$abody进行了过滤,只是过滤了\r \n 和" ,然后打开$cacheFile文件,并写入$abody变量,然后关闭文件,并在下方包含了这个文件,导致了漏洞的产生。所以说只要我们控制了广告的代码,就可以造GetShell,但是这是后台功能,所以说我们在没有注入的情况下,只能通过Csrf来诱导管理员来点击我们设置好的页面,来让管理员修改广告代码,或者通过一个前台SQL注入漏洞,来修改这个表的字段来模拟后台管理员修改此字段,也可以达到GetShell的目的。

总结

不得不说Dede做安全还是做得挺好的,参数全部转Int了无法注入,这里我们可以看到一个SQL语句,这是查询广告Id的,如果有就赋值内容给$row变量 让然后过滤\r \n和双引号来写入模板页,并在下方直接Include包含了这个模板页,虽然这个模板页是html后缀,但是包含了可以直接执行PHP代码的!所以导致了GetShell的产生。

漏洞影响版本:织梦内容管理系统最新版,及其向下版本全部影响。

视频及附件下载地址:https://pan.baidu.com/s/1i5nc00P 密码:91jn

PS:对于本次的Dede织梦CMS的审计,还有大概2-3个高危漏洞。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-12-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

手把手 | 20行Python代码教你批量将PDF转为Word

35950
来自专栏学习有记

AlwaysOn 进阶 Level 1:What is "SQL Server AlwaysOn"?

16530
来自专栏xingoo, 一个梦想做发明家的程序员

AngularJS 技术总结

学习AngularJS,并且能在工作中使用到,算是很幸运了。因此本篇也会搜集各种资料,进行分享。 书籍分享 AngularJS权威指南 常用链接 Angula...

212100
来自专栏智能大石头

NewLife.Net——构建可靠的网络服务

16830
来自专栏芋道源码1024

短链接原理分析

顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。短链接主要...

19730
来自专栏JAVA技术zhai

天下无难试之多线程面试刁难大全

多线程技术在互联网技术方面使用如此广泛,几乎所有的后端技术面试官都要在并发编程的使用和原理方面对小伙伴们进行各种刁难。作为一名在互联网技术行业打击过成百上千名【...

31290
来自专栏Java职业技术分享

分布式 | Dubbo 架构设计详解

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度...

28500
来自专栏前端开发

小程序的全栈开发新时代

小程序·云开发是微信团队和腾讯云团队共同研发的一套小程序基础能力,简言之就是:云能力将会成为小程序的基础能力。整套功能是基于腾讯云全新推出的云开发(Tencen...

20640
来自专栏小程序·云开发专栏

小程序的全栈开发新时代

小程序·云开发是微信团队和腾讯云团队共同研发的一套小程序基础能力,简言之就是:云能力将会成为小程序的基础能力。整套功能是基于腾讯云全新推出的云开发(Tencen...

12.9K180
来自专栏java达人

Kafka漫游记

我是一条消息,从我被生产者发布到topic的时候,我就清楚自己的使命:被消费者获取消费。但我一直很纳闷,把我直接推送给消费者不就行了,为什么一定要先推送到类似队...

27170

扫码关注云+社区

领取腾讯云代金券