JAVA代码审计之某OA
字数 1444 2025-08-22 12:23:30
JAVA代码审计之某OA系统漏洞分析报告
1. 低版本SQL注入漏洞
漏洞位置
src/main/java/com/cloudweb/oa/controller/ApplicationController.java
漏洞分析
- 代码中存在版本检查逻辑,但低版本未进行充分的安全防护
- 关键点在于
if(isValid)条件判断 - 系统从配置中获取版本号后进行版本判断
- 低版本未对SQL查询进行充分过滤和参数化处理
漏洞验证
- 通过构造特定参数可绕过输入验证
- 利用时间延迟等技术确认注入点存在
2. 登录框弱加密漏洞
漏洞位置
core/src/main/java/com/cloudweb/oa/security/LoginAuthenticationProvider.java
漏洞分析
- 登录认证过程中使用了弱加密算法
- 代码未对加密数据进行适当处理
- 加密过程缺乏盐值(salt)等安全增强措施
漏洞复现
- 通过拦截登录请求可获取加密后的凭据
- 使用弱加密特性可快速破解原始密码
3. SQL注入漏洞(第一处)
漏洞位置
全局搜索${关键字发现的多处位置之一
漏洞分析
- 在
AddressService.java类中引入了mapper - 存在可读注入点和公开声明的函数
- 跟踪到
AddressController.java中的list()函数 - 该函数中直接拼接SQL语句,未使用参数化查询
关键代码路径
AddressService.java导入mapperAddressController.java中的list()函数- SQL语句构建过程中直接拼接用户输入
漏洞复现
- 通过构造特定参数可执行任意SQL语句
- 可获取数据库敏感信息或执行管理员操作
4. SQL注入漏洞(第二处)
漏洞位置
继续查找${关键字发现的其他XML文件
漏洞分析
- 在XML配置文件中发现动态SQL拼接
- 找到引用mapper的对应类
- 在
list函数中找到构建SQL参数的函数 - 发现可控变量未经过滤直接拼接到SQL中
关键代码路径
- XML配置文件中的动态SQL
- 对应的mapper接口实现
- 调用
list函数的位置
漏洞复现
- 通过特定参数注入SQL代码
- 验证数据库信息泄露或权限提升
5. Fastjson未授权命令执行漏洞
漏洞位置
src/main/java/com/cloudweb/oa/controller/ApplicationController.java
漏洞分析
- 使用了存在漏洞的Fastjson版本
- 未对反序列化过程进行安全限制
- 攻击者可构造恶意JSON实现远程代码执行
漏洞复现
- 构造特定JSON payload
- 通过接口发送实现命令执行
6. 任意文件下载漏洞
漏洞分析
- 下载接口未对文件路径进行充分过滤
- 存在目录遍历风险
- 可通过路径穿越获取系统敏感文件
漏洞复现
- 构造包含
../等特殊字符的文件路径 - 绕过限制下载配置文件、源代码等敏感文件
总结与修复建议
漏洞总结
- 多处SQL注入漏洞 - 需全面改为参数化查询
- 认证加密强度不足 - 应升级加密算法
- Fastjson反序列化风险 - 升级版本或禁用危险特性
- 文件下载未过滤 - 应实施白名单机制
修复建议
- 对所有用户输入实施严格验证和过滤
- 使用预编译语句替代字符串拼接SQL
- 升级Fastjson到最新安全版本
- 实现文件下载路径的白名单校验
- 加强认证加密,使用加盐哈希存储密码
- 实施最小权限原则,限制数据库账户权限