记一次springboot项目漏洞挖掘
前言
前段时间的比赛将该cms作为了题目考察,这个cms的洞也被大佬们吃的差不多了,自己也就借此机会来浅浅测试下这个cms残余漏洞,并记录下这一整个流程,谨以此记给小白师傅们分享下思路,有错误的地方还望大佬们请以指正。
安装
参考官方文档,给出了很详细的安装说明,如安装遇到问题,可到官方论坛寻找解决方法,常见安装失败问题都有。
https://gitee.com/iteachyou/dreamer_cms#https://gitee.com/link?target=https%3A%2F%2Fwww.iteachyou.cc%2Farticle%2F55ec2939c29147eca5bebabf19621655

该cms项目是基于springboot框架开发的,安装的时候需要的环境为 springboot+redis+mysql+ 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+网安经典常用工具包
③ 100+SRC分析报告
④ 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安装、部署以及代码审计中要注意的点得到了良好的锻炼。
相关文章:
记一次springboot项目漏洞挖掘
前言 前段时间的比赛将该cms作为了题目考察,这个cms的洞也被大佬们吃的差不多了,自己也就借此机会来浅浅测试下这个cms残余漏洞,并记录下这一整个流程,谨以此记给小白师傅们分享下思路,有错误的地方还望大佬们请以指正…...
R语言 | 数据框
目录 一、认识数据框 7.1 建立第一个数据框 7.2 验证与设定数据框的列名和行名 二、认识数据框的结构 三、获取数据框内容 3.1 一般获取 3.2 特殊字符$ 3.3 再看取得的数据 四、使用rbind()函数增加数据框的行数据 五、使用cbind()函数增加数据框的列数据 5.1 使用$符号…...
基于SpringBoot的招生管理系统的设计与实现
背景 本次设计任务是要设计一个招生管理系统,通过这个系统能够满足管理员和学生的招生公告管理功能。系统的主要功能包括首页、个人中心、学生管理、专业信息管理、专业报名管理、录取通知管理、系统管理等功能。 管理员可以根据系统给定的账号进行登录࿰…...
Oracle Profile详解
Profile的作用主要表现在三个方面 1、密码策略 2、对用户所能使用的资源进行管理 3、profile存放在数据字典里面,默认有一个名字为default的profile set linesize 160 set pagesize 30 select resource_name,resource_type,limit from dba_profiles where profile‘…...
r语言tidyverse教程:5 字符串处理stringr
文章目录 R语言系列: 编程基础💎循环语句💎向量、矩阵和数组💎列表、数据帧排序函数💎apply系列函数tidyverse:readr💎tibble💎tidyr💎dplyr💎stringr stri…...
知识变现海哥:知识变现的本质就是卖
知识变现的本质就是卖,而有人买的本质,就是你解决了某方面的需求。 好的成交,从来都是相互的, 只靠一边主动推销来维系是远远不够的。 绝对不是靠忽悠,而是靠实力。 先讲一个故事。 19世纪时,一个年轻的…...
jdbc和druid和mybatis之间的关系
第一种方式 jdbc整合了:加载数据库驱动,创建连接,写原生语句,执行,关闭这些东西. 第二种方式 mybatis对jdbc进行封装,他允许你通过配置的形式,配置数据库参数,并且允许你通过xml来写动态sql语句.if:test让你可以把sql变得灵活起来.并且还能将你的查询结果直接映射到你想要的…...
云原生Istio案例实战
目录 1 Istio监控功能1.1 prometheus和grafana1.2 访问prometheus1.3 访问grafana 2 项目案例:bookinfo2.1 理解什么是bookinfo2.2 sidecar自动注入到微服务2.3 启动bookinfo2.4 通过ingress方式访问2.5 通过istio的ingressgateway访问2.5.1 确定 Ingress 的 IP 和端…...
解读赛力斯年报:华为智选车的B面
作者 | Amy 编辑 | 德新 赛力斯,华为智选车的B面。 2021年,赛力斯SF5进入华为渠道销售,华为自此开启了智选车模式。到年末,双方更是推出AITO品牌。AITO凭借M5/M7等车型在2022年拿下了超过7.5万台的销量,成为增长最快的…...
互联网内卷严重?你咋不看看其他行业呢?无非是三十晚上无月亮,大家都一样
一千个人眼中有一千个哈姆雷特,互联网行业就像一座围城,城外的人想进来,城内的人要么卷要么躺要么润 真实的感受你可以现在约几个面试体验一下。内卷到什么程度? 产品和运营岗,业务经验不完全对口简历都过不了&am…...
CompletableFuture异步任务编排使用
CompletableFuture异步任务编排使用 runAsync 和 supplyAsyncallOf 和 anyOfjoin 和 getwhenComplete 和 whenCompleteAsync 和 exceptionallyhandle 和 handleAsync 串行编排runAsync().thenRunAsync()supplyAsync().thenAcceptAsync((res) ->{})supplyAsync().thenApplyAs…...
Scala的高级用法
文章目录 1. 默认参数值1.1 方法默认参数1.2 类默认参数 2. 特质 (Traits)2.1 子类型2.2 扩展特征,当做接口来使用 3.元组3.1 定义与取值3.2 元组用于模式匹配3.3 用于for循环 4 高阶函数4.1 常见的高阶函数map4.2 简化涨薪策略代码 5.嵌套方法6.多参数列表…...
【31.在排序数组中查找元素的第一个和最后一个位置】
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1:…...
如何构建“Buy Me a Coffee”DeFi dApp
🥸 本教程来自官网:https://docs.alchemy.com/docs。对原文部分内容进行了修改。教程中所有实例经过本人实践,代码可见:https://github.com/ChuXiaoYi/web3Study 区块链技术令人惊叹,因为它使我们能够使用代码和软件编…...
Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计
目录 二值状态统计判断用户登陆态SETBIT 命令GETBIT 命令第一步,执行以下指令,表示用户已登录。第二步,检查该用户是否登陆,返回值 1 表示已登录。第三步,登出,将 offset 对应的 value 设置成 0。 用户每个…...
3 天,入门 TAURI 并开发一个跨平台 ChatGPT 客户端
TAURI 是什么 TAURI 是一个使用 Rust 编写的程序框架,它允许我们使用 Web 技术和 Rust 语言构建跨端应用。它提供了大量特性,例如系统通知、网络请求、全局快捷键、本地文件处理等,它们都可以在前端通过 JavaScript 便捷的调用。 TAURI 应用…...
14个最佳创业企业WordPress主题
要创建免费网站?从易服客建站平台免费开始 500M免费空间,可升级为20GB电子商务网站 创建免费网站 您网站的设计使您能够展示产品的独特卖点。通过正确的主题,您将能够解释为什么客户应该选择您的品牌而不是其他品牌。 在本文中࿰…...
MySQL基础(三十)PowerDesigner的使用
1 PowerDesigner的使用 PowerDesigner是一款开发人员常用的数据库建模工具,用户利用该软件可以方便地制作 数据流程图 、概念数据模型 、 物理数据模型,它几乎包括了数据库模型设计的全过程,是Sybase公司为企业建模和设计提供的一套完整的集…...
nginx 服务器总结
一. 负载均衡的作用有哪些? 1、转发功能 按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高 系统并发量。 2、故障移除 通过心跳检测的方式,判断应用服务器当前是否可以正常…...
基于Hebb学习的深度学习方法总结
基于Hebb学习的深度学习方法总结 0 引言1 前置知识1.1 Hebb学习规则1.2 Delta学习规则 2 SoftHebb学习算法2.1 WTA(Winner Take All)2.2 SoftHebb2.3 多层Hebb网络2.4 Hebb学习的性能测评 3 参考文献 0 引言 总所周知,反向传播算法(back-propagating, B…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
