描述
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