建站还有前途么,百度网盘下载app,ps在线网页版,升级wordpress5.0前言
前段时间的比赛将该cms作为了题目考察#xff0c;这个cms的洞也被大佬们吃的差不多了#xff0c;自己也就借此机会来浅浅测试下这个cms残余漏洞#xff0c;并记录下这一整个流程#xff0c;谨以此记给小白师傅们分享下思路#xff0c;有错误的地方还望大佬们请以指正…前言
前段时间的比赛将该cms作为了题目考察这个cms的洞也被大佬们吃的差不多了自己也就借此机会来浅浅测试下这个cms残余漏洞并记录下这一整个流程谨以此记给小白师傅们分享下思路有错误的地方还望大佬们请以指正。
安装
参考官方文档给出了很详细的安装说明如安装遇到问题可到官方论坛寻找解决方法常见安装失败问题都有。
https://gitee.com/iteachyou/dreamer_cms#https://gitee.com/link?targethttps%3A%2F%2Fwww.iteachyou.cc%2Farticle%2F55ec2939c29147eca5bebabf19621655 该cms项目是基于springboot框架开发的安装的时候需要的环境为 springbootredismysql IDEA
配置文件主要是这两个application-prd.yml和application-dev.yml需要配置好mysql数据库连接、redis连接以及网页静态资源路径其余的安装上面的一步步安装即可。 安装成功后访问登陆页面 管理员账号密码已经给了直接登录。 漏洞测试
风格管理模板存在任意编辑文件实现命令执行
经测试发现后台风格管理模板上传主题压缩包时可以进行污染压缩包theme.json文件达到目录穿越到服务器敏感目录从而在模板管理在解析时没有进行检测可以任意编辑系统敏感文件导致GetShell控制服务器权限。
漏洞产生的主要文件主题上传Controller文件src/main/java/cc/iteachyou/cms/controller/admin/ThemesController.java 找到add方法。 首先是判断文件是否存在以及JSON解析是否正确判断Key是否都存在判断对应值是否为空创建theme对象判断设置路径是否已default开头。最后校验主题包各种配置是否正确。确认的话就成功上传。
帮助网安学习全套资料S信免费领取 ① 网安学习成长路径思维导图 ② 60网安经典常用工具包 ③ 100SRC分析报告 ④ 150网安攻防实战技术电子书 ⑤ 最权威CISSP 认证考试指南题库 ⑥ 超1800页CTF实战技巧手册 ⑦ 最新网安大厂面试题合集含答案 ⑧ APP客户端安全检测指南安卓IOS
但是没有对themePath路径问题进行检测便可构造目录穿越这也是该漏洞造成的关键原因。
最后是判断上传的压缩包里的各类信息无误后进入处理保存文件逻辑的save方法。 在上传的主题包里的\dreamer\dreamer-cms\templates\default_v3\theme.json文件将目录穿越的构造替换主题包路径更改之后theme.json文件内容如下
{themeName:新版主题,themeImage:http://localhost:8888/resource/img/dreamercms-logo.png,themeAuthor:,themePath:../../../../../../../../../../../../../..///此路径要和模板文件夹的名称一致
}虽然有检测但是在之前themeDir已经被污染了所以相当于检测相当于没有。 接着检查是否有权限startwith方法也没有问题。 最后就是保存文件。到此时后台模板已被刚刚传入的构造污染可以进行利用效果如下
将修改后的主题包上传 风格页面会多出一个新的主题 点击启用。然后查看模板管理页面发现目录穿越成功成功进入服务器的根目录这时就相当于在自己服务器上编辑修改文件。 测试文件为/home/www 目录下的1.txt文件原本是空文件。 在页面修改该文件添加内容 然后保存再到服务器里查看成功将内容加入。 如果修改authorized_key文件便可进行免密登录利用压缩校验不正确从而上传任意危险文件例如一句话木马等来获取系统权限还可以获取系统passwd文件获取敏感信息也可以写计划任务进行命令执行。
该漏洞分析到此为止接着是附件管理模板可以进行任意文件下载、删除。
附件管理模板可以进行任意文件下载、删除。
漏洞产生主要文件
src/main/java/cc/iteachyou/cms/controller/admin/AttachmentController.java 添加附件功能的代码如下 首先肯定是先添加附件这里没有对attachment参数进行过滤。导致保存附件的时候目录穿越的构造就被保留了下来对其进行解析后就可以将服务器的指定文件随意下载、删除从而对服务器构成威胁。
下载、删除功能的代码都在同一个文件都是通过刚刚的attachment参数然后使用attachment.getFilepath()获取服务器文件路径对其进行解析。
先看下载功能的代码 这里也没有对 filePath变量进行过滤所以总的来说就是添加附件和下载附件的两处代码都没有对相应的变量进行检测过滤从而导致漏洞产生。
删除功能的代码 删除的话就没什么好说的和上面一样的原理试想下如果可以任意删除服务器的配置文件那不就相当于服务器要崩的节奏。
漏洞演示如下
还是利用刚刚/home/www目录下的1.txt文件 在添加附件模块先随便上传一个本地文件这里随便上传了一个theme.txt文件 burpsuite抓包如下 需要改的就是这个filepath参数对应的文件路径将其修改为
../../../../../../../../../../../../../home/www/1.txt然后放包。 刷新页面观察到多了一个theme.txt文件下载下来并打开内容如下 服务器里的/home/www/1.txt里的内容193840sswwloP 已成功写入本地theme.txt文件任意下载文件成功。
删除效果点击右边的删除。 发现该1.txt文件被删除了任意删除文件成功。 模板管理存在任意文件包含
产生漏洞的主要文件 src/main/java/cc/iteachyou/cms/taglib/tags/IncludeTag.java If语句只是简单判断值是否为空但是没有检测过滤字符导致可以传入目录穿越的构造../../../../../../../../../../../../../home/www/1.txt进行文件包含读取里面内容。接着在模板管理找到index_about.html
将../../../../../../../../../../../../../home/www/1.txt写入div标签并保存如下图 接着访问主页里的关于我们 可以看到成功进行了文件包含如将构造/home/www/1.txt换成/etc/passwd这类敏感文件则被攻击者获取到关键信息这里也测试下 修改构造 页面如期输出/etc/passwd文件里的信息。 总结
本文测试是在该cms旧版本上进行的新版本对已有问题已进行了修复这次对该java实现的cms漏洞挖掘收获满满对cms安装、部署以及代码审计中要注意的点得到了良好的锻炼。