攻击方式
通过html中隐藏的input标签值
通过移除/修改提交的参数来确认程序的响应
通过猜测和暴力破解强制访问站点的某些URL
2FA Password Reset
将secQuestion0,secQuestion1改为secQuestion2 secQuestion3即可

JWT (JSON Web tokens)
- 概念
一种在客户端和服务器之间使用JSON对象
令牌格式为Header.playload.Signature
Header中存放加密的算法和类型,数据为JSON经过BASE64URL算法的编码结果
JSON字符串格式为:
{
"alg" : "HS256"
"typ": "JWT"
}
playload中存放实际传递的数据(该部分非加密格式,可任意读取),数据为JSON经过BASE64URL算法的编码结果。
playload分三种声明(claims):
Registered claims(注册声明)
这些是一组预先定义的声明,它们不是强制性的,但推荐使用,以提供一组有用的,可互操作的声明。 其中一些是:iss(发行者),exp(到期时间),sub(主题),aud(受众)
Public claims(公开声明)
由使用JWT的人员随意定义
Private claims(私有声明)
这些是为了同意使用它们但是既没有登记,也没有公开声明的各方之间共享信息,而创建的定制声明。
JSON字符串格式为:
{
"exp": 1416471934, "user_name": "user",
"scope": [ "read", "write" ],
"authorities": [ "ROLE_ADMIN", "ROLE_USER" ],
"jti": "9bc92a44-0b1a-4c5e-be70-da52075b9a84",
"client_id": "my-client-with-secret"
}
Signature中存放通过secret对header和claims计算签名并经过BASE64URL算法的编码结果,算法格式为:
HMACSHA256(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)
Base64URL编码与Base64类似,主要是将Base64编码中的=省略,+替换为-,/替换为_
https://www.cnblogs.com/mantoudev/p/8994341.html
攻击方式
将签名算法设置为none从而绕过签名验证
密钥暴力破解token信息
利用refresh token逻辑错误,对其他账号的access token进行刷新
- 将签名算法设置为none从而绕过签名验证
抓包获取Tom的JWT

访问http://jwt.io 对jwt解码

把加密算法置空,把admin置为true,得到新的token
import base64
def b64urlencode(data):
return base64.b64encode(data).replace(b'+', b'-').replace(b'/',
最低0.47元/天 解锁文章
738

被折叠的 条评论
为什么被折叠?



