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模板注入漏洞
10730 1
|
存储 XML SQL
Java审计之XSS篇
继续 学习一波Java审计的XSS漏洞的产生过程和代码。
171 0
Java审计之XSS篇
|
SQL 安全 前端开发
Java审计之SQL注入篇
本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长。
309 0
|
存储 Java 应用服务中间件
Java代码审计之jspxcms审计(三)
Java代码审计之jspxcms审计
470 0
Java代码审计之jspxcms审计(三)
|
Java
Java代码审计之jspxcms审计(二)
Java代码审计之jspxcms审计
254 0
Java代码审计之jspxcms审计(二)
|
存储 Java 数据库连接
Java代码审计之jspxcms审计(一)
Java代码审计之jspxcms审计
253 0
Java代码审计之jspxcms审计(一)
|
XML 前端开发 JavaScript
|
SQL Java 关系型数据库
|
9天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
4天前
|
存储 设计模式 分布式计算
Java中的多线程编程:并发与并行的深度解析####
在当今软件开发领域,多线程编程已成为提升应用性能、响应速度及资源利用率的关键手段之一。本文将深入探讨Java平台上的多线程机制,从基础概念到高级应用,全面解析并发与并行编程的核心理念、实现方式及其在实际项目中的应用策略。不同于常规摘要的简洁概述,本文旨在通过详尽的技术剖析,为读者构建一个系统化的多线程知识框架,辅以生动实例,让抽象概念具体化,复杂问题简单化。 ####