代码之家  ›  专栏  ›  技术社区  ›  Andrew Grimm Alex Wayne

如何测试应用程序是否易受链轮漏洞的攻击?

  •  4
  • Andrew Grimm Alex Wayne  · 技术社区  · 7 年前

    如果rails应用程序易受链轮漏洞cve-2018-3760的攻击,我应该运行哪个web请求来测试?

    我已经做了一些必要的修改,应该可以避免这个问题,但是我想通过查看在安全版本和非安全版本上都发生了什么来测试它

    我试过了 http://localhost:3000/assets/file:%2f%2f///Users/agrimm/rails/sprockets_replication/README.rdoc 在一个使用谷歌浏览器的开发机器上运行在生产模式中的示例Rails应用程序,但是它甚至没有使用不安全版本的链轮来检索文件。 config.assets.compile = true 在里面 production.rb .(如果web请求的路径是错误的,我不会感到惊讶-这是一个有点疯狂的猜测)

    也不是 https://blog.heroku.com/rails-asset-pipeline-vulnerability 也不是 https://groups.google.com/forum/#!topic/rubyonrails-security/ft_J--l55fM 给出了如何测试漏洞的示例。

    1 回复  |  直到 7 年前
        1
  •  4
  •   xploshioOn    7 年前

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

    /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 
    

    或者所有的资产文件夹gems都不起作用。

    所以你正在尝试的那个不起作用,因为它会抛出一个错误 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链轮更新为3.7.2之后, config.assets.compile = true 并尝试再次访问相同的地址,您将看到一个页面,只是说 forbidden 没有别的了。

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