Обход фильтра SSRF

May 07 2023
Здравствуйте, меня зовут W1C3, и сегодня я собираюсь объяснить, как получить произвольный доступ для чтения файлов с помощью подделки запросов на стороне сервера (SSRF) в обход фильтра. Эта задача была разработана для WaniCTF.

Здравствуйте, меня зовут W1C3, и сегодня я собираюсь объяснить, как получить произвольный доступ для чтения файлов с помощью подделки запросов на стороне сервера (SSRF) в обход фильтра. Эта задача была разработана для WaniCTF .

Имя

Скриншот

Описание

Приложение, которое делает скриншоты ваших любимых веб-сайтов.

Прохождение

При доступе к веб-сайту можно заметить, что это очень простая страница. Его единственная функциональность — получение URL-адреса, доступ к URL-адресу с помощью веб-браузера и создание снимка экрана.

Простое приложение для скриншотов

В этой задаче, поскольку исходный код предоставляется, мы видим, что он выполняет проверку, которую нам нужно обойти, поскольку « HTTP » должен быть включен в наш запрос, а « FILE » не может быть включен.

Обзор кода сервера

Чтобы убедиться в этом, мы попытаемся прочитать файл /etc/passwd , но безуспешно.

Попытка идентифицировать SSRF

Как мы упоминали ранее, фильтр, который нам нужно обойти, должен либо содержать строку « http », либо не включать строку « file ».

Идентификация SSRF

Теперь, когда мы находимся на предыдущем шаге, зная, что SSRF существует, и понимая фильтр, который нам нужно обойти, мы добавим « File:// » в начало и « ../../../../flag. txt » или « ../../../../etc/passwd » до конца. Благодаря этому мы сможем прочитать файл «flag.txt», чтобы выполнить нашу задачу.

ПРИМЕЧАНИЕ . Чтобы обойти фильтр, файл должен содержать хотя бы одну заглавную букву.

Чтение произвольного файла

Чтобы упростить задачу, мы удалим некоторые данные из запроса. В этом случае наша полезная нагрузка будет выглядеть так:

File:///http/../../flag.txt

Заключение

В этой задаче мы продемонстрировали, как обойти простой фильтр, который пытался предотвратить SSRF, запретив « файловый » протокол и потребовав протокол « http ». Тщательно сформировав наш запрос с заглавной буквы в параметре « file » и используя протокол « File:// », мы смогли прочитать произвольные файлы на сервере.

Спасибо за прочтение этого поста. Следите за новыми публикациями в блоге и не стесняйтесь следить за обновлениями в социальных сетях. Также обратите внимание, что на моем личном GitHub будут публиковаться сообщения на испанском языке. До свидания!

Гитхаб: J-W1C3

Твиттер: Josewice7

Телеграмма: W1C3Posts

Присоединяйтесь к моему Telegram-каналу, чтобы быть в курсе, когда публикуются новые сообщения.