Mutt
Professional
- Messages
- 1,056
- Reaction score
- 644
- Points
- 113
Эта статья носит исключительно образовательный характер. Автор не несет ответственности за любые последствия ее прочтения.
Введение
Подделка запросов на стороне сервера (SSRF) - это атака, при которой злоумышленник может заставить уязвимый сервер инициировать вредоносные запросы к сторонним серверам и/или внутренним ресурсам.
Небольшое описание и пример возможностей данной уязвимости на реальном сайте.
Как правило, злоумышленник имеет полный или частичный контроль над отправляемым запросом, и сервер обрабатывает этот запрос без какой-либо проверки.
Применение
SSRF можно использовать для запросов к другим внутренним ресурсам, которые находятся за брандмауэром или не являются общедоступными.
Рассмотрим схему ниже.

- Злоумышленник пытается получить доступ к внутреннему серверу, но доступ запрещен, поскольку брандмауэр блокирует прямой доступ к внутреннему серверу.
- Теперь, злоумышленник пытается получить доступ к общедоступному серверу. Он пытается создать запрос на общедоступном сервере, который отправит запрос на внутренний сервер.
- Внутренний сервер ответит на созданный запрос, поскольку он отправляется внутренними ресурсами
- Используя вышеуказанные шаги, злоумышленник получил доступ к внутреннему серверу, к которому он не мог получить доступ на шаге 1.
Сценарии атаки:
Сканирование портов
Сканирование портов на внутренних узлах, защищенных брандмауэром, позволяет злоумышленнику атаковать систему за брандмауэром для выполнения сканирования портов. По разнице в ответах злоумышленники могут сделать вывод об открытых и закрытых портах.
Определение сервисов и выявление конфиденциальной информации
Атакующий может определить версию SSH, DICT, SFTP и других протоколов, после чего отправить запрос на сервер, контролируемый злоумышленником. Аналогично можно запросить и другие сервисы, такие как FTP, DICT, GOPHER, ... и определить их версии.
Атака на внутренние приложения
Можно найти уязвимые параметры во внутренних сервисах или другие возможные уязвимости. Таким образом, злоумышленник может получить доступ к внутренним приложениям, манипулируя параметрами в запросе.
Доступ к файлам
Злоумышленник может получить доступ к файлам с локального веб-сервера с помощью обработчика файлов:
file:///etc/passwd
Пример эксплуатации
Наша цель - получить доступ к панели администратора и удалить одного из пользователей, недоступных извне.
Это приложение имеет стандартные функции, которые извлекают данные из внутренней системы. Интерфейс администратора находится по адресу
Теперь перехватываем запрос через Burp:
Запрос:

Здесь мы ясно видим, что в теле «stockApi» передаётся URL и мы полностью контролируем этот параметр, а значит можем изменять его так, как захотим.
Отправим этот запрос ретранслятору и попробуем изменить параметр стандартного API.
Изменённый запрос и ответ на него:

На скриншоте выше видим, что, изменив запрос, мы можем получить доступ к панели администратора. У нас есть три имени пользователя с соответствующими URL-адресами для удаления существующей учетной записи.
Попробуем заменить URL-адрес stockApi на ссылку для удаления пользователя и проверим результат.
Запрос:

После отправки этого запроса получаем 302 (перенаправление):

И, следуя перенаправлению, переходим на URL-адрес администратора с сообщением, что пользователь был удален.

Таким образом, мы получили администраторский доступ и смогли удалить пользователя с помощью SSRF уязвимости.
На этом все, благодарю за просмотр!