首页 - 神途资讯 > dedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018

dedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018

发布于:2024-04-13 作者:admin 阅读:75

一、漏洞描述

织梦内容管理系统()是一款PHP开源网站管理系统。 V5.7 SP2版本中的tpl.php中存在代码执行漏洞,可以通过该漏洞在增加新标签中上传木马,获取。

二、利用条件

该漏洞利用需要登录后台,并且后台的账户权限是管理员权限。

三、漏洞环境搭建

1、官方下载 V5.7 SP2(UTF-8),下载地址:

2、使用搭建web环境

3、把下载好的源码放到网站根目录下也就是www目录下,然后开启, 浏览器访问,点击继续,

中间有一个配置MySQL数据库密码,其余全部默认继续

四、漏洞复现

1、由于此漏洞是属于后台漏洞,需要先登录到后台,后台默认的账户和密码都是admin。默认后台路径是//dede。

2、分析tpl.php里面的代码

A:此处定义了一个的函数,首先做一个判断,参数""的值是否等于,如果等于就进行下一步

B:这里有一个csrf检验函数,防止CSRF漏洞的,需要加上token来绕过限制

C:正则表达式匹配,这里的意思是判断参数的值是否匹配正则表达式的条件,不匹配就不允许进行操作。

D:把$里面的内容写入到相对应的路径里,由于这一部分代码除了对写入的文件名字做了简单的过滤和一个csrf防护之外,其他并没有什么安全措施,导致我们可以任意写入代码。

其余的

政策表达式的意思

^:匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符 *** 。要匹配 ^ 字符本身,请使用

{1,}:代表匹配1次到多次,最少1次.

[a-z0-9_-] :正则中的方括号是指满足方括号中要求的“一个字符”;[a-z0-9_-]是指小写字母、数字、下划线、横线中的一个字符

.lib.php:匹配.lib匹配.php

$:匹配输入字符串的结尾位置。如果设置了 对象的 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 $

头尾的^和$代表匹配一个完整的字符串,如果这个字符串中出现任何一个不是[]中内容的字符这个字符串就无法匹配.

KaTeX parse error: 'EOF', got '#' at 25: … ("#̲\.lib\.php#i", “”, $);将参数值中.lib.php替换为空

() 函数删除由 () 函数添加的反斜杠。

3、通过上面的代码了解到,有csrf检测防御,需要获得token来进行绕过。再次浏览tpl.php代码,发现的参数有很多,比如del,edit,等等,但只有传入的时候页面才会获取token,而其他的都没有获取token,所以只能通过=来获取token

4、我们再去tpl.php里看一下,发现的参数有很多,只有通过=来获取token,浏览器访问

5、然后查看页面源码,发现token

6、通过浏览tpl.php代码,发现要上传的参数有:,token,,,构造

a.由于全局变量注册的特性,所以这里的变量和变量可控。

b.可以把内容直接写到以.lib.php结尾的文件中。

:

7、浏览器访问构造的,下图发现成功写入

8、根据代码可以看到写入到目录,浏览器访问

9.写入一句话木马

10.菜刀连接,成功

五、漏洞防御

1.禁止此处写入文件。

2.过滤恶意标签

二维码

扫一扫关注我们

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

相关文章