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

漏洞复现,复现环境:phpstudy 2018,php 5.6.27,apache

 

0x00 安装cms

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第1张

0x01

漏洞出现在后台,首选登录后台

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第2张

0x02 漏洞出现在dede目录下的tpl.php

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第3张

a.此处定义了一个savetagfile的函数,首先做一个判断,参数”action”是否等于savetagfile,如更等于就进行下一步

b.这里有一个csrf检验函数,需要加上token来绕过限制

c.正则表达式匹配,这里的意思是判断filename参数是否匹配正则表达式的条件,不匹配就不允许修改操作的进行。

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

 

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

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第4张

0x03 

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第5张

右键查看源码发现Token

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第6张

通过浏览tpl.php代码,发现要上传的参数有:action,token,filename,content,构造payload

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

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

Payload:http://127.0.0.1/dede/tpl.php?action=savetagfile&token=d69c0011060cc62624eb632f18f0b1e0&filename=test.lib.php&content=<?php phpinfo();?>

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

然后访问taglib下的test.lib.php 即可查看phpinfo

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第8张

写入一句话木马后使用菜刀连接

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第9张

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221) 第10张