Java代码审计之jspxcms审计(一)

简介: Java代码审计之jspxcms审计

环境搭建

源码:https://www.ujcms.com/uploads/jspxcms-9.0.0-release-src.zip

下载之后解压

13d0d2f40cd9e8105a863ff70a69a88f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后用idea导入

先创建数据库导入数据库文件

d63cb69e17949718b76bbf30352934a9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后导入源码

a5d27da793c4ee8821138d102afe0839_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后配置好数据库连接

b993f4dc1e3fdcece46305d829ab1b6f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

加载maven依赖

根据本地数据库版本情况 记得调整数据库依赖版本

3c390d1e7fff70475536eaee80e8bd24_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后启动

b34c10a0444fe52697efe864a755e99d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

后台地址:http://127.0.0.1:8080/cmscp/index.do

因为刚开始代码也那么多就没有直接看代码  先熟悉熟悉有什么功能点

XSS

随便进入了一篇文章 然后评论

ce92f31d71a95941a5a6f9689c4a64af_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里发现是没有xss的

但是后面来到“我的空间”

959c18ae58bf3e2b1726c3c0c8db8dff_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

点击评论的时候

81d6f9ca555df813735c100a8301c5f0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


这里触发了xss

这里相当于是黑盒摸到的 单既然是审计  就要从代码来看   重新回到评论的地方  评论进行抓包 看看请求的路径是什么 先找到入口

3d06e52c78eae1cf925d46f6c066986f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后回到idea搜索comment_submit

cc40eefc98999ce5bfd9b2098ed0b78d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后在这里打上断点

9656951b77ed7ff67abc04b3fab38641_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

6a95e1e7e1232ab6823cd96a4cb7b258_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后一步一步放

跟进submit

be3eda582f877c1746edfc7a537fb372_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

主要是看传进来的text的走向

到这里text的值都没有变化

b0e07c242e88633665648186a983e56a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后来到最下面这里是save操作

527feeb07a912913a6d133f70b7b5d49_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

dd4b640eca1a7f9d971424c9b3fbc7fa_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里也是直接进行存储 说明存入的时候是没有进行过滤的 那最开始没弹 肯定就是输入的问题了  因为摸到弹的情况

直接根据弹的情况来分析为什么回弹  先找到弹的页面的代码  因为路径有一个space 所以搜索space

a7c182d3f74d329de5448789b5400836_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

打上断点 进行调试

616f869d05c1bb7846a0c04b9d0857bb_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5b6b46f4fc536d4d43ef04af38eb1e0f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

a8b0339b84b8c573ef2a76e0d60107cc_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

ef49eedbf682b8fa88eba5ef7551791b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里最后返回了一个模板

发现这个是一个html 搜索这个html

72e9fa8237f19a9efe57e94ba0e4f4a3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过pom.xml

0bffb1cfc82d2577a90b79b4a439f794_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

是freemarker模板

先搜搜这玩意是咋转义的

a1b253254ab86b2f364d0184a2db2994_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

看到一个熟悉的

d8a6f6d9c325fae2ebadbbac2a975025_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这个页面这里有填写这个 但是最终还是弹了  说明有漏网之鱼的页面

通过查找 发现一个没有写这个的页面

f8e27acd1406d552520ea7e77918428e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

搜索 看看哪里用到了这俩

663eca29d6f3e209857abb6d2782e309_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

刚还这里的type=comment对应上之前访问时候的type

3da3294e267448c225029662f294f68f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

所以访问这个页面的时候能触发xss  payload没有进行任何过滤 这个页面也没有进行转义


相关文章
|
16天前
|
SQL 安全 前端开发
对于Java代码审计,主要的审计步骤如下:
### Java代码审计简介 Java代码审计是确保应用程序安全的重要步骤,主要包括以下几个关键环节: 1. **确定项目结构与技术框架**:了解项目的整体架构和技术栈。 2. **环境搭建**:配置开发环境,确保能够正常运行项目。 3. **配置文件分析**:重点分析`pom.xml`、`web.xml`等配置文件,特别是依赖组件的版本是否存在已知漏洞。
|
4月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
157 2
|
4月前
|
SQL 安全 Java
代码审计-JAVA----javaweb代码审计思路
代码审计-JAVA----javaweb代码审计思路
|
5月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
133 1
|
6月前
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
131 4
|
7月前
|
SQL 安全 JavaScript
Java中的代码审计与漏洞检测
Java中的代码审计与漏洞检测
|
7月前
|
SQL 安全 Java
Java中的代码审计与漏洞检测实践指南
Java中的代码审计与漏洞检测实践指南
|
1月前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
90 17
|
2月前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
28天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题