漏洞复现----15、Ruby on Rails 路径穿越与任意文件读取漏洞(CVE-2019-5418)

本文详细介绍了Ruby on Rails框架的基本原理,特别是其MVC结构。接着,阐述了一个影响所有Rails版本的安全漏洞,该漏洞允许通过修改Accept参数实现文件路径穿越,读取应用之外的文件。修复版本包括Rails 6.0.0.beta3等。文中还给出了漏洞复现的步骤,包括正常访问和利用漏洞读取文件的示例。
摘要由CSDN通过智能技术生成


一、Ruby on Rails 简介

Ruby on Rails(官方简称为 Rails,亦被简称为 RoR),是一个使用 Ruby 语言写的开源 Web 应用框架,它是严格按照 MVC 结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。

Rails 的设计原则包括 “不做重复的事”(Don’t Repeat Yourself)和 “惯例优于设置”(Convention Over Configuration).

控制器接受向应用发起的特定访问请求。路由决定哪些访问请求被哪些控制器接收。一般情况下,一个控制器会对应多个路由,不同路由对应不同动作。动作搜集数据并把数据提供给视图。视图以人类能看懂的格式显示数据。有一点要特别注意,数据是在控制器而不是视图中获取的,视图只是显示数据。默认情况下,视图模板使用 eRuby(嵌入式 Ruby)语言编写,经由 Rails 解析后,再发送给用户。

Rails框架是以固定的命名习惯来自动判断整个架构,默认下会将网址分析成 http://domain-name/ControllerName/ActionName/Attribute/ 然后执行目标Controller中的Action,并取出指定的View(视图)回传给浏览器显示。面对数据库则以Model(模组)的形式,借由Active Record作为与数据库之间的传输接口。


二、漏洞简介

Ruby on Rails:控制器-路由-动作-视图。
Ruby on Rails使用了指定参数的render file来渲染应用之外的视图,且会根据用户传入的Accept头来确定文件具体位置。我们可以通过修改访问某控制器的请求包,通过../../../../来达到路径穿越的目的,然后再通过{{来闭合模板查询路径,那我们访问的文件会被当做外部模板来解析。

影响版本:
	Rails 全版本。
修复版本:
	Rails 6.0.0.beta3、5.2.2.1、5.1.6.2、5.0.7.2、4.2.11.1。

三、漏洞复现

访问http://your-ip:3000/robots可以正常访问robots.txt文件
修改Accept参数进行文件读取
在这里插入图片描述


参考:https://vulhub.org/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李沉肩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值