移除后仍可访问:未授权资产访问漏洞剖析

本文详细分析了一个常被忽视的安全漏洞:组织成员被移除后仍能通过可预测的URL结构访问新上传的资产文件。文章揭示了依赖UUID混淆而非真正身份验证机制的风险,并强调了实施正确授权控制的重要性。

仍在房间里——移除后的未授权资产访问

我想分享一个简单却常被忽略的漏洞。

最初我以为这只是一个低悬果实——说实话,它确实是——但在多个程序中测试后,我注意到很少收到重复报告。这时我意识到值得分享。

该漏洞允许组织的前成员在被移除后,仍能查看新上传的资产(如图像或代码文件)。虽然他们无法上传任何内容,但仍能访问权限被撤销后上传的文件。

发生这种情况的原因是资产URL是公开可访问的——不需要身份验证。分析资产URL的结构后,我发现即使不再是成员,也能通过一致的URL模式猜测新文件链接。

URL格式通常如下:

1
https://assets.example.com/org-uuid/project-uuid/asset-uuid/123456image.png

那么这里发生了什么?

org-uuid 这是组织的唯一标识符。只要引用同一组织的资产,它通常保持不变。

project-uuid 这是组织内特定项目的UUID。

asset-uuid 这代表资产容器——本质上是存储上传文件的文件夹或路径。我注意到每个项目都有一个固定的资产UUID,不会随时间改变。项目创建后,其中上传的所有文件都使用相同的asset-uuid。这使得曾经有访问权限的攻击者更容易重用该UUID并猜测新文件链接。

123456image.png 这是实际文件名。前缀123456通常是一个6位数字文件ID,随着新文件上传而顺序递增。这部分通常是可预测或可猜测的。

综合分析

分析URL结构后,我注意到org-uuid、project-uuid和asset-uuid总是相同的——只要文件在同一组织和项目下上传,它们就不会改变。

一旦理解了这一点,事情就变得容易多了。

由于这些UUID是静态的,链接中唯一动态的部分是文件ID——一个简单的6位数字。这意味着即使失去成员访问权限,我也可以暴力破解或仅猜测URL的最后部分来访问新上传的资产。

简而言之,我不需要猜测整个URL——只需要文件ID。

结论

这个漏洞是一个清晰的例子,说明依赖混淆——如UUID或复杂URL——并不等同于真正的安全性。对敏感文件的访问必须通过适当的身份验证和授权来保护,尤其是在用户角色变更或账户被移除时。

如果未解决,这样简单的漏洞很容易导致数据泄漏和隐私问题。

保持警惕,永远不要低估小细节。

🔗 HackerOne: https://hackerone.com/0xoroot
🔗 LinkedIn: https://www.linkedin.com/in/0xammaryasser/

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计