身份伪造定义
攻击者绕过了不安全的身份验证机制,从而达到越权访问甚至操作的攻击。
身份伪造利用
JWT验证
JWT是一种开放标准(RFC 7519),用于在各方之间安全传输JSON格式的信息。它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature),通过点号(.)连接。
特征是连接的点号以及开头的eyJ
头部(Header) :包含令牌类型(如JWT)和签名算法(如HS256或RS256)。
json
{
"alg": "HS256",
"typ": "JWT"
}
载荷(Payload) :存放实际数据,如用户ID、过期时间等。分为三类声明:注册声明(如exp)、公共声明和私有声明。
json
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
签名(Signature):对头部和载荷的Base64编码字符串进行签名,确保数据未被篡改。
text
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
JWT利用
弱密钥爆破
可以使用开源工具c-jwt-cracker对一些采取弱密钥的jwt签名算法进行爆破,示例用法:
./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOnsiYWRtaW4iOmZhbHNlLCJkYXRhIjp7InVzZXJuYW1lIjoiem9tYm8iLCJwYXNzd29yZCI6InpvbWJvIn19LCJpYXQiOjE3NjUzMzk4MDMsImV4cCI6MTc2NTM0MzQwM30.7ABPo3u2x1w9Aa4BROHQCKWP_Rc42ahEjcqaOmqOWLI

然后在jwt官网使用爆破出来的弱密钥进行篡改即可。

靶场、实战练习
Bugku 2023 HackINI just-work-type详解-CSDN博客
身份伪造防御
强化验证机制
jwt签名算法采用强密钥