Ruby on Rails是一个使用 Ruby 语言写的开源 Web 应用框架,它是严格按照 MVC 结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。Rails在开发环境下使用Sprockets作为静态文件服务器,Sprockets是编译及分发静态资源文件的Ruby库。在Sprockets部分版本中因为二次解码导致的路径穿越漏洞,攻击者可以利用该漏洞来跨越到根目录,读取或执行目标服务器上任意文件。
4.0.0.beta7 及更低版本、
3.7.1 及更低版本、
2.12.4 及更低版本。
3.flag位置:../../../../../../../../proc/self/environ{{
1、升级版本
Rails任意文件读取漏洞(CVE-2019-5418)已经被修复。要修复此漏洞,您需要升级到Rails版本6.0.3.2更高版本。如果您无法立即升级,请考虑使用以下两种方法之一进行临时修复:
ActionDispatch::Routing::Routes.draw do |map| # ... 其他路由配置 ... map.get '/path/to/vulnerable/file', controller: 'vulnerable', action: 'index' map.get '/path/to/safe/file', controller: 'safe', action: 'index' map.get '/*path', controller: 'vulnerable', action: 'invalid_request' end
gem 'safe_yaml', '~> 1.0.5'
然后运行bundle install命令以安装该gem。