记某src通过越权拿下高危漏洞
字数 1064 2025-08-23 18:31:34
越权漏洞挖掘实战教学:通过参数构造获取用户敏感信息
漏洞概述
本教学文档详细分析了一个社区网站中存在的越权漏洞,攻击者可以通过构造特定API接口参数,获取其他用户的敏感信息(包括用户名、加密密码、邮箱、电话和IP地址等)。该漏洞属于典型的水平越权漏洞,最终被评定为高危漏洞。
漏洞发现过程
1. 初始接口发现
在登录网站后,通过抓包分析发现关键API接口:
/gateway/nuims/nuims?Action=GetUser
该接口返回当前登录用户的敏感信息:
- 用户名(UserName)
- 加密后的密码(Password)
- 绑定的邮箱信息
- 绑定的电话信息
- 用户IP地址
2. 初步越权尝试
初始请求为GET方法,可见参数只有Version:
/gateway/nuims/nuims?Action=GetUser&Version=2020-06-01
尝试修改Version参数无效果,无法直接实现越权。
3. 参数构造突破
通过分析网站权限校验机制,推测可能基于userId进行校验。构造新参数:
/gateway/nuims/nuims?Action=GetUser&Version=2020-06-01&UserId=xxxxxxxxxxxxx
成功实现越权,可查看任意用户的个人信息。
4. 第二个越权接口发现
通过插件findsomething发现第二个类似接口:
/gw/nuims/api/v1/nuims/LcpGetUser
使用相同参数构造方法,同样存在越权漏洞。
关键突破点
1. UserId参数获取
初始漏洞存在一个限制:需要知道其他用户的userId才能实现越权。通过以下方式获取:
- 分析论坛界面数据包
- 发现
communityUserId参数值与userId相同 - 通过点击不同帖子,获取不同作者的
communityUserId - 将这些值作为
userId参数使用
2. 参数遍历可能性
虽然userId本身不可遍历,但通过论坛公开信息可以获取大量用户的ID,使得漏洞危害性大幅提升。
漏洞利用流程总结
- 发现敏感接口:通过常规浏览或抓包找到返回用户敏感信息的API
- 参数分析:检查请求参数,寻找可能的权限控制参数(如userId)
- 参数构造:尝试添加或修改权限控制参数
- ID收集:从网站其他功能点收集有效用户ID
- 批量获取:使用收集的ID构造请求,获取多用户信息
防御建议
- 权限校验:所有涉及用户数据的接口必须进行严格的权限校验
- 敏感信息保护:避免在接口中返回不必要的敏感信息(如加密密码)
- 参数过滤:对传入的用户ID进行有效性验证和权限检查
- 接口设计:避免使用可预测的用户标识符
- 日志监控:对异常的大量用户信息查询进行监控
报告要点
在提交漏洞报告时,需要包含:
- 漏洞详细复现步骤
- 两个存在问题的API接口
- 获取其他用户ID的方法
- 漏洞的实际危害证明
- 清晰的修复建议
通过这种系统的测试方法,不仅提高了漏洞被认可的概率,也确保了漏洞的高危评级。