通过 API 配置错误和逻辑漏洞实现账户接管

admin 2024年11月27日12:58:07评论9 views字数 1303阅读4分20秒阅读模式

 

漏洞利用只用了 20 分钟

在一次安全研究中,我偶然发现了一个类似论坛的网站,决定对其进行一些探索。不久后,我发现了一个严重的漏洞。

检查 Cookie

注册账号后,我像往常一样打开了开发者工具以检查 Cookie。令我惊讶的是,发现该网站的 Cookie 数据异常庞大,并且似乎是一个 JWT(JSON Web Token)

出于好奇,我将这个令牌粘贴到 jwt.io[1] 上进行解码。结果发现,JWT 中包含了一个 API 密钥,这让我联想到它可能赋予用户超出预期的权限和访问能力。

这个发现促使我进一步调查 JWT 的潜在漏洞以及 API 中可能存在的过度权限问题。

通过 API 配置错误和逻辑漏洞实现账户接管img
通过 API 配置错误和逻辑漏洞实现账户接管img

测试准备

在测试中,我的用户 contact_id 是 tSprgLvK93SKImu6SVZc。为了避免对其他用户造成影响,我额外创建了一个测试用户,其 contact_id 为 pmUIxGvvmbrplnw5NujC

开始测试

我注意到请求被发送到一个名为 service.*.*的端点,使用的是 Token-Id 来检索所有用户信息。最初,请求采用的是 GET 方法。

出于好奇,我测试了 OPTIONS 方法,发现它还支持 PUT 和 DELETE 方法。这一发现让我决定尝试使用 PUT 方法进行进一步测试。

通过 API 配置错误和逻辑漏洞实现账户接管img

修改请求参数

在进一步测试中,我将请求中的 contact_id 参数从 pmUIxGvvmbrplnw5NujC 修改为 tSprgLvK93SKImu6SVZc。令我惊讶的是,这样竟然成功获取到了另一个用户的密码。

注意到 PUT 方法被启用后,我开始思考是否可以修改任意用户的密码。与此同时,我还发现这些密码是通过 SHA-256 哈希处理的,但没有使用盐值(salt),这大大削弱了密码的安全性。

随后,我尝试修改密码,并且成功了!现在,我的两个用户账户都设置了相同的密码。

通过 API 配置错误和逻辑漏洞实现账户接管img

通过一些侦查,我能够识别出网站上的所有用户,包括管理员。

通过 API 配置错误和逻辑漏洞实现账户接管img
通过 API 配置错误和逻辑漏洞实现账户接管img

深入测试

这一发现已经非常关键,但很快我又发现了另一个漏洞。在等待一段时间并重复发送请求后,我收到了一条提示令牌过期的消息。然而,当我尝试从请求中完全删除 Token-Id 后,仍然能够收到服务器的响应。

这表明 Token-Id 的逻辑处理存在缺陷,使我有可能影响任何使用该端点的网站。这一漏洞的严重性因此大幅升级。

通过 API 配置错误和逻辑漏洞实现账户接管img

您可以在这里找到网站信息,包括 location_id 和 contact_id:

通过 API 配置错误和逻辑漏洞实现账户接管img

我立即将该问题报告给开发团队,他们迅速进行了修复。

References

[1] jwt.iohttps://jwt.io/

以上内容由白帽子左一翻译并整理。原文:https://medium.com/@greenhatsmail/account-takeover-via-api-misconfiguration-and-logical-flaws-14a1caa90d44

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):通过 API 配置错误和逻辑漏洞实现账户接管

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月27日12:58:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过 API 配置错误和逻辑漏洞实现账户接管https://cn-sec.com/archives/3431122.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息