java审计之ofcms(三)

简介: java审计之ofcms

任意文件上传

看到一个上传

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

还是根据数据包 找到代码

5578dd04d200bae1acda8f2a57d97a7a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里代码很少 一步一步跟进

86728037291159ca019de874aea86548_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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


这里看不出什么 继续跟进

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

这里通过new MultipartRequest进行上传文件

跟进

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

继续

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

这个函数没发现什么

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

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


发现这个函数

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

会判断jsp和jspx后缀

这里可以就可以通过windows的特性 来进行绕过 上传文件名为.jsp.

测试

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

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


第二处

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

这个函数也是和上面一样的 可以进行任意文件上传

148c48c53834790bd79af2567c320104_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

45c2c166ca37b4f1bbf58b7fcf1369d0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这些都可以

越权修改密码

先创建一个普通用户

然后登录 修改密码

9f4aa56083fe2d959c28b37fa8b80b31_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

65f1b6a605e3ec767e6944db5a700077_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


这里可以看到有一个user_id 修改这个 这里相当于 平常黑盒测试一样 改为1

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

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

可以看到admin的密码也变成asd123了

代码分析 根据数据包找到controller

57ef01979b54a1b75dad895ac7fb7e25_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

177942c0b461b62d857566b22fc10e08_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

71645e19a37d880dfd6727cdee63d17d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

根据日志也可以看到  是根据id来进行修改密码的 没有进行id和用户的绑定

有了修改密码的前提  我们会想到修改资料这些

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

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


模板注入

在pom.xml发现cms使用freemarker

在后台存在模板的修改

payload:<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}

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

8041949f44509dd7854e1417bea4ef4c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


参考:https://blog.csdn.net/Little_jcak/article/details/126420014

https://blog.csdn.net/weixin_44522540/article/details/122844068

相关文章
|
安全 Java API
Java审计之Freemarker模板注入漏洞
Java审计之Freemarker模板注入漏洞
10755 1
|
存储 XML SQL
Java审计之XSS篇
继续 学习一波Java审计的XSS漏洞的产生过程和代码。
172 0
Java审计之XSS篇
|
SQL 安全 前端开发
Java审计之SQL注入篇
本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长。
311 0
|
存储 Java 应用服务中间件
Java代码审计之jspxcms审计(三)
Java代码审计之jspxcms审计
475 0
Java代码审计之jspxcms审计(三)
|
Java
Java代码审计之jspxcms审计(二)
Java代码审计之jspxcms审计
254 0
Java代码审计之jspxcms审计(二)
|
存储 Java 数据库连接
Java代码审计之jspxcms审计(一)
Java代码审计之jspxcms审计
254 0
Java代码审计之jspxcms审计(一)
|
XML 前端开发 JavaScript
|
SQL Java 关系型数据库
|
9天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
5天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
25 9