Добро пожаловать на BlackSAMP - ФОРУМ

  • Приватные и секретные разделы доступны только зарегистрированным пользователям.

    Вся важная информация в нашем ТГ: t.me/gtablack

    На данном форуме запрещено публиковать контент нарушающий Российское законодательство, за это последует блокировка ФА.

Уязвимость Server-Side Request Forgery (SSRF) — атака изнутри

Количество просмотров: 80

IlyaMarkinV

Редактор
Редактор
Регистрация
13 Июн 2025
Сообщения
6
Реакции
2
Баллы
3
Сегодня разберём SSRF — уязвимость, которая позволяет злоумышленнику заставить сервер делать HTTP-запросы от своего имени.


Что такое SSRF?
Server-Side Request Forgery
— это когда злоумышленник может отправить с сервера произвольный запрос (например, к внутренней сети или облачным метаданным).

Чем опасен SSRF?

- Чтение внутренних сервисов (базы данных, Redis, Jenkins)
- Обход файервола (атака на localhost или 127.0.0.1)
- Кража данных из облачных метаданных (AWS, Google Cloud, Azure)
- Взаимодействие с уязвимыми внутренними API


Пример уязвимого кода
Допустим, есть сервис, который загружает изображение по URL:

Код:
python
from flask import Flask, request
import requests

app = Flask(__name__)

@app.route('/fetch_image')
def fetch_image():
    url = request.args.get('url') # Уязвимость!
    response = requests.get(url)
    return response.content

Злоумышленник может передать вместо URL:

-
Код:
http://localhost/admin
(доступ к внутренней админке)
-
Код:
file:///etc/passwd
(чтение системных файлов)
-
Код:
http://169.254.169.254/latest/meta-data/
(AWS-метаданные)


Реальные сценарии атак

1. Облачные метаданные (AWS, Azure, GCP)

В облачных сервисах есть специальные IP-адреса для управления виртуальными машинами:

- AWS:
Код:
http://169.254.169.254/latest/meta-data/
- Google Cloud:
Код:
http://metadata.google.internal/computeMetadata/v1/
- Azure:
Код:
http://169.254.169.254/metadata/instance

Если сервер работает в облаке, злоумышленник может украсть ключи API, токены IAM и даже получить shell.

2. Атака на внутренние сервисы
Если сервер находится в корпоративной сети, можно:

- Сканировать порты (
Код:
http://internal-db:3306
)
- Эксплуатировать уязвимые внутренние сервисы (Redis, Jenkins, MongoDB)
- Провести RCE через уязвимые внутренние API

3. Blind SSRF (слепая атака)

Если ответ не возвращается, но запрос выполняется, можно:

- Использовать DNS-логгеры (Burp Collaborator, interact.sh)
- Запускать таймерные атаки (например,
Код:
http://internal-service:8080?delay=5000ms
)


Как защититься?

1. Валидация URL


- Запрещать
Код:
localhost
,
Код:
127.0.0.1
,
Код:
file://
,
Код:
gopher://
- Разрешать только белые списки доменов

Код:
python
allowed_domains = ['example.com', 'trusted-cdn.net']
if not any(url.startswith(f'http://{domain}') for domain in allowed_domains):
    raise ValueError("URL not allowed")

2. Использование "защищённых" HTTP-клиентов

- Python:
Код:
requests
+
Код:
no_proxy=True
- Node.js:
Код:
axios
с отключенным
Код:
followRedirects

3. Облачные защиты

- AWS:
Код:
IMDSv2
(требует заголовок
Код:
X-aws-ec2-metadata-token
)
- Kubernetes: Ограничение доступа к
Код:
metadata-dns

4. WAF и сетевые ограничения

- Блокировать запросы к внутренним IP-адресам
- Использовать Cloudflare, AWS Shield


Вывод

SSRF — одна из самых недооценённых уязвимостей. Она может привести к полному компрометированию инфраструктуры, особенно в облачных средах.
 
Сверху Снизу