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

Mutt

Professional
Messages
1,057
Reputation
7
Reaction score
583
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