你们好,我想分享一下我如何在某项目中发现一个简单的API受权错误,该错误影响了数千个子域,并容许我在无需用户干预的状况下利用大量不受保护的功能,从账户删除到接管和泄漏部分信息(名字,电子邮件ID和雇主)。api
重点:服务器没有检查受权承载令牌是属于普通用户仍是超级用户。服务器
这是一个私人项目,所以将删除一些敏感信息,我将其称为“ target.com”。
我经过dirsearch在后台扫描运行的同时,经过浏览academy.target.com,;了解了大概的网站功能。
我注意到一个有趣的端点,如:academy.target.com/api/docs
此类端点就像是金矿,由于它们具备API文档并指定了请求和响应的结构。
在浏览到端点时,我发现页面与Swagger UI很是类似(尽管此网站未使用swagger)。它还有一个名为“验证”的按钮,单击该按钮可导航到登陆页面,但若是我尝试登陆,则会显示“未受权账户”消息。
有一些有趣的端点,例如:ide
/poweruser/add /poweruser/delete /user/delete /user/create /user/user_logged_in /user/profile
页面有点像这样。
这让我措手不及,由于彷佛这些端点应该仅供内部/高级用户使用。
在没有任何API令牌或受权标头的状况下直接调用端点会致使:
该网站彷佛未提供任何API,而且我找不到任何生成APItoken的方法,所以我决定稍后进行检查。
在深刻分析以后,我仍然没法在请求或响应中找到单个APItoken。
可是,我注意到许多请求都有authorization头。
我决定只复制authorization头,并将其包含在对我发现的API端点的调用中。
我建立了另外一个账户,并尝试经过api / user / edit的POST请求更改其密码。
瞧!真棒。除了将账户升级为高级用户以外,我还能够成功调用几乎全部其余API端点。
该文档详细说明了删除/接管/建立新账户以及执行其余一些危险操做所需的参数。
我决定直接将该漏洞报告给供应商,结果他们拥有了一个私人漏洞赏金计划,并授予我440美圆的赏金。
谢谢阅读!学习
翻译自medium.com
免责申明:本文由互联网整理翻译而来,仅供我的学习参考,若有侵权,请联系咱们,告知删除。网站