34 lines
3.4 KiB
Markdown
34 lines
3.4 KiB
Markdown
**Server-side request forgery (SSRF)(подделка запроса)**-уязвимость, которая открывает возможность выполнения на стороне сервиса запросы в непреднамеренное место.
|
||
Во время типичной атаки, атакующий может заставить сервер подключиться к внутренним серверам в инфраструктуре организации. В другом случае, атакующий заставляет подключаться к произвольным внешним сервисам, что может привести к утечке данных.
|
||
|
||
## **SSRF** атака на сервера
|
||
|
||
При **SSRF** атаке на сервера, задача атакующего создать запрос назад к серверу, на котором находиться сервис, с помощью **Loopback network interface** (виртуальная сеть, позволяющая серверу взаимодействовать **самому с собой**).
|
||
|
||
Это обычно включает в себя подставку ссылки вида `127.0.0.1` или `localhost`.
|
||
|
||
Например, представим себе сервис, который позволяет смотреть, в наличии ли товар в выбранном магазине. Что бы получить информацию, приложение должно сделать запрос через различные `Rest APIs`. Оно делает это путем подстановки ссылки в релевантный `API` эндпоинт с помощью `HTTP` запроса с фронта сайта. Когда юзер видит статус о наличии, браузер создает такой запрос:
|
||
```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` :
|
||
```http
|
||
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**
|
||
|
||
```http
|
||
POST /product/stock HTTP/1.0
|
||
Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://192.168.0.68/admin
|
||
```
|
||
|