【问题标题】:How do I test whether an app is vulnerable to the sprockets vulnerability?如何测试应用程序是否容易受到 sprockets 漏洞的影响?
【发布时间】:2023-03-12 13:36:01
【问题描述】:

我应该运行什么 Web 请求来测试 Rails 应用程序是否容易受到 sprockets 漏洞 CVE-2018-3760 的攻击?

我已经进行了必要的更改以使其免受该问题的影响,但我想通过查看在安全版本和非安全版本上发生的情况来测试它

我在使用 Google Chrome 的开发机器上以生产模式运行的示例 Rails 应用程序上尝试了 http://localhost:3000/assets/file:%2f%2f///Users/agrimm/rails/sprockets_replication/README.rdoc,但即使使用不安全版本的 sprocket 和 production.rb 中的 config.assets.compile = true,它也无法检索文件。 (如果网络请求的路径错误,我不会感到惊讶 - 这有点疯狂)

https://blog.heroku.com/rails-asset-pipeline-vulnerabilityhttps://groups.google.com/forum/#!topic/rubyonrails-security/ft_J--l55fM 均未提供如何测试漏洞的示例。

【问题讨论】:

  • 你有config.assets.compile = true吗? patch 在测试中包含 get "assets/file:%2f%2f//#{absolute_path}/foo.js",因此看起来您使用该 URL 走在正确的轨道上。
  • @muistooshort 是的,感谢您的提问,并添加到问题中。

标签: ruby-on-rails security sprockets


【解决方案1】:

请记住,这适用于资产,因此请尝试使用资产文件夹之外的文件,例如

/path/to/project/folder/app/assets/config 
/path/to/project/folder/app/assets/images 
/path/to/project/folder/app/assets/javascripts 
/path/to/project/folder/app/assets/stylesheets 
/path/to/project/folder/vendor/assets/javascripts 
/path/to/project/folder/vendor/assets/stylesheets 

否则所有资产文件夹 gem 都不起作用。

所以你尝试的那个不会工作,因为它会抛出Sprockets::FileOutsidePaths的错误,它甚至识别出该文件存在,因为如果你在日志上看到,有一个

Sprockets::FileOutsidePaths (/path/to/project/folder/README.md is no longer under a load path)

如果它不存在,你会看到一个错误

Sprockets::FileNotFound (could not find file)

所以你走在正确的道路上,但需要尝试使用列出的文件夹中的资产文件,例如:

localhost:3000/assets/file:%2f%2f///path/to/project/folder/app/assets/stylesheets/devise.css

您将看到浏览器返回的资产。

在将 gem sprockets 更新到 3.7.2 后,使用 config.assets.compile = true 并尝试再次访问相同的地址,您将看到一个仅显示 forbidden 的页面。

我对本地测试的结论,以及这些说明,您可以测试作为问题目标的漏洞

【讨论】:

  • 谢谢。看起来我的问题的另一个因素是我使用的是(非常)旧版本的 Rails,由于某种原因似乎没有受到影响。我创建的复制也使用了旧版本的 Rails。当我使用最新版本的 Rails 创建应用程序时,我能够重现该漏洞。
猜你喜欢
  • 2022-11-11
  • 2015-01-01
  • 2022-01-21
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多