Azure 机器学习服务上已验证的 SSRF 漏洞

Azure 机器学习服务上已验证的 SSRF 漏洞

枇杷五星加强版 黑伞安全 2023-06-27 18:03

我们如何发现 SSRF 漏洞

首先,我们通过https://ml.azure.com
端点在 Azure 机器学习服务中创建了一个新工作区

创建后,我们导航到“数据”
仪表板,将各种资产上传到我的工作区。
我们单击左侧窗格菜单中的数据仪表板,然后选择“创建”
 –

在 Create Data asset Wizard 中,我们为新资产命名并选择 File(uri_file) 并点击 Next。

我们继续选择“来自 URI”以上传我新指定的文件 –

然后,我们指定了一个示例 HTTPS 端点(也可以是 HTTP)并点击下一步(在此之前我们切换了“跳过数据验证
”——

最后我们点击“创建”——

在点击 Create 之前,我们确保我的 Intercept 设置为 ON –

我们看到第一个请求是
/saveddatasets/tieredpreview。

我们寻找进一步的请求。

第二个请求是 – https://ml.azure.com/api/eastus2/data/v2.0/subscriptions/5cd1*- *c611/resourceGroups/lidor-rg/providers/Microsoft.MachineLearningServices/workspaces/ssrf/datacall/preview

此请求正在通过/datacall/preview 传递。与我接下来将重点关注的流内容端点类似,预览端点在其响应中使用“路径”+“文件名”方案 –

虽然
流内容
使用了“路径+内容”模式——

通过的最终端点是
/datacall/streamcontent?streamInfoColumnName=Path&maxBytes=5000000

我们可以看到发送的 POST 请求包含以下正文 –

然后我们可以删除所有不相关的参数,除了“ 
dataUri
 ”——

我向服务器发送了上面的请求,并收到了下面的响应——

响应内容是 Base64 格式,所以我们对其进行了解码——

我们向https://orca.security
端点发送了一个新请求
——

再一次,解码响应为我们提供了网站的内容——

从上面的 base64 解码可以看出,我们能够通过 SSRF 漏洞检索任何端点。