未经许可,不得转载。
文章目录
正文
我点击"提交新名称"时,请求会携带一个 JWT 令牌和请求体,我们重点关注请求体中的user_id字段。

如果信息正确且系统接受更改,则返回成功响应(200 OK)。
如果信息错误或用户未被授权,则返回失败响应(401 Unauthorized)。
现在来看看 JWT 字段:

在解码 JWT 后,我发现其中包含以下信息:

如果你注意到之前提到的请求以及解密后的 JWT,你会发现两者存在相似之处。
请求中的 user_id 示例:
"user_id": "User:01946fa0-xxxxxx-04f8–0000-xxxxxxxxx"
JWT 解密后的 uid 示例:
"uid": "01946fa0-xxxxxx-04f8–0000-xxxxxxxxx"
由此可以明确,在会话中存储了一个 JWT,经过加密后,user_id 以 “User:01946fa0-xxxxxx-04f8–0000-xxxxxxxxx” 的形式暴露在请求中。
经过测试,我发现,只要能够访问 “User:01946fa0-xxxxxx-04f8–0000-xxxxxxxxx”,那么就可以修改该用户的账户数据,实现账户接管。
可以使用 jsonwebtoken(Node.js 中的 JWT 处理库)编写一个工具,生成一个包含其他用户 ID 的修改版 JWT。
原文出处:https://medium.com/@HackerPlus/account-takeover-via-idor-form-jwt-programs-hackerone-2500-0a378fe2c951

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



