• 十二、【漏洞复现】Rails任意文件读取(CVE-2019-5418)


    十二、【漏洞复现】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、漏洞复现

    1. 访问/chybeta路径并进行抓包

    1. 在Accept构造../../../../../../../../etc/passwd{{

    3.flag位置:../../../../../../../../proc/self/environ{{

    12.5、漏洞修复

    1、升级版本

    Rails任意文件读取漏洞(CVE-2019-5418)已经被修复。要修复此漏洞,您需要升级到Rails版本6.0.3.2更高版本。如果您无法立即升级,请考虑使用以下两种方法之一进行临时修复:

    1. 您可以在应用程序的路由配置文件中添加一个过滤器,限制对危险请求的访问。您可以使用以下代码片段将过滤器添加到config/routes.rb文件中:
    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
    1. 您还可以使用安全性补丁gem,如"safe_yaml"来过滤用户提供的参数,以防止路径穿越攻击。您可以在Gemfile中添加以下行来安装"safe_yaml":
    gem 'safe_yaml', '~> 1.0.5'

    然后运行bundle install命令以安装该gem。

  • 相关阅读:
    Nacos知识点
    SpringCloud Alibaba微服务实战四 - 限流熔断
    CC1链详解
    Leetcode中等:137. 只出现一次的数字II
    CopyOnWriteArrayList
    马铃薯甲虫的成虫和幼虫数据集(YOLO检测)
    GO 语言的函数??
    联邦学习中的安全多方计算
    Linux系统编程 系统编程概念
    专家建议|2022内容运营的5大SEO错误以及如何避免
  • 原文地址:https://blog.csdn.net/weixin_52351575/article/details/133527786