同源异梦:JWT 泄露后从主站到旁站的渗透曲线
字数 1562 2025-09-01 11:26:11
JWT泄露渗透测试实战指南:从主站到旁站的全流程分析
1. 漏洞发现与初步测试
1.1 JWT泄露发现
- 通过浏览器开发者工具检查网络请求,发现JWT令牌泄露
- 典型位置:Authorization头、Cookie或响应体中
1.2 初步利用尝试
- 尝试将泄露的JWT用于主站API访问
- 常见响应:
- 401 Unauthorized:令牌无效或过期
- 404 Not Found:接口路径错误
- 当主站利用失败时,考虑横向扩展测试范围
2. 信息收集与旁站发现
2.1 同IP站点发现
- 使用工具和技术:
- IP反查:
nslookup、dig - 网络扫描:
nmap、masscan - 在线服务:
censys.io、shodan.io
- IP反查:
2.2 相似站点识别
- 分析域名模式:
admin.example.comvsconsole.example.com- 相同父域名的不同子域名
- 检查相同开发框架的特征
3. JWT跨站利用技术
3.1 令牌有效性验证
- 在旁站登录接口抓取请求
- 添加Header:
token: {泄露的JWT} - 观察响应状态码和数据
3.2 接口路径推测
- 常见API路径模式:
/api/v1/list/rest/user/info/graphql
- 使用工具:
dirsearch、gobuster进行路径枚举
3.3 参数构造技巧
- 将POST body参数转为GET query参数:
{"id":123}→?id=123
- 测试参数位置:
- Headers
- URL路径
- Query参数
- Body参数
4. 权限提升与密码重置
4.1 账户信息获取
- 关键字段识别:
platAccountIduserIdusername
4.2 密码重置漏洞利用
- 找到密码重置端点
- 构造包含必要参数的请求:
POST /api/resetPassword Headers: Authorization: Bearer {JWT} Body: { "platAccountId": "获取的ID", "password": "新密码" }
5. 管理员账户接管
5.1 管理员识别
- 通过接口响应中的权限字段识别高权限账户
- 常见字段:
isAdmin、role、privileges
5.2 凭证修改
- 修改管理员密码后直接登录
- 或使用泄露的JWT直接访问管理员接口
6. 后续漏洞挖掘
6.1 SQL注入
- Druid防火墙绕过技术:
- 报错注入payload:
/0 or updatexml(1,concat(0x7e,user(),0x7e),1)=1 - 可获取信息:
- 数据库用户
- 数据库名
- 表结构
- 报错注入payload:
6.2 XSS绕过
- Vue框架下的XSS限制:
- 寻找
v-html指令的使用 - 富文本编辑器漏洞利用
- 上传HTML文件测试
- 寻找
6.3 敏感信息泄露
- 云存储凭证泄露:
- 检查响应中的
aksk(Access Key/Secret Key) - STS临时凭证
- 使用工具验证:
- AWS CLI
- OBS浏览器
- Aliyun ossutil
- 检查响应中的
6.4 越权漏洞验证
- 获取低权限用户token
- 替换高权限操作中的token
- 测试功能点权限而非菜单权限
7. 防御建议
7.1 JWT安全
- 设置合理的过期时间
- 使用HTTPS传输
- 实现token吊销机制
- 避免客户端存储敏感token
7.2 接口安全
- 严格的权限验证
- 接口访问日志记录
- 敏感操作二次验证
7.3 基础设施安全
- 定期轮换云服务凭证
- 最小权限原则配置存储桶
- 网络隔离不同系统
8. 工具推荐
-
JWT工具:
- jwt.io
- jwt_tool
-
接口测试:
- Burp Suite
- Postman
- curl
-
信息收集:
- Amass
- Subfinder
- Assetfinder
-
云存储测试:
- AWS CLI
- OBS Browser+
- ossbrowser
本指南详细记录了从JWT泄露到系统完全控制的完整渗透流程,强调了信息收集和横向移动的重要性,为安全测试人员提供了实用的技术参考。