赞
踩
什么是Token
Token全称JSON Web Token,又简称JWT,是一种用于身份验证和授权的开放标准。它是一种轻量级的、基于JSON的令牌,可以在客户端和服务器之间传递信息。JWT由三部分组成:header(头部).payload(载荷).signature(签证),形似如下:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlJvY2siLCJhZG1pbiI6dHJ1ZX0.
FgWU4K2h_NpZsfb9FxJcsmKRb3dNNlIgDeuD4onIx4A
其中header和payload部分由base64 URL编码进行编码,JWT Signature部分可以使用 HMAC 算法或使用 RSA 的公钥/私钥对进行签名。JWT的优点包括可扩展性、可靠性和安全性。
简单的说,JWT就是通过数字签名的方式,以JSON对象为载体的开发标准,可以在不同的服务终端之间安全的传输信息。
详细介绍:CSDN-JWT详解
Token伪造漏洞
Token伪造,顾名思义通过伪造JWT,以特定账户的身份欺骗系统完成验证。Token伪造是一类漏洞的统称,可以是最简单的弱密钥爆破,也可以是其他高危漏洞,但无论类型如何变化,都是基于Token进行攻击并对其身份认证功能产生威胁。常见的关于Token漏洞如下:
漏洞环境以Pilot靶场为例:下载地址与部署教程
使用任意账号登录,并抓包。这里以账号密码pilot/123456
为例:
在响应包中获得Token值。返回WEB页面,点击身份认证按钮并抓包:
可以成功验证登录账号身份为pilot
。
修改参数username
为管理员账号admin
,尝试伪造身份:
提示Token过期或错误,说明Token信息与username
参数传入的值不匹配,无法验证admin
身份。
复制Token值至Token爆破工具jwtcracker,尝试爆破密钥:
获得Token密钥为“1”,通过JWT官方网站伪造Token:
复制修改后的Token,替换身份认证API中的Token值,再次验证:
通过修改Token,成功伪造身份为admin
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。