文章总结: 文档系统梳理Web鉴权机制,涵盖Cookie+Session、JWT、挑战应答等核心原理,重点分析Session固定、JWT弱签名等常见漏洞及渗透测试方法,提供识别机制与防御建议,强调密钥管理的重要性,适用于安全人员实战参考。 综合评分: 85 文章分类: WEB安全,渗透测试,漏洞分析,安全工具,实战经验
Web鉴权机制总结(全网最全版)
原创
平平无奇 n1 平平无奇 n1
N1&杨安全
2026年3月21日 18:09 福建
在小说阅读器读本章
去阅读
前言
这几天倒是一直在忙一些创业和社交相关的事,公众号倒是搁置了,今天突然想静下心来输出一篇
思前想后,继续给大家补一补web安全的基础吧:web鉴权机制总结
今天只是带领大家去梳理总结一下,很多还需要你们去问AI或者自学一下,有不懂的可以私信问我(有时间都会回)
推荐练习的靶场
- Portswigger中的JWT-labs以及其他
地址:https://portswigger.net/web-security/all-labs
概述
鉴权(Authorization) 与身份验证(Authentication)共同构成防止未授权的第一道防线,所以也是学习未授权漏洞的基础
那什么是鉴权呢?
其实就是看某用户是否有权访问某资源比如你是普通用户,还是管理员用户,能看到的东西肯定有所不同了
那什么又是口令验证呢?
其实就是通过某一串口令来对用户进行身份识别
鉴权机制与常见漏洞
这里带大家熟悉和梳理一下
cookie+session
<?php
session_start(); // 激活 Session 机制,生成或读取 PHPSESSID
// 模拟登录逻辑
if($_GET["username"] === "admin" && $_GET["password"] === "secret_pass"){
// 坑点:直接把敏感信息存入 Cookie 是极度危险的
setcookie("is_admin", "true", time()+3600);
$_SESSION["user_id"] = 1;
$_SESSION["role"] = "admin";
}
// 鉴权逻辑
if(isset($_SESSION["role"]) && $_SESSION["role"] === "admin"){
echo"Welcome, Admin. [SessionID: ".session_id()."]";
} else {
header("HTTP/1.1 403 Forbidden");
echo"Access Denied.";
}
?>
用户登录后,服务器生成一个 Session ID,存储在服务端(如内存、Redis 或文件),并且将Session ID放入 Cookie返回给浏览器。后续用户请求通过 Cookie 自动携带,服务端通过 Session ID识别用户身份。
除了基础的 Session+Cookie,实战中更多遇到的是无状态或签名类鉴权:
Http Basic / Digest Auth:
- Basic: Authorization: Basic [Base64]。Base64 是编码非加密,抓包即死。
- Digest: 引入了随机数(Nonce)和哈希,防止重放攻击,比 Basic 安全但部署复杂。
随机Token(一次性,短生命周期)
常用于 CSRF 防护或单次接口调用。关键看其熵值(是否可预测)和销毁机制。
JWT (JSON Web Token)
又叫做无状态Token
那什么叫无状态呢?
就是服务端不存数据,全靠Header.Payload.Signature自校验
这也是出现漏洞最多最有名最常见的一种鉴权机制
挑战应答 (Challenge-Response) / AKSK / API Key
原理的话如图,自己看,看不懂就多看
你会发现,其实关键还是在于SK的安全性
这是云原生和 API 接口主流。客户端用 SK(Secret Key)对请求内容(Method+Path+Timestamp+Body)进行 HmacSHA256 签名。
关键: 只要 SK 不泄露,攻击者即使拦截了请求也无法伪造签名,因为 Timestamp 保证了时效性。
加解密身份票据
依旧取决于 Key 的保管机制
总结一下:核心在于Key
无论是 Encrypted Token(如 C# 的 MachineKey 加密)还是签名机制,其安全性完全取决于 Key 的保管。
泄露途径: GitHub 源码泄露、配置文件权限过大、硬编码在前端 JS 中、通过 LFI(本地文件包含)读取环境变量。
所以我们平时在做渗透测试的时候需要着重去看一看
那问题来了,这时候就有臭弟弟要说,N1,N1我学了这么多鉴权机制,脑袋都快炸了,实战中我们又如何区分呢?
其实你也不需要区分,只需要知道是什么在鉴权就足够了
如何识别鉴权机制
删除法
抓包后逐个删除 Header 中的 Cookie、Authorization、X-Token,观察哪个会导致 401/403,或者导致用户权限发生变化。
特征识别
- ey… 开头:典型的 JWT。
- Basic …:Http 基础认证。
- Bearer …:常见于 OAuth2。
- 长随机字符串:可能是 SessionID 或自定义 Token
常见漏洞
- 弱 cookie
- Session 劫持
CSRF,XSS打组合拳
配合 XSS 获取 document.cookie等。
- Session 固定会话攻击(Fixation)
漏洞复现 用户登录后,固定的SESSIONID 成为了用户的身份凭证,导致可以访问到用户的界面
验证:观察登录前和登录后 SessionID 有没有变化
防御:登录之后应该强制刷新 SessionID
我们来举个实际场景
场景: 攻击者先获取一个合法的 PHPSESSID=123,诱导用户用该 ID 登录。
验证: 登录前抓包记下 SessionID,登录后再看,如果没变,则存在此风险。
防御: session_regenerate_id(true); 登录成功必须强制刷新 I
- Baisc 认证之 Tomcat 暴力破解
- JWT 漏洞(高频)
a. 不校验签名
服务端直接没对签名做校验,不过很少了就是
b. alg:none 攻击空签名攻击
修改Header为 {"alg":"none"},删掉签名部分,看后端是否直接放行(由于库漏洞,部分旧后端会认为签名已验证)。
c. JWT 弱口令
如果 JWT 使用 HS256(对称加密),可以使用hashcat 对签名进行暴力破解。
** d. JWK 劫持和 JKU 劫持**
在 Header 中注入 jku 参数,指向攻击者控制的恶意公钥地址,让服务器用你的公钥验你的签。
e. KID注入
kid字段用于指定密钥。如果后端将其直接拼接进 SQL 或目录,会导致 SQL 注入或任意文件读取。
- 服务端组件漏洞
Tomcat Basic 认证爆破: 针对 /manager/html 页面,利用字典进行 Authorization 头爆破。
总结一下
鉴权渗透的本质是“身份越权”。
总结一下渗透路径:识别机制 -> 寻找 Key 泄露/逻辑弱点 -> 尝试伪造/劫持 -> 实现纵向或横向越权。
我是N1,一名拥有四年经验的渗透测试工程师,欢迎大家关注哦~
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:N1&杨安全 平平无奇 n1 平平无奇 n1《Web鉴权机制总结(全网最全版)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论