JAVA代码审计之某OA
字数 1444 2025-08-22 12:23:30

JAVA代码审计之某OA系统漏洞分析报告

1. 低版本SQL注入漏洞

漏洞位置

src/main/java/com/cloudweb/oa/controller/ApplicationController.java

漏洞分析

  1. 代码中存在版本检查逻辑,但低版本未进行充分的安全防护
  2. 关键点在于if(isValid)条件判断
  3. 系统从配置中获取版本号后进行版本判断
  4. 低版本未对SQL查询进行充分过滤和参数化处理

漏洞验证

  1. 通过构造特定参数可绕过输入验证
  2. 利用时间延迟等技术确认注入点存在

2. 登录框弱加密漏洞

漏洞位置

core/src/main/java/com/cloudweb/oa/security/LoginAuthenticationProvider.java

漏洞分析

  1. 登录认证过程中使用了弱加密算法
  2. 代码未对加密数据进行适当处理
  3. 加密过程缺乏盐值(salt)等安全增强措施

漏洞复现

  1. 通过拦截登录请求可获取加密后的凭据
  2. 使用弱加密特性可快速破解原始密码

3. SQL注入漏洞(第一处)

漏洞位置

全局搜索${关键字发现的多处位置之一

漏洞分析

  1. AddressService.java类中引入了mapper
  2. 存在可读注入点和公开声明的函数
  3. 跟踪到AddressController.java中的list()函数
  4. 该函数中直接拼接SQL语句,未使用参数化查询

关键代码路径

  1. AddressService.java导入mapper
  2. AddressController.java中的list()函数
  3. SQL语句构建过程中直接拼接用户输入

漏洞复现

  1. 通过构造特定参数可执行任意SQL语句
  2. 可获取数据库敏感信息或执行管理员操作

4. SQL注入漏洞(第二处)

漏洞位置

继续查找${关键字发现的其他XML文件

漏洞分析

  1. 在XML配置文件中发现动态SQL拼接
  2. 找到引用mapper的对应类
  3. list函数中找到构建SQL参数的函数
  4. 发现可控变量未经过滤直接拼接到SQL中

关键代码路径

  1. XML配置文件中的动态SQL
  2. 对应的mapper接口实现
  3. 调用list函数的位置

漏洞复现

  1. 通过特定参数注入SQL代码
  2. 验证数据库信息泄露或权限提升

5. Fastjson未授权命令执行漏洞

漏洞位置

src/main/java/com/cloudweb/oa/controller/ApplicationController.java

漏洞分析

  1. 使用了存在漏洞的Fastjson版本
  2. 未对反序列化过程进行安全限制
  3. 攻击者可构造恶意JSON实现远程代码执行

漏洞复现

  1. 构造特定JSON payload
  2. 通过接口发送实现命令执行

6. 任意文件下载漏洞

漏洞分析

  1. 下载接口未对文件路径进行充分过滤
  2. 存在目录遍历风险
  3. 可通过路径穿越获取系统敏感文件

漏洞复现

  1. 构造包含../等特殊字符的文件路径
  2. 绕过限制下载配置文件、源代码等敏感文件

总结与修复建议

漏洞总结

  1. 多处SQL注入漏洞 - 需全面改为参数化查询
  2. 认证加密强度不足 - 应升级加密算法
  3. Fastjson反序列化风险 - 升级版本或禁用危险特性
  4. 文件下载未过滤 - 应实施白名单机制

修复建议

  1. 对所有用户输入实施严格验证和过滤
  2. 使用预编译语句替代字符串拼接SQL
  3. 升级Fastjson到最新安全版本
  4. 实现文件下载路径的白名单校验
  5. 加强认证加密,使用加盐哈希存储密码
  6. 实施最小权限原则,限制数据库账户权限
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 导入mapper AddressController.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到最新安全版本 实现文件下载路径的白名单校验 加强认证加密,使用加盐哈希存储密码 实施最小权限原则,限制数据库账户权限