3.4 KiB
Server-side request forgery (SSRF)(подделка запроса)-уязвимость, которая открывает возможность выполнения на стороне сервиса запросы в непреднамеренное место. Во время типичной атаки, атакующий может заставить сервер подключиться к внутренним серверам в инфраструктуре организации. В другом случае, атакующий заставляет подключаться к произвольным внешним сервисам, что может привести к утечке данных.
SSRF атака на сервера
При SSRF атаке на сервера, задача атакующего создать запрос назад к серверу, на котором находиться сервис, с помощью Loopback network interface (виртуальная сеть, позволяющая серверу взаимодействовать самому с собой).
Это обычно включает в себя подставку ссылки вида 127.0.0.1 или localhost.
Например, представим себе сервис, который позволяет смотреть, в наличии ли товар в выбранном магазине. Что бы получить информацию, приложение должно сделать запрос через различные Rest APIs. Оно делает это путем подстановки ссылки в релевантный API эндпоинт с помощью HTTP запроса с фронта сайта. Когда юзер видит статус о наличии, браузер создает такой запрос:
POST /product/stock HTTP/1.0
Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://stock.weliketoshop.net:8080/product/stock/check%3FproductId%3D6%26storeId%3D1
Это позволяет серверу сделать запрос к конкретной ссылке, получив и вернув пользователю статус.
В данном случае, атакующий может заменить строчку stokApi :
POST /product/stock HTTP/1.0
Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://localhost/admin
SSRF атака через другие backend системы
В большинстве случаев, сервер сервиса меет возможность взаимодействовать с backend системы, которые напрямую не доступны пользователям. Такие системы обычно имеют не-маршрутизируемые приватные IP адресы. Back-end системы обычно защищены сетевой топологией, которые часто имеют уязвимости.
Представим, что в прошлом примере панель администратора быда на приватном IP
POST /product/stock HTTP/1.0
Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://192.168.0.68/admin