Эксплуатация SSRF для доступа с правами админа

Эксплуатация SSRF для доступа с правами админа

SHADOW:Group
Эта статья носит исключительно образовательный характер. Автор не несет ответственности за любые последствия ее прочтения.

Введение

Подделка запросов на стороне сервера (SSRF) - это атака, при которой злоумышленник может заставить уязвимый сервер инициировать вредоносные запросы к сторонним серверам и/или внутренним ресурсам.

Как правило, злоумышленник имеет полный или частичный контроль над отправляемым запросом, и сервер обрабатывает этот запрос без какой-либо проверки.

Применение

SSRF можно использовать для запросов к другим внутренним ресурсам, которые находятся за брандмауэром или не являются общедоступными.

Рассмотрим схему ниже.

  • Злоумышленник пытается получить доступ к внутреннему серверу, но доступ запрещен, поскольку брандмауэр блокирует прямой доступ к внутреннему серверу.
  • Теперь, злоумышленник пытается получить доступ к общедоступному серверу. Он пытается создать запрос на общедоступном сервере, который отправит запрос на внутренний сервер.
  • Внутренний сервер ответит на созданный запрос, поскольку он отправляется внутренними ресурсами
  • Используя вышеуказанные шаги, злоумышленник получил доступ к внутреннему серверу, к которому он не мог получить доступ на шаге 1.

Сценарии атаки:

Сканирование портов

Сканирование портов на внутренних узлах, защищенных брандмауэром, позволяет злоумышленнику атаковать систему за брандмауэром для выполнения сканирования портов. По разнице в ответах злоумышленники могут сделать вывод об открытых и закрытых портах.

Определение сервисов и выявление конфиденциальной информации

Атакующий может определить версию SSH, DICT, SFTP и других протоколов, после чего отправить запрос на сервер, контролируемый злоумышленником. Аналогично можно запросить и другие сервисы, такие как FTP, DICT, GOPHER, ... и определить их версии.

Атака на внутренние приложения

Можно найти уязвимые параметры во внутренних сервисах или другие возможные уязвимости. Таким образом, злоумышленник может получить доступ к внутренним приложениям, манипулируя параметрами в запросе.

Доступ к файлам

Злоумышленник может получить доступ к файлам с локального веб-сервера с помощью обработчика файлов:

file:///etc/passwd

Пример эксплуатации

Наша цель - получить доступ к панели администратора и удалить одного из пользователей, недоступных извне.

Это приложение имеет стандартные функции, которые извлекают данные из внутренней системы. Интерфейс администратора находится по адресу

http://localhost/admin

Теперь перехватываем запрос через Burp:

Запрос:

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

Отправим этот запрос ретранслятору и попробуем изменить параметр стандартного API.

Изменённый запрос и ответ на него:

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

Попробуем заменить URL-адрес stockApi на ссылку для удаления пользователя и проверим результат.

Запрос:

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

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

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

На этом все, благодарю за просмотр!

Подпишись на канал - @shadow_group_tg

Report Page