网络安全身份鉴权与协议

网络安全身份鉴权与协议

一、HTTP/HTTPS核心差异与实战影响

1. 核心概念

HTTP与HTTPS的本质差异是“是否加壳保护” ——HTTP是“明文裸传”,数据无加密无身份验证;HTTPS是“HTTP+SSL/TLS加密壳”,通过数字证书和加密算法实现“传输加密+身份验证”,二者直接决定抓包难度和攻击路径。

2. 关键差异对比

对比维度 HTTP HTTPS 红队攻击影响 蓝队防护核心
加密方式 明文传输,无加密 SSL/TLS对称+非对称加密(数据+密钥交换) HTTP抓包直接获明文(如密码、Token);HTTPS需破解证书/抓包解密 强制HTTPS跳转,禁用HTTP端口(80)
身份验证 无服务器身份校验 数字证书验证服务器合法性 HTTP易遭中间人攻击(篡改数据);HTTPS需伪造证书才能中间人攻击 部署可信CA证书,禁用弱加密套件(如SSLv3)
默认端口 80端口 443端口 端口扫描时,443端口存在意味着需处理加密层 防火墙仅开放443端口,限制80端口访问
抓包难度 直接抓包(Burp/Charles直接查看) 需安装CA证书信任,或破解证书密钥 测试HTTPS需先配置抓包工具证书,否则无法解析数据 启用证书钉扎(Certificate Pinning),防止抓包解密

3. 实战关键理解

  • HTTPS不是“绝对安全”:仅防传输过程窃听篡改,不防应用层漏洞(如SQL注入、JWT破解);
  • 红队处理HTTPS技巧:要么在目标设备安装抓包工具CA证书,要么利用目标APP的证书校验漏洞(如未做证书钉扎)。

二、核心身份鉴权技术解析

1. 五大鉴权技术核心对比

鉴权技术 核心本质 工作原理 优势 安全痛点 实战适用场景
Cookie+Session 服务器端存储会话,客户端存Cookie标识 登录成功后服务器生成Session(内存/数据库),客户端Cookie存SessionID 实现简单,适合内网系统 SessionID劫持=权限泄露;服务器存储压力大 传统Web应用、内网管理系统
Token令牌 无状态临时凭证,服务器验证签名有效性 登录成功后服务器签发Token(含用户信息+签名),客户端每次请求携带 跨域友好,服务器无存储压力 Token泄露即被盗用;需定期刷新 前后端分离应用、API接口
JWT(JSON Web Token) 结构化Token,含Header+Payload+Signature 三部分Base64编码拼接,服务器验证Signature(密钥签名) 自包含信息,支持单点登录(SSO) 无法实时吊销;Payload可解码(无加密) 跨系统登录、小程序/APP接口鉴权
OAuth2.0 第三方授权框架,“有限访问”代理权限 通过授权码/令牌,让第三方应用获取用户在目标平台的部分权限(无需暴露密码) 安全便捷,支持第三方登录 配置不当易遭授权劫持、CSRF攻击 微信/QQ登录、第三方API调用(如百度地图)
API密钥(API Key) 固定凭证,标识调用者身份 客户端请求时在Header/参数中携带API Key,服务器校验合法性 配置简单,适合机器间接口调用 密钥泄露即滥用;无时效性 开放平台API、内部系统接口调用

2. 关键理解

  • JWT的“Payload无加密”:Base64解码后可直接查看用户信息(如eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9解码得Header),仅Signature防篡改;
  • Cookie+Session的“SessionID安全”:必须给Cookie加HttpOnly(防JS窃取)和Secure(仅HTTPS传输),否则易遭会话劫持。

三、OAuth2.0框架深度解析

1. 核心概念

OAuth2.0是“第三方授权的标准化协议”,核心是“不泄露用户密码,仅授予第三方有限权限”——比如用微信登录某APP时,APP不会获取你的微信密码,仅获取“昵称/头像”的有限权限,授权过程由微信(授权服务器)管控。

2. 四种授权模式对比

授权模式 核心流程 适用场景 安全等级 红队攻击风险点
授权码模式(authorization code) 用户→授权服务器(拿授权码)→客户端→授权服务器(换Token)→资源服务器(拿资源) 有后端的Web应用、APP 最高(授权码+Token双重验证) redirect_url校验不严(劫持授权码)、state未设置(CSRF)
简化模式(implicit) 用户→授权服务器(直接拿Token)→客户端→资源服务器 无后端的纯前端应用(如Vue单页) 较低(Token暴露在URL) Token被劫持、CSRF攻击
密码模式(password) 用户直接向客户端提供账号密码→客户端用密码换Token 信任度极高的第三方应用(如同一公司产品) 低(客户端存储用户密码) 客户端泄露用户密码、密码被窃听
客户端模式(client credentials) 客户端用自身ID/密钥换Token→访问资源 机器间接口调用(无用户参与) 中(仅验证客户端身份) client_id/client_secret泄露、越权访问

3. OAuth2.0高频安全漏洞

  • redirect_url校验不严:红队构造恶意跳转地址(如http://malicious.com),劫持授权码/Token;
  • state参数未设置:导致CSRF攻击,攻击者诱导用户授权后,窃取授权码;
  • scope权限提权:红队用低权限scope的Token,尝试访问高权限资源(如用“只读”Token调用“删除”接口);
  • 授权码复用:红队窃取A应用的授权码,尝试在B应用兑换Token(未校验client_id与redirect_url绑定)。

四、Authorization标头攻防实战

1. 六大授权方案对比

授权方案 标头格式 核心特点 红队攻击技巧 蓝队防护思路
Basic认证 Authorization: Basic Base64(账号:密码) 账号密码Base64编码,可逆解码 抓包后解码获取明文(如dXNlcjE6MTIzNDU2解码为user1:123456 仅用于内部低安全场景,搭配HTTPS使用
Digest认证 Authorization: Digest 加密后的凭证 基于MD5哈希,比Basic安全 暴力破解弱密码,或利用哈希碰撞 逐步淘汰,推荐替换为Bearer认证
Bearer认证 Authorization: Bearer Token/JWT 最常用,承载Token/JWT凭证 劫持Token/JWT后直接伪造请求,或破解JWT签名 Token定期刷新,JWT用强密钥签名+短期过期
JWT认证 Authorization: Bearer JWT字符串 结构化凭证,含签名防篡改 破解弱密钥签名(如HS256密钥过短)、修改Payload后重签名 用RS256非对称签名,密钥定期更换
API密钥认证 Authorization: ApiKey 密钥值 固定密钥,标识调用者身份 扫描泄露的API密钥(如GitHub搜索),或抓包窃取 密钥定期轮换,限制IP访问
双因素认证(2FA) 结合密码+动态验证码(如短信/谷歌验证) 多一层身份校验,需实时动态凭证 社工欺骗获取动态验证码,或劫持已认证会话 强制开启2FA,动态验证码有效期缩短

2. JWT攻防核心技巧

  • 红队攻击:
    1. 解码Payload:用Base64工具解码前两部分,获取用户ID、权限等信息;
    2. 破解签名:若用HS256对称签名,暴力破解密钥(工具:c-jwt-cracker);
    3. 算法篡改:将Header中的算法改为none(无签名),绕过校验;
  • 蓝队防护:
    1. 用RS256非对称签名(公钥验签,私钥签名),避免密钥泄露;
    2. Payload不存敏感信息(如密码),仅存非敏感标识(如用户ID);
    3. 缩短JWT有效期(如15分钟),配合refresh token刷新。

五、红蓝队实战攻防思路

1. 红队攻击核心路径

  • 第一步:识别鉴权类型:抓包查看Authorization标头(如Bearer+JWT)、Cookie(如SessionID),判断目标用哪种鉴权;
  • 第二步:针对性攻击:
    • Cookie/Session:窃取SessionID(如XSS、抓包),伪造Cookie登录;
    • Token/JWT:劫持Token后直接复用,或破解JWT签名篡改权限;
    • OAuth2.0:fuzz redirect_url绕过校验(如子域名、路径遍历),劫持授权码;
  • 第三步:漏洞利用:鉴权绕过(如未校验Token直接访问)、权限越权(如修改用户ID访问他人数据)。

2. 蓝队防护核心策略

  • 基础防护:
    • 强制HTTPS,给Cookie加HttpOnly+Secure+SameSite=Strict
    • Token/JWT定期刷新,短期过期,敏感操作二次验证;
  • OAuth2.0专项防护:
    • 严格校验redirect_url(白名单+精确匹配,不模糊匹配);
    • 必传state参数(随机值+绑定会话),防CSRF;
    • 限制scope权限,避免过度授权;
  • 监控研判:
    • 日志记录异常鉴权行为(如同一Token多IP登录、频繁失败的授权请求);
    • 拦截畸形Authorization标头(如算法篡改的JWT)。