长沙企业网站制作,次世代建模培训,软件开发文档包含哪些文档,西安住房城市建设局官网十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418#xff09;
12.1、漏洞原理
Ruby on Rails是一个使用 Ruby 语言写的开源 Web 应用框架#xff0c;它是严格按照 MVC 结构开发的。它努力使自身保持简单#xff0c;来使实际的应用开发时的代码更少#xff0c;使用最少…十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418
12.1、漏洞原理
Ruby on Rails是一个使用 Ruby 语言写的开源 Web 应用框架它是严格按照 MVC 结构开发的。它努力使自身保持简单来使实际的应用开发时的代码更少使用最少的配置。Rails在开发环境下使用Sprockets作为静态文件服务器Sprockets是编译及分发静态资源文件的Ruby库。在Sprockets部分版本中因为二次解码导致的路径穿越漏洞攻击者可以利用该漏洞来跨越到根目录读取或执行目标服务器上任意文件。
12.2、影响范围
4.0.0.beta7 及更低版本、
3.7.1 及更低版本、
2.12.4 及更低版本。
12.3、指纹识别 12.4、漏洞复现 访问/chybeta路径并进行抓包 在Accept构造../../../../../../../../etc/passwd{{ 3.flag位置../../../../../../../../proc/self/environ{{ 12.5、漏洞修复
1、升级版本
Rails任意文件读取漏洞CVE-2019-5418已经被修复。要修复此漏洞您需要升级到Rails版本6.0.3.2更高版本。如果您无法立即升级请考虑使用以下两种方法之一进行临时修复
您可以在应用程序的路由配置文件中添加一个过滤器限制对危险请求的访问。您可以使用以下代码片段将过滤器添加到config/routes.rb文件中
ActionDispatch::Routing::Routes.draw do |map|# ... 其他路由配置 ...map.get /path/to/vulnerable/file, controller: vulnerable, action: indexmap.get /path/to/safe/file, controller: safe, action: indexmap.get /*path, controller: vulnerable, action: invalid_request
end
您还可以使用安全性补丁gem如safe_yaml来过滤用户提供的参数以防止路径穿越攻击。您可以在Gemfile中添加以下行来安装safe_yaml
gem safe_yaml, ~ 1.0.5
然后运行bundle install命令以安装该gem。