JAVA代码审计-efo
字数 1099 2025-08-24 07:48:10
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对象 - 加强密码重置流程的身份验证
- 实施最小权限原则,限制数据库账户权限