大家好,我想分享一下我如何在某项目中发现一个简单的API授权错误,该错误影响了数千个子域,并允许我在无需用户干预的情况下利用大量不受保护的功能,从帐户删除到接管和泄漏部分信息(名字,电子邮件ID和雇主)。

重点:服务器没有检查授权承载令牌是属于普通用户还是超级用户。

这是一个私人项目,因此将删除一些敏感信息,我将其称为“ target.com”。
我通过dirsearch在后台扫描运行的同时,通过浏览academy.target.com,;了解了大概的网站功能。
我注意到一个有趣的端点,如:academy.target.com/api/docs
此类端点就像是金矿,因为它们具有API文档并指定了请求和响应的结构。
在浏览到端点时,我发现页面与Swagger UI非常相似(尽管此网站未使用swagger)。它还有一个名为“验证”的按钮,单击该按钮可导航到登录页面,但如果我尝试登录,则会显示“未授权帐户”消息。
有一些有趣的端点,例如:

/poweruser/add
/poweruser/delete
/user/delete
/user/create
/user/user_logged_in
/user/profile

无效的API授权导致越权_第1张图片
页面有点像这样。
这让我措手不及,因为似乎这些端点应该仅供内部/高级用户使用。
在没有任何API令牌或授权标头的情况下直接调用端点会导致:
无效的API授权导致越权_第2张图片
该网站似乎未提供任何API,并且我找不到任何生成APItoken的方法,因此我决定稍后进行检查。
在深入分析之后,我仍然无法在请求或响应中找到单个APItoken。
但是,我注意到许多请求都有authorization头。
我决定只复制authorization头,并将其包含在对我发现的API端点的调用中。
我创建了另一个帐户,并尝试通过api / user / edit的POST请求更改其密码。
无效的API授权导致越权_第3张图片
无效的API授权导致越权_第4张图片
瞧!真棒。除了将帐户升级为高级用户之外,我还可以成功调用几乎所有其他API端点。
该文档详细说明了删除/接管/创建新帐户以及执行其他一些危险操作所需的参数。
我决定直接将该漏洞报告给供应商,结果他们拥有了一个私人漏洞赏金计划,并授予我440美元的赏金。
谢谢阅读!

翻译自medium.com
免责申明:本文由互联网整理翻译而来,仅供个人学习参考,如有侵权,请联系我们,告知删除。