vulfocus——rails任意文件读取(CVE-2019-5418)

本文介绍了Ruby on Rails框架的一个安全问题,即通过Accept头利用路径穿越漏洞读取任意文件。攻击者可以利用../../../../进行路径遍历,并用{{闭合模板查询路径,从而将目标文件作为模板解析,暴露敏感信息,如读取passwd文件内容和获取flag。此漏洞的复现步骤包括发送特定请求、抓包和篡改Accept头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

Ruby on Rails[1]是一套使用 Ruby 开发的,非常有生产力、维护性高、容易布署的Web 开发框架,是全世界 Web 应用程式开发的首选框架之一。

每获取一个请求,Ruby On Rails就会使用Render file(没有指定参数)的渲染模式来渲染目标。这样就会在我们攻击的时候,将目标文件当做模板来渲染,然后返回给浏览器。
在控制器中通过render file形式来渲染应用之外的视图,且会根据用户传入的Accept头来确定文件具体位置。我们通过传入Accept: ../../../../../../../../etc/passwd{{头来构成构造路径穿越漏洞,读取任意文件。

(通过“../../../../”来达到路径穿越的目的,然后再通过“{{”来进行模板查询路径的闭合,使得所要访问的文件被当做外部模板来解析。)

复现

2.访问chybeta文件并抓包

3.传入Accept: ../../../../../../../../etc/passwd{{ 漏洞复现成功,成功读取到passwd文件的内容:


4.通过传入Accept: ../../../../../../../../proc/self/environ{{   获得flag

 

Rails 任意文件读取CVE-2019-5418),也称为RCE漏洞,是一个安全漏洞,它允许攻击者利用服务器的应用程序,比如Ruby on Rails框架,通过恶意请求来访问系统中的敏感文件。这个漏洞主要是由于Rails的`ActionView::Template#render_file`方法没有正确验证文件路径导致的。 解决这个问题通常涉及以下几个步骤: 1. **应用更新**:首先,确保你的Rails应用程序已经更新到最新版本,因为许多早期版本包含该漏洞修复。 ```bash bundle update rails ``` 2. **安全配置**:检查并强化`config/application.rb`中的`asset_host`和`public_send_whitelisted_headers`设置。移除`send_data`的白名单或仅限于特定路径,防止未授权访问。 ```ruby config.action_controller.allow_forgery_protection = true config.action_controller.public_send_whitelisted_headers << 'Content-Disposition' config.action_view.static_template_path = nil # 如果有自定义静态文件夹 ``` 3. **限制文件路径**:对用户输入进行严格的文件路径验证,并只允许从预定义的安全目录加载。 4. **启用安全模式**:如果你的环境支持,可以在开发阶段开启Rails的安全模式,这将禁用动态部分和文件渲染。 ```ruby config.action_controller.perform_caching = false ``` 5. **防火墙规则**:确保服务器级别的防火墙规则阻止未经授权的外部访问。 6. **安全审计**:定期审查日志,监控异常访问尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值