白帽故事 · 2023年11月7日 0

一次通过Fuzz API发现漏洞的旅程

背景介绍

由于漏洞披露原因,暂将目标网站称为“target.com”。在对目标网站进行漏洞挖掘时,首先的一些必要动作包括:

  • 重置电子邮件获取密码尝试登录,发现是否存在一些逻辑漏洞
  • 在Burp中选择Target -> Scan -> Crawl
  • 在目标网站中,点击任何可以点击的地方

模糊测试

在点击了目标网站中所有可点击的地方后,切换至Burp开始分析所有流量,在逐一查看流量的过程中,发现了一处/api/path/data 的“PATCH”请求,并且该请求包中包含了“语言偏好设置”的参数,如下:

file

于是开始针对该API接口进行模糊测试:

  • Fuzz 请求方法
  • 发送无效的JSON内容
  • 更改内容类型(Content-Type)
  • Fuzz Host、Origin等

不幸的是,每次收到的响应结果都是500…

file

就在准备查看其它流量的时候,突然发现发送空JSON字符串{}后,居然返回了一条错误信息,真可谓“柳暗花明又一村”:

file

虽然也是500错误,但是错误信息却与之前有所不同。

通过对错误信息格式化后,发现包含一个带有“Bearer eyJxxxx”的授权Header,甚至还包含了请求发送到的地址,地址为“https://application.us.auth0.com/api/v2/users/auth0|652xx

通过 Google 搜索找到 auth0 管理 API 更具体的文档:

https://auth0.com/docs/api/management/v2/users/patch-users-by-id

在文档页面中输入令牌后,会显示该令牌可用的所有权限。于是尝试获取用户数据和其它端点,例如列出用户、应用程序、更新用户等,尽管目标只是一个临时应用程序,但仍有大约 300 个用户,其中大多数是 user@company.com 电子邮件。

你学废了么?