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模板注入漏洞
10840 1
|
存储 XML SQL
Java审计之XSS篇
继续 学习一波Java审计的XSS漏洞的产生过程和代码。
175 0
Java审计之XSS篇
|
SQL 安全 前端开发
Java审计之SQL注入篇
本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长。
314 0
|
存储 Java 应用服务中间件
Java代码审计之jspxcms审计(三)
Java代码审计之jspxcms审计
481 0
Java代码审计之jspxcms审计(三)
|
Java
Java代码审计之jspxcms审计(二)
Java代码审计之jspxcms审计
257 0
Java代码审计之jspxcms审计(二)
|
存储 Java 数据库连接
Java代码审计之jspxcms审计(一)
Java代码审计之jspxcms审计
263 0
Java代码审计之jspxcms审计(一)
|
XML 前端开发 JavaScript
|
SQL Java 关系型数据库
|
7天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
37 6
|
22天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
下一篇
DataWorks