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

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

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

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

Уязвимость Web Cache Poisoning (Отравление веб-кеша) — скрытая атака на пользователей

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

IlyaMarkinV

Редактор
Редактор
Регистрация
13 Июн 2025
Сообщения
8
Реакции
2
Баллы
3
Сегодня разберём Web Cache Poisoning — атаку, которая позволяет подменять содержимое кеша и травить пользователей вредоносными данными.



Что такое Web Cache Poisoning?
Это когда злоумышленник заставляет сервер или прокси (Cloudflare, Varnish, Nginx) закешировать вредоносный контент, который потом показывается другим пользователям.

Чем опасна?

- XSS для всех пользователей (через кешированный JavaScript)
- Дефейс сайта (подмена страниц)
- Кража данных (внедрение кейлоггеров)
- Обход CSP и других защит


Как работает кеширование?


1. Пользователь запрашивает страницу
2. Сервер или CDN сохраняет ответ в кеш
3. Следующие пользователи получают закешированную версию

Если атакующий подменит ответ до кеширования — все увидят его вредоносную версию!


Пример атаки

1. Подмена заголовков (XSS через X-Forwarded-Host)

Допустим, сайт использует кеширующий прокси (Nginx, Cloudflare) и доверяет заголовку
Код:
X-Forwarded-Host
.

Шаги атаки:

1. Атакующий отправляет запрос:
Код:
http
GET / HTTP/1.1
Host: example.com
X-Forwarded-Host: evil.com
2. Сервер подставляет
Код:
evil.com
в страницу:
Код:
html
<script src="https://evil.com/malicious.js"></script>
3. Прокси кеширует этот ответ
4. Все пользователи получают XSS из evil.com!

2. Кеширование ошибок (Дефейс через 404)
Если сайт кеширует страницы с ошибками (например,
Код:
404 Not Found
), можно:

1. Создать несуществующий URL:
Код:
http
GET /nonexistent-path HTTP/1.1
Host: example.com
2. Сервер возвращает
Код:
404
с кастомным HTML
3. Атакующий подменяет
Код:
Host
и внедряет вредоносный контент:
Код:
http
GET /nonexistent-path HTTP/1.1
Host: evil.com
4. Если кеш сохранит это — пользователи увидят поддельную страницу вместо 404


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

1. Не кешируйте динамические ответы


- Отключайте кеш для страниц с:

- Персональными данными (
Код:
/profile
,
Код:
/cart
)
- CSRF-токенами
- Пользовательскими сессиями


Код:
nginx
location /account {
    proxy_cache off;
    add_header Cache-Control "no-store";
}

2. Игнорируйте подозрительные заголовки
Не доверяйте:

-
Код:
X-Forwarded-Host
-
Код:
X-Forwarded-Proto
-
Код:
CF-Connecting-IP
(если не используете Cloudflare)

3. Валидация ключей кеша
Кеш должен учитывать все важные параметры:

-
Код:
Host
-
Код:
User-Agent
(если контент зависит от устройства)
-
Код:
Accept-Language

Код:
vcl
sub vcl_hash {
    hash_data(req.http.Host);
    hash_data(req.url);
    hash_data(req.http.User-Agent);
}

4. Очистка кеша при аномалиях
Если обнаружена атака — полностью сбросьте кеш:
Код:
bash
varnishadm ban 'req.url ~ "."'


Вывод
Web Cache Poisoning — это тихая, но опасная уязвимость, которая может массово заражать пользователей, тема в образовательных целях для защиты от данных угроз, берегите себя.
 
Последнее редактирование модератором:
Сверху Снизу