点击上方蓝字·关注我们
由于传播、利用本公众号菜狗安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号菜狗安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,会立即删除并致歉。谢谢!
DedeCMS 是织梦团队开发 PHP 网站管理系统,它以简单、易用、高效为特色,组建出各种各样各具特色的网站,如地方门户、行业门户、政府及企事业站点等。
我这里还是采用小皮面板搭建
安装目录指向uploads,创建成功后访问/install安装即可
漏洞一:目录遍历
目录遍历
全局搜索read()函数,找到dede/file_pic_view.php文件中的一处代码段
我们访问对应文件
这里看似有过滤代码,实际没有,直接../跳转即可
文件遍历
在目录遍历点发现一个文件浏览,点击查看
可以查看文件,发现目录由$activepath控制,值为空的话就跳转到网站根目录
但是它这里过滤了
.
无法跳到网站目录外
漏洞二:文件写入
全局搜索fwrite()函数
定位到/dede/sys_info.php中的一处代码段
看代码应该是写配置文件的地方,第17行定义了写入的文件,我们转到对应文件看下/data/config.cache.inc.php
我们访问网站对应的功能点
由于是.php文件,我们看下有没有对我们传入的值进行过滤
发现在42行会将我们传入的单引号替换为空,但是它这里可以添加数字类型的数据
那么我们直接添加代码即可
执行其他代码的话,使用分号逃出赋值即可
漏洞三:文件写入+文件上传RCE
文件写入RCE
这个是在后台翻到的功能点
尝试编辑写入一句话
我们抓包查看触发文件
查看对应文件代码段
文件名可以为.php所以我们重点看$str,很奇怪的是这里没有看到过滤函数,我们往上面翻一下,发现在24行存在检测
但是他检测的函数不全,我这里使用call_user_func()执行命令
这里要注意,call_user_func()的第一个参数得是函数,而eval是语言结构不属于函数,assert从php7.2开始被废除以函数调用,和eval一样同为语言结构
任意文件上传RCE
和上个漏洞同一处
也是不检测文件名,检测内容和上处一样修改绕过即可,可抓包控制上传地址。
漏洞四:执行sql语句导致getshell
在网站后台有执行sql语句的功能点
我们可以执行sql语句开启mysql的日志文件
get global general_log=no;
set global general_log_file="D://phpstudy_pro//WWW//DedeCMS-V5.7.87-UTF8//uploads/caigo.php"
再找个sql语句触发点
语句成功写入并执行
原文始发于微信公众号(菜狗安全):代码审计-DedeCMS
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论