
导读你有没有想过当你登录淘宝后服务器是怎么记住你的为什么关闭浏览器再打开你依然处于登录状态在黑客眼中这些“登录凭证”就像是豪宅的钥匙。本期我们将深入身份认证机制的内部看看JWTJSON Web Token 和Session 是如何被攻击者“偷走”或“伪造”的。一、 身份认证的两大流派在现代 Web 开发中主要有两种方式来维持用户的登录状态1. Session Cookie传统派原理你输入账号密码登录。服务器生成一个 Session ID如abc123把它存在服务器的内存或数据库里并把Set-Cookie: sessionidabc123发给浏览器。下次你访问时浏览器自动带上 Cookie服务器查表确认abc123对应的是谁。痛点服务器需要存每个人的 Session用户多了服务器压力大这就是分布式架构的噩梦。2. JWT现代派 / 无状态原理登录成功后服务器不存任何东西。它签发一个Token一串很长的字符串给你格式通常是Header.Payload.Signature。你每次请求都在 Header 里带上Authorization: Bearer xxxxxx。服务器用密钥验证这个 Token 的签名是否正确正确就放行。优势服务器无感非常适合微服务。二、 JWT 漏洞当“通行证”可以被伪造JWT 是目前最热门的攻击目标。因为一旦 JWT 被破解攻击者就可以伪装成任何用户包括管理员。1. 算法混淆攻击Algorithm Confusion漏洞原理JWT 支持多种算法。有的服务器配置不当允许使用none算法即无签名。正常 TokeneyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiYWRtaW4ifQ.xxxxx攻击操作用 Burp Suite 拦截修改 Header 为json{ alg: none, typ: JWT }结果删掉签名部分Payload 后面的点及之后内容发送给服务器。如果服务器接受了这个“无签名”的 Token你就成功伪造了身份。2. 空密钥或弱密钥Weak SecretJWT 通常使用 HS256 算法需要一个密钥Secret来签名。如果这个密钥是secret、123456或空字符串那就完了。实战工具使用john或hashcat破解 JWT 密钥。# 使用字典爆破 JWT 密钥 hashcat -a 0 -m 16500 jwt_token.txt wordlist.txt利用拿到密钥后你可以使用在线工具如 jwt.io随意修改 Payload如role: admin并重新签名。三、 Session 漏洞当“门禁卡”可以被预测虽然 Session 老派但坑也不少。1. Session Fixation会话固定原理攻击者诱导受害者使用攻击者已知的 Session ID。黑客访问网站拿到一个 Session IDevil_session_123。黑客构造钓鱼链接https://bank.com/login?sessionidevil_session_123。受害者点击链接并登录。黑客使用evil_session_123直接登录受害者的账户。2. 会话注销不彻底原理用户点了“退出登录”服务器只是清除了前端的 Cookie但没有在后端销毁 Session。结果那个旧的 Session ID 依然有效只要没过期就能继续使用。四、 OAuth 2.0 漏洞第三方登录的陷阱现在很多网站支持“微信登录”、“QQ登录”。这就是 OAuth 流程。最常见的漏洞是redirect_uri 绕过。攻击场景某网站授权 URL 是https://site.com/oauth?redirect_urihttps://site.com/callback。攻击者修改为https://site.com/oauth?redirect_urihttps://evil.com/callback。诱骗用户点击授权。授权码Code被发送到攻击者的服务器evil.com攻击者用这个 Code 换取用户的 Access Token从而接管账户。五、 实战演练修改 JWT 成为管理员我们在OWASP Juice Shop 中进行实战注册普通用户并登录。打开 Burp Suite抓取请求找到Authorization: Bearer eyJ...头。复制 JWT Token 到 jwt.io。观察 Payload 部分json{ data: { id: 14, email: usertest.com, role: customer }, iat: 1700000000 }修改将role: customer改为role: admin。签名如果服务器使用弱密钥如secret在 jwt.io 的 Verify Signature 栏输入密钥生成新的 Token。重放在 Burp Repeater 中用新的 Token 替换旧 Token访问/rest/admin接口。结果成功获取管理员权限查看所有用户数据。六、 2026 年防御建议JWT 安全绝不使用none算法。使用强密钥大于 256 位且定期轮换。设置短有效期Expiration Time并使用 Refresh Token 机制。Session 安全登录成功后强制更换 Session ID防止固定攻击。退出登录时务必在服务器端销毁 Session。通用开启 HttpOnly 和 Secure 属性防止 XSS 偷 Cookie。⚠️ 安全警示与法律红线请务必遵守以下准则严禁账户接管利用 JWT 伪造或 Session 绕过漏洞登录他人账户即使是测试账户在渗透测试规范中也属于高风险操作需谨慎授权。敏感操作限制在未获明确授权的情况下严禁尝试修改他人的角色如把自己提权为 Admin这可能导致系统管理混乱引发法律责任。仅限靶场本篇提到的所有攻击手法请严格限制在Juice Shop、PortSwigger Web Security Academy 等合法靶场中练习。身份即权限。拥有伪造身份的能力意味着拥有毁灭信任体系的权力。请慎用这份力量。 互动环节你在开发中使用 Session 还是 JWT为什么你遇到过最奇葩的登录逻辑是什么比如短信验证码直接显示在网页源码里欢迎在评论区留言讨论 下一期预告【漏洞攻防-前端篇】XSS 与 CSRF —— 当浏览器成为攻击者的“肉鸡”。