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

Mutt

Professional
Messages
1,056
Reaction score
644
Points
113
Эта статья носит исключительно образовательный характер. Автор не несет ответственности за любые последствия ее прочтения.

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

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

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

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

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

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

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

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

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

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

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

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

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

Запрос:
e4120faf76db84fb7d8ac.png


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

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

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


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

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

Запрос:
f0b47246b5d03cc569cdb.png


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


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


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

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