DedeCMS的两个小trick


Jun 06 2018

DedeCMS的两个小trick

首页 » 代码审计 » DedeCMS的两个小trick   

0x00 前言

昨天晚上做了一个神奇的梦,梦到了我高中时候晚自习在偷偷的看《黑客攻防技术宝典》,当年的事情无论是苦是乐,回忆起来总是感觉非常的美好。但是,现实就是现实,梦境还是要被舍友的闹铃声打破,在大梦初醒后,我仿佛有一种“垂死梦中惊坐起”的感觉,是谁为我织出了这么美好的一个梦境?难道织梦CMS(DedeCMS)又要出0day了?于是,我立马从床上跳了下来,打开电脑,从官网下载了最新版的织梦CMS(DedeCMS V5.7 SP2正式版),心想着一定要代码审计一波带走。于是乎,就有了你现在正在阅读的这篇文章。


0x01 服务器任意(图片)文件删除漏洞

漏洞产生在文件:\member\edit_face.php


1.jpg


第39行的unlink() 函数引起了我的注意

函数的参数是 $cfg_basedir和$oldface

先看了一下变量 $cfg_basedir

cfg开头的变量在DedeCMS中都是一些配置参数(cfg是config缩写),一般无法控制。

2.png




看上图,$cfg_basedir是写死在配置文件中的

再看 $oldface

我全局搜索了一下,发现 $oldface 在当前文件中并没有定义,那我是否可以通过变量覆盖的方式来控制这个变量?

跟进到第九行,包含了config.php


1.jpg


继续跟进,在 config.php第76行包含了/include/common.inc.php

4.jpg


在 /include/common.inc.php中把 $_GET $_POST $_COOKIE 中的变量解析了出来。


6.jpg

那么 $oldface就可以用变量覆盖的方式进行赋值。

既然 $oldface 可控,那我就要研究一下有没对这个变量进行严格的过滤。

7.png


在 \member\edit_face.php 第37行,限制了文件结尾后缀名是jpg、gif、png ,这是此漏洞最大的一个限制,似乎没法绕过

8.png

在 \member\edit_face.php 第25行,限制了这个变量必须以 $userdir 的值开头,$userdir 即为储存当前用户上传头像的文件夹,

$userdir = ‘\uploads\userup\’+ 当前用户的userid

但是这里并没有过滤点号,因此可以路径回溯绕过

 

漏洞复现如下:

打开页面\member\edit_face.php

7.jpg


在上传文件后抓包:

8..jpg


如图,我在上传图片的请求包中增加一个oldface参数,指向服务器根目录的一个图片文件,发包后就能成功删除。


0x02 DedeCMS后台登录处一个小trick

首先找到后台登录验证身份处,在 /dede/login.php 第74行,调用了userLogin的checkUser方法,这个方法用来验证管理员凭证。

9.jpg


跟进去,到了 /dede/include/userlogin.class.php 第240行

10.jpg


在第248行的SQL语句中发现用户名是用 like 进行模糊查询。

而且,在245行的正则表达式中发现用户名中可以包含下划线( _ )

11.jpg


在取出用户名后再比较密码,若用户名与密码匹配则登录成功。 

这里存在的一个问题是用户名处用 like 进行模糊查询,而且没有过滤下划线,下划线在 like 中可以用来匹配单个字符,因此,即使我不知道管理员用户名,也可以登录后台。

 

漏洞复现如下:

若管理员是 admin 则我在后台输入 _____ 即可登录后台(五个下滑线,与管理员用户名字节数相同)


1.jpg




如果您喜欢本博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容:

正文部分到此结束

文章标签: dedecms漏洞

版权声明:若无特殊注明,本文皆为( mOon )原创,转载请保留文章出处。

也许喜欢: «Dedecms V5.7 后台文件重命名[CVE-2018-9134] | ThinkPHP5.0.x框架SQL注入»

你肿么看?

你还可以输入 250/250 个字

 微笑 大笑 拽 大哭 亲亲 流汗 喷血 奸笑 囧 不爽 晕 示爱 害羞 吃惊 惊叹 爱你 吓死了 呵呵

评论信息框

这篇文章还没有收到评论,赶紧来抢沙发吧~