认证实验室实战演练 - 深入解析认证与授权漏洞
认证实验室实战演练
认证实验室包含一系列与认证/授权相关的挑战,所有案例均源自真实渗透测试经验或由其他测试人员提供。
您可以通过在线实验室直接体验最新挑战,或从GitHub获取Golang编写的源码自行搭建环境。
IP认证绕过
漏洞原理
开发者为实现免登录,通过校验请求源IP进行自动认证,但错误地信任了X-Forwarded-For
头部。攻击者只需伪造该头部即可获得管理员权限。
利用过程
for ip in {1..255}
do
curl https://authlab.digi.ninja/Bypass -H "X-Forwarded-For: 192.168.0.$ip" -o $ip.out
done
通过分析响应差异,发现192.168.0.14
为特权IP。
时序攻击
漏洞特征
系统对有效用户名的响应时间显著长于无效用户名,通过Burp Intruder检测响应时间差异可枚举有效用户。
关键步骤
- 获取用户名字典
- 配置Burp攻击时添加响应时间列
- 分析耗时异常的请求识别有效用户
客户端认证缺陷
漏洞分析
认证逻辑完全在JavaScript中实现,采用XOR运算验证凭证:
function login(){
var creds = username + ":" + password;
var encrypted = xorString(creds, secret);
if(encrypted == expected) {
// 认证成功
}
}
利用方法
在控制台逆向XOR运算获取明文凭证:
xorString(encrypted, secret) // 返回"admin:secr3tpass"
JWT令牌泄露
漏洞复现
解码示例JWT获得敏感信息:
echo "eyJhbGci...9InNpZCJ9" | base64 -d
返回结果包含管理员凭证:
{
"level": "admin",
"password": "2ac9cb7dc02b3c0083eb70898e549b63", // MD5哈希值
"username": "joe"
}
CVE-2019-7644 JWT签名泄露
漏洞利用链
- 修改JWT的
level
为admin
- 系统返回错误的签名值
- 使用泄露的签名构造有效令牌
- 成功提权至管理员
JWT None算法攻击
攻击步骤
- 使用JOSEPH插件修改算法为
None
- 移除签名部分
- 任意修改payload字段
- 系统未校验签名直接放行
JWT密钥破解
破解方法
使用John或Hashcat配合字典攻击:
john --wordlist=rockyou.txt token.jwt
hashcat -m 16500 token.jwt rockyou.txt
多级难度
- 简单:直接字典匹配
- 中等:需启用规则变换
- 困难:需组合规则与掩码攻击
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码