JAVA代码审计-efo
字数 1099 2025-08-24 07:48:10

Java代码审计实战:EFO系统漏洞分析与复现

环境搭建

  1. 修改源码中的配置文件,更新为本地的用户名和密码
  2. 启动环境后,系统将显示登录界面

漏洞分析

1. SQL注入漏洞1(我的资源功能)

漏洞定位:

  • 全局搜索关键字,定位到DAO文件
  • 发现存在search用法,跟进分析
  • 主要查询代码映射到FileSqlProvider类的getUserUploaded方法
  • 调用链:getUserUploadedgetSqlEndsgetSearch

漏洞复现:

  1. 进入"我的资源"功能
  2. 点击"获取更多"
  3. 输入单引号',出现报错注入
  4. 使用sqlmap验证漏洞存在

2. SQL注入漏洞2(系统设置功能)

漏洞定位:

  • 全局搜索关键字,定位到更新用户权限功能
  • 跟进updatePermission函数
  • 进入UserDAO层发现未对用户输入进行过滤

漏洞复现:

  1. 进入"系统设置"功能
  2. 点击"获取更多"
  3. 发现存在时间盲注和报错注入

3. SQL注入漏洞3(权限管理功能)

漏洞定位:

  • 全局搜索关键字,进入AuthDAO
  • 发现未对用户输入进行处理

漏洞复现:

  1. 进入"权限管理"功能
  2. 点击"新增"并使用Burp抓包
  3. 尝试报错注入,验证漏洞存在
  4. 可使用sqlmap进一步验证

4. SQL注入漏洞4(文件列表功能)

漏洞定位:

  • 访问/file/all接口
  • order by参数未做过滤,直接字符串拼接

漏洞复现:

  1. 访问URL地址并传入order by参数
  2. 发现报错注入
  3. 使用sqlmap验证漏洞

5. 敏感信息泄露

漏洞分析:

  • 多个类共用jsonObject对象
  • 导致认证后的token会在访问未认证接口时泄露

漏洞复现:

  1. 通过未认证接口获取随机生成的cookie

6. 未认证任意密码重置

漏洞分析:

  • 重置密码验证码接口:/common/{email}/code
  • 需要先修改配置中的邮箱数据(SMTP服务器为smtp.qq.com
  • 系统将验证码发送到邮箱并设置到session中

漏洞复现:

  1. 进入重置密码功能
  2. 获取cookie
  3. 利用返回的jsessionid配合SQL注入漏洞修改密码

总结

EFO系统中存在多处安全漏洞,主要包括:

  1. 4处SQL注入漏洞(分别在资源管理、系统设置、权限管理和文件列表功能)
  2. 敏感信息泄露漏洞
  3. 未认证任意密码重置漏洞

修复建议:

  1. 对所有用户输入进行严格的过滤和参数化查询
  2. 避免使用字符串拼接SQL语句
  3. 分离不同功能的jsonObject对象
  4. 加强密码重置流程的身份验证
  5. 实施最小权限原则,限制数据库账户权限
Java代码审计实战:EFO系统漏洞分析与复现 环境搭建 修改源码中的配置文件,更新为本地的用户名和密码 启动环境后,系统将显示登录界面 漏洞分析 1. SQL注入漏洞1(我的资源功能) 漏洞定位: 全局搜索关键字,定位到DAO文件 发现存在search用法,跟进分析 主要查询代码映射到 FileSqlProvider 类的 getUserUploaded 方法 调用链: getUserUploaded → getSqlEnds → getSearch 漏洞复现: 进入"我的资源"功能 点击"获取更多" 输入单引号 ' ,出现报错注入 使用 sqlmap 验证漏洞存在 2. SQL注入漏洞2(系统设置功能) 漏洞定位: 全局搜索关键字,定位到更新用户权限功能 跟进 updatePermission 函数 进入 UserDAO 层发现未对用户输入进行过滤 漏洞复现: 进入"系统设置"功能 点击"获取更多" 发现存在时间盲注和报错注入 3. SQL注入漏洞3(权限管理功能) 漏洞定位: 全局搜索关键字,进入 AuthDAO 层 发现未对用户输入进行处理 漏洞复现: 进入"权限管理"功能 点击"新增"并使用Burp抓包 尝试报错注入,验证漏洞存在 可使用 sqlmap 进一步验证 4. SQL注入漏洞4(文件列表功能) 漏洞定位: 访问 /file/all 接口 order by 参数未做过滤,直接字符串拼接 漏洞复现: 访问URL地址并传入 order by 参数 发现报错注入 使用 sqlmap 验证漏洞 5. 敏感信息泄露 漏洞分析: 多个类共用 jsonObject 对象 导致认证后的token会在访问未认证接口时泄露 漏洞复现: 通过未认证接口获取随机生成的cookie 6. 未认证任意密码重置 漏洞分析: 重置密码验证码接口: /common/{email}/code 需要先修改配置中的邮箱数据(SMTP服务器为 smtp.qq.com ) 系统将验证码发送到邮箱并设置到session中 漏洞复现: 进入重置密码功能 获取cookie 利用返回的 jsessionid 配合SQL注入漏洞修改密码 总结 EFO系统中存在多处安全漏洞,主要包括: 4处SQL注入漏洞(分别在资源管理、系统设置、权限管理和文件列表功能) 敏感信息泄露漏洞 未认证任意密码重置漏洞 修复建议: 对所有用户输入进行严格的过滤和参数化查询 避免使用字符串拼接SQL语句 分离不同功能的 jsonObject 对象 加强密码重置流程的身份验证 实施最小权限原则,限制数据库账户权限