1.13-Web身份鉴权技术
1.13-Web身份鉴权技术
web中常用的身份验证鉴权技术:
Cookie,Session,Token,JWT,oauth2(开放授权)等
参考文章:https://mp.weixin.qq.com/s/Z6rt_ggCA8dNVJPgELZ44w
Token,JWT,oauth 是中大型网站一般使用的鉴权技术
各鉴权技术的引用场景:
http基本鉴权存在安全问题,不建议在企业使用,建议内部非涉密系统使用;
Cookie+Session相对简单,建议在内网使用;
token相对完善,推荐在外网使用;
JWT推荐使用,常用在SSO单点登录中;
OAuth灵活方便,对于第三方系统登录更友好。
安全漏洞问题:
1、redirect_url 校验不严格导致code被劫持到恶意网站(fuzz各种bypass方式)
2、client_id与redirect_url 不一致造成滥用劫持
3、A应用生成的code可以用在B应用上
4、state未设置csrf防护,导致csrf风险
5、scope提权,将低scope权限的code用于高权限场景
6、HTTP劫持,网络层中间人攻击
7、点击劫持:通过点击劫持,恶意网站会在以下位置加载目标网站: 透明 iFrame(参见 [ iFrame ])覆盖在一组虚拟的顶部 精心构造的按钮直接放置在 目标站点上的重要按钮。当用户单击可见的 按钮,他们实际上是在单击一个按钮(例如“授权” 按钮)在隐藏页面上。
Authorization请求头出现时可能采用的就是以下认证方案,当发现区分出来不同的认证方案后,就采用对应的测试手段即可:
参考文章:https://juejin.cn/post/7300812626279251987
授权方案:
1、Basic认证 —— 访问401,需要账号密码才能继续访问。响应头中会出现 www-Authenticate字段
2、Digest认证
3、Bearer认证
4、JWT认证 —— JWT的三部分中 包含用户的个人信息
5、API密钥认证
6、双因素认证
7、其他一些认证方式
-
Token = 上机卡 / 门票,证明你有权访问。
-
JWT = 一种带签名的电子门票,不仅证明你有权访问,还防止别人伪造或篡改。
-
JWT 全称 JSON Web Token,是一种“特别设计的 Token”。
-
它的格式是:
头部.载荷.签名
,三个部分拼在一起。- 头部(Header) :说明这是什么类型的 Token、用了什么加密算法。
- 载荷(Payload) :存放信息,比如用户ID、过期时间。
- 签名(Signature) :服务端对前两部分加密签过名,别人就不能随便篡改。
JWT和Token的安全问题:
如果JWT被完整截获,也可以通过在请求包中添加请求头带上JWT来冒充别人的身份通过网站认证
Token只是随机字符串,靠随机性来保证安全性,同样存在被截获的风险
所以实际安全里,JWT/Token 一般会配合以下三点来保证安全:
- HTTPS(防止传输被窃听)
- 过期时间(即使被盗用,也只能用一会儿)
- 刷新机制(定期换新的 Token)
Tips:
虚拟机中的wireshark可以抓物理机网卡的数据包,只要在同一个网卡中 就可以
现在HTTPS的协议一般是TLSv1.3,1.2的版本