记一次和厂家相爱相杀
字数 1073 2025-08-06 08:35:27
权限绕过与接口安全漏洞实战分析
漏洞背景
本文记录了一次针对某教育系统的渗透测试过程,涉及多次权限绕过和接口安全漏洞的发现与利用。攻击者通过多种技术手段成功绕过系统防护,获取管理员权限并发现SSRF漏洞。
初始信息收集
- 初始访问:通过学生账户(来源:女朋友提供)直接登录系统
- 目标识别:使用FOFA搜索引擎收集到4个相关站点
- 测试方法:由于未扫描到备份文件,采用黑盒测试方法
第一次权限绕过
漏洞发现
- 发现一个接口泄露用户信息
- 正常用户返回的角色标识参数为
SYS004 - 通过社工获取到管理员参数为
SO1和SYS001
漏洞利用
- 修改登录参数中的角色标识为管理员参数
- 将
SYS004改为SYS001或SO1
- 将
- 成功以管理员权限登录后台
后续发现
- 在后台发现一处SSRF漏洞:
http://xxxxxxx/api/xxxxx?path=dnslog
第二次权限绕过(厂家第一次修复后)
厂家修复措施
- 增加了管理员JWT验证
- 之前的方法无法进入后台
绕过方法
- 直接抓包分析
- 发现并利用另一处暴露的账户和密码
- 成功再次绕过防护
第三次权限绕过(应校方和厂家要求测试)
厂家修复方案
- 增加登录者身份关系校验
绕过方法
- 发现直接使用之前方法会返回302跳转
- 使用空值绕过:
- 构造特殊请求参数:
userId=1&menuRole=SYS004&roleNo=SYS004&cal=381&rm= - 关键点:将
rm参数设置为空
- 构造特殊请求参数:
- 成功绕过身份校验,正常返回数据
漏洞总结
主要漏洞类型
- 不安全的直接对象引用(IDOR)
- 通过修改角色参数直接提升权限
- 身份验证绕过
- 空参数绕过身份校验
- JWT验证绕过
- 敏感信息泄露
- 接口返回过多用户信息
- 暴露管理员账户参数
- SSRF漏洞
- 通过path参数实现服务器端请求伪造
修复建议
-
权限控制
- 实施严格的角色校验机制
- 服务端验证用户权限,而非依赖客户端参数
- 实现最小权限原则
-
输入验证
- 对所有输入参数进行严格验证
- 处理空值、特殊字符等异常情况
- 实施白名单机制
-
会话管理
- 加强JWT实现的安全性
- 使用短期有效的令牌
- 实现令牌吊销机制
-
敏感信息保护
- 避免在接口中返回不必要的信息
- 对管理员账户信息进行严格保护
- 实现多因素认证
-
日志监控
- 记录所有权限变更操作
- 监控异常登录行为
- 设置敏感操作告警
渗透测试方法论
-
信息收集阶段
- 利用已有账户进行初步测试
- 使用FOFA等工具扩大攻击面
-
接口测试方法
- 参数篡改测试
- 空值/异常值测试
- 枚举已知标识符
-
权限提升策略
- 分析角色标识体系
- 尝试参数组合
- 利用信息泄露
-
绕过修复措施
- 分析302跳转行为
- 测试参数边界情况
- 保持对系统变更的敏感度
本案例展示了即使系统经过多次修复,仍可能存在新的绕过方式,强调了安全防护需要多层次、多角度的防御策略。