认证实验室实战演练
认证实验室包含一系列与认证和授权相关的挑战,这些挑战均来源于真实世界的测试案例或其他测试人员的建议。
您可以在认证实验室体验最新版本的所有挑战,或从GitHub获取代码自行构建实验室。该实验室使用Golang编写,安装和运行都相当简单。
IP基础认证绕过
挑战目标:发现故意设置的基于IP的认证绕过漏洞。
实战解析
在实际测试中,开发者/管理员为了避免频繁登录,设置了页面检查请求源IP的功能。如果IP匹配其固定IP(192.168.0.14),则自动完成登录流程。但关键漏洞在于:IP检查代码同时验证了X-Forwarded-For
头部。
利用方法:
|
|
通过文件大小差异可快速定位有效IP(14.out),成功登录为Alex管理员。
时序攻击
挑战特点:系统通过响应时间差异泄露有效用户名信息。
技术要点
- 使用Burp Intruder对2000个用户名进行爆破
- 通过"Response completed"时间列排序识别异常值
- 确认四个有效用户名:Sarah、Zoe、Matthew、Daniel
关键提示:真实环境中需保持单线程测试和稳定网络环境以减少干扰。
客户端认证漏洞
漏洞原理:完全依赖JavaScript的认证机制,包含以下关键缺陷:
- 用户名密码拼接后与密钥进行XOR运算
- 通过逆向计算可获取原始凭证:
|
|
JWT信息泄露
案例演示: 解码给定JWT获得管理员凭证:
|
|
JWT签名绕过(CVE-2019-7644)
攻击步骤:
- 修改原始token将用户权限从"user"提升至"admin"
- 服务器错误返回预期签名"FO8ZDKSDNVnt_VB3f35_ofEMGFDTrv0dVo8hjGXDtn8"
- 使用新签名构造有效token实现权限提升
JWT None算法攻击
利用工具:Burp扩展JOSEPH
- 检测到JWT后选择"Signature Exclusion"攻击
- 将算法修改为"None"变体(如"nOne")
- 删除签名后任意修改payload内容
JWT密钥破解
多难度级别实战:
- 简单级别:直接字典攻击
1 2
john --wordlist=rockyou.txt easy.jwt # 秒破密钥"hello"
- 中等难度:需启用规则转换
1 2
john --rules --wordlist=rockyou.txt medium.jwt # 破解密钥"Tiger"(首字母大写转换)
- 困难模式:混合攻击
1 2
hashcat -m 16500 -a 6 hard.jwt rockyou.txt ?d?d?d?d # 破解复合密钥"powerhouse2020"
防御建议
- 服务端必须验证所有客户端输入
- 避免在JWT中存储敏感信息
- 禁用None算法并严格校验签名算法
- 使用强密钥并定期轮换
- 移除生产环境的调试信息
完整实验代码和更多技术细节请参考GitHub仓库。