Для создания первоклассных фото-обоев в нашем городе сделали сервис, который позволяет печатать сайты как pdf.
Даже защиту от хакеров поставили.
Нужен deploy на команду (внутри возможно взять чужой эксплойт).
cd deploy
docker-compose up --build -d
Архив из директории public/ и IP:PORT сервера
Сервис представляет из себя простой PDF-er веб-страниц с помощью google chrome.
Внутри есть большое количество защит от SSRF (редиректы, dns, протокол).
Задача - прочитать файл /etc/flag .
Основная суть решения - получение доступа к chrome-devtools-protocol через SSRF. Доступ к CDP позволяет открывать новые вкладки, в том числе с нужным нам файлом.
Авторское решение:
- Обойти проверку на SSRF используя 8-ричную форму IP, тем самым сделать запрос на CDP и открыть вкладку с file:///etc/flag. (localhost:9222/json/new?file:///etc/flag).
- Используя любой внешний ресурс (свой сервер), сделать HTML с кастомным JS, на котором делать запросы на локальный ws:// (так можно и для открытой вкладки выполнить код).
Использовать iframe или редирект внутри своей JS страницы, чтобы попасть на http-endpoint CDP, например localhost:9222/json/new?file:///etc/flag.
Далее см пункт 2 выше.
CUP{cb6bd56d429480027997e151041a0a81}