在 rails 公共目录中派生文件的自动方法,而无需知道文件名



假设我有一个rails应用程序,并且在public/images目录中的rails应用程序中存储了多个文件。

问:最终用户有没有办法访问存储在public目录中的图像,而无需用户强行猜测图像文件名是什么?

  • 例如:是否有一些技巧可以让用户列出 rails 应用程序的public目录中的所有文件?

我知道您永远不会将敏感文件存储在public目录中,因为它没有访问控制。 我只是好奇是否可以在不知道目录/文件结构的情况下以某种聪明的方式访问public目录内容。 我想知道是否有一种聪明的方法可以在公共目录中派生目录/文件结构。

如果,这是一个很大的"如果",您的服务器配置正确并且没有打开目录索引,那么您无法枚举文件列表。为此,您必须知道如何正确配置服务器。许多服务器,尤其是 Apachehttpd,默认情况下会打开目录索引,因此您必须显式禁用它。您还必须定期测试它是否已禁用,因为有时简单的软件更新可以将设置还原为默认值。

但需要注意的是,无法保证将来不会发生允许目录遍历和枚举的高影响漏洞。如果名称已知,则可以直接检索public中的任何内容。如果存在远程代码执行错误 (RCE(,则可以检索任何其他文件。虽然这种情况非常罕见,但它以前在 Rails 上发生过,并且可能会再次发生。

要防御的攻击是字典攻击,或者如果 ID 值存在模式,则为暴力枚举。使用随机UUID会产生太大的搜索空间,但是像/profile-images/xBv.png这样的短名称会邀请人们进行探测。

相关内容

最新更新