JAVA审计初探
字数 1112 2025-08-24 23:51:23
Java审计初探 - OFCMS漏洞分析
环境搭建
- 项目地址:https://github.com/yuzhaoyang001/ofcms
- 使用IDEA导入war包
- 配置Tomcat服务器
- 创建数据库并运行SQL文件
- 配置数据库连接文件
- 根据MySQL版本调整pom.xml配置
- 后台地址:http://localhost:8081/ofcms_admin_war/admin/login.html
- 默认账号密码:admin/123456
漏洞分析
1. SQL注入漏洞
漏洞位置:Controller层接收SQL参数并直接执行update操作
漏洞分析:
- 系统接收SQL参数后直接执行update操作
- 虽然使用了预编译,但预编译的是整个SQL语句而非参数
- 存在回显功能
测试方法:
update of_cms_ad set ad_id=updatexml(1,concat(1,user()),1)
利用限制:
- 只能执行增删改SQL语句(executeUpdate)
2. 任意文件读取漏洞
漏洞位置:Controller中文件读取功能
漏洞分析:
dir参数可控,未做限制- 只能读取html、js、css、xml文件
- 默认读取
default目录下的文件 - 通过比较文件名和
files列表中的绝对路径来读取文件
测试方法:
http://example.com/ofcms_admin_war/admin/template/getTemplteContent.html?dir=../../WEB-INF&fileName=web.xml
3. 任意文件写入漏洞
漏洞位置:与文件读取相同的Controller
漏洞分析:
- 只对
content参数进行了尖括号替换 - 无其他过滤措施
- 可写入任意内容
4. 任意文件上传漏洞
第一处漏洞:
- 通过
MultipartRequest进行文件上传 - 检查
jsp和jspx后缀 - 可利用Windows特性绕过:上传
.jsp.文件
第二处漏洞:
- 与第一处类似,同样存在任意文件上传风险
5. 越权修改密码漏洞
漏洞分析:
- 修改密码功能未绑定用户ID
- 通过修改请求中的
user_id参数可修改任意用户密码
测试步骤:
- 创建普通用户
- 登录普通用户修改密码
- 修改请求中的
user_id为1(admin用户) - 成功修改admin密码
6. 模板注入漏洞
漏洞分析:
- 系统使用Freemarker模板引擎
- 后台存在模板修改功能
- 可注入恶意模板代码
Payload:
<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}
审计技巧总结
- 功能点审计:先过一遍系统功能点,重点关注数据交互处
- 抓包定位:通过抓包寻找对应的Controller层代码
- 调试分析:使用断点调试跟踪参数传递和处理过程
- 框架特性:注意框架特性(如Freemarker)可能带来的安全问题
- 参数追踪:追踪用户可控参数的完整处理流程
- 黑盒结合:结合黑盒测试发现可疑点后再进行代码审计