WAF Cloudflare — Мощный барьер, как инструмент, но не панацея.
В этой статье мы коротко, по существу, разберём, как именно это делается, как развивается атака после обхода.
Вот вам рабочий чек-лист:
В этой статье мы коротко, по существу, разберём, как именно это делается, как развивается атака после обхода.
Вот вам рабочий чек-лист:
1. Поиск реального IP-адреса (origin-сервера)
Если найден истинный IP, стоящий за Cloudflare, весь WAF теряет смысл. Атакующие ищут его так:
- Исторические DNS-записи (SecurityTrails, ViewDNS) — старый IP мог сохраниться после переезда домена.
- SSL-сертификаты — crt.sh раскрывает IP, на которые выписывались сертификаты до подключения Cloudflare.
- Почтовые заголовки — письма с сайта (сброс пароля, уведомления) часто содержат прямой IP сервера.
- Сканирование диапазонов хостинг-провайдера — ищут сервер с тем же контентом, но без фильтрации.
Нередко даже не требуется искать IP — достаточно найти неправильно настроенный элемент инфраструктуры:
- Поддомены без прокси: dev, api, staging часто указывают прямо на сервер, минуя WAF.
- Нестандартные порты: открытые напрямую 8082, 9090 и другие не фильтруются Cloudflare.
- Нестандартные HTTP-методы: WAF жёстко проверяет GET/POST, но PUT, PATCH, CONNECT с вредоносным телом могут проходить беспрепятственно.
Когда трафик идёт через WAF, нагрузку превращают в невидимую для сигнатур:
- SQL-инъекции: кастомные тамперы SQLMap используют двойное URL-кодирование, комментарии внутри команд (sel/**/ect), Unicode-трюки.
- XSS: генераторы тысяч вариантов с HTML-сущностями, обходами через нетривиальные обработчики событий.
- Особенности бэкенда: под конкретный язык применяются специфические приёмы (преобразование типов в PHP, прототипное загрязнение в Node.js).
Cloudflare включает проверки при подозрительной активности. Обходятся они так:
- Ботнеты из тысяч домашних роутеров и IoT — низкая частота запросов с каждого IP.
- Резидентные прокси — IP реальных пользователей, арендованные через вредоносные сети.
- Медленные атаки (Low & Slow) — запросы растягиваются на минуты, таймауты не срабатывают.
- Headless-браузеры — полная эмуляция браузера с выполнением JavaScript для прохождения челленджей.
Самые опасные векторы вообще не затрагивают сигнатуры:
- Массовое присвоение параметров — добавление "role":"admin" в JSON-запрос.
- Небезопасная десериализация — вредоносный объект в base64, который WAF считает безобидной строкой.
- Race conditions — одновременная отправка запросов к операциям списания или начисления бонусов.
- GraphQL-атаки — интроспекция и пакетные мутации, которые плохо анализируются фильтром.
Сам по себе обход — только половина дела. Дальше начинается реальная компрометация. Вот как развиваются события:
- SQL-инъекция → слив базы. Через UNION-запросы вытягиваются таблицы с логинами, паролями, платёжными данными.
- RCE через загрузку файла. Полиглот или файл с двойным расширением обходит проверки, загружается веб-шелл и выполняется код на сервере.
- Эксплуатация десериализации. Вредоносный объект в куке приводит к выполнению системной команды при распаковке приложением.
- Массовое присвоение → права администратора. Изменение роли через поле в запросе открывает доступ ко всей системе.
- GraphQL → массовая утечка. Один запрос к /graphql выкачивает всю базу пользователей.
- Race conditions → финансовые потери. Мгновенное начисление бонусов или многократное списание.
А главное - Умеешь защищаться, можешь и атаковать. Кнопки "Взломать", понятное дело пока не существует (пока), иногда нужно также уметь включать собственную фантазию.