java审计之ofcms(二)

简介: java审计之ofcms

任意文件读取

但仅限读取html js css xml文件

710c178d9b204187515ca74f7224b128_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里默认只能读取default里面的文件

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

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

因为第一次审计 不太了解框架结构 所以点击页面的时候进行抓包来寻找Controller层

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

8bd2e81d118a74bd6095e85d874ef7ef_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在idea找到这个方法

2706eb95682a88de6ec6cfd884a035e9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

dir是当前目录 也就是可查看代码的目录  这个是可控的 通过这里可以看出

继续往下跟

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

pathFile 则是根据传入的dir 获取到绝对路径

跟到这里则可以看到只能返回html xml css js

90269fc8aac2a285c944e3948198db9e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

files则是default目录下的html等文件的绝对路径

090f952057310d4a9e7798019da03574_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

755ef9229404c6bab51ea235b2ee5517_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后在通过传的文件名 和 files里面的进行比较  默认是index.html

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

通过这里读取到源码

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

最后渲染到页面上

整个操作没有对dir进行限制 然后我们又可控 就能够读取其他目录的文件

测试

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

052ed94c694fb0a3e8bcf9985b835c66_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png



任意文件写入

还是上面这个Controller

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

可以发现只获取这几个参数的值

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

然后在这一行把content的进行了尖括号的替换

没有进行其他的过滤  可以任意写入

测试

336715aa95c030eb226d63842f376972_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

17689ac2d61cb8ee5892212f8130781a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


相关文章
|
安全 Java API
Java审计之Freemarker模板注入漏洞
Java审计之Freemarker模板注入漏洞
10863 1
|
存储 XML SQL
Java审计之XSS篇
继续 学习一波Java审计的XSS漏洞的产生过程和代码。
178 0
Java审计之XSS篇
|
SQL 安全 前端开发
Java审计之SQL注入篇
本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长。
315 0
|
存储 Java 应用服务中间件
Java代码审计之jspxcms审计(三)
Java代码审计之jspxcms审计
485 0
Java代码审计之jspxcms审计(三)
|
Java
Java代码审计之jspxcms审计(二)
Java代码审计之jspxcms审计
261 0
Java代码审计之jspxcms审计(二)
|
存储 Java 数据库连接
Java代码审计之jspxcms审计(一)
Java代码审计之jspxcms审计
269 0
Java代码审计之jspxcms审计(一)
|
Java 测试技术 数据安全/隐私保护
|
SQL Java 关系型数据库
|
9天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
11天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。