Как узнать реальный IP сайта за CDN и Cloudflare
Как узнать реальный IP сайта, если он спрятан за CDN или WAF? Сегодня подавляющее большинство сайтов работает через такие системы, что заметно усложняет их тестирование.

Как WAF, так и CDN скрывают настоящий IP-адрес сайта, и один из самых надёжных способов обойти WAF целиком — это узнать реальный IP сайта и обращаться к серверу напрямую, минуя защитный слой.
Как работают WAF и CDN
WAF функционирует как прокси-сервер, который анализирует входящие запросы и решает, пропустить их к реальному серверу или заблокировать. Именно поэтому настоящий адрес сервера оказывается скрыт за WAF — весь трафик проходит через промежуточный узел.

CDN устроен иначе: его основная задача — доставка контента пользователям с минимальной задержкой и снижение нагрузки на основной сервер. Серверы CDN распределены по всему миру, и пользователь автоматически подключается к географически ближайшему из них, откуда и получает закэшированный ответ. Как и WAF, CDN тоже скрывает реальный IP-адрес сайта и попутно обеспечивает защиту от DDoS-атак.
Как определить, используется ли на сайте WAF или CDN
Стандартные инструменты для детекта WAF/CDN работают по принципу анализа ответа сервера: в запрос подставляется базовая полезная нагрузка вроде <script>alert(1)</script>, после чего проверяется реакция — не начал ли WAF блокировать или иначе помечать запрос. Проблема в том, что такой подход срабатывает не всегда.
Часть WAF-решений настроена так, что явно не сообщает о блокировке запроса — внешне ответ выглядит обычным, без сообщений вроде «Ваш запрос заблокирован». Показательный пример — встроенный WAF в Bitrix: он определяет потенциально вредоносный запрос, автоматически нейтрализует опасную часть и передаёт уже безопасную версию на сервер, из-за чего атака просто теряет смысл, а видимых признаков блокировки при этом не возникает. Такое поведение стоит учитывать при тестировании — отсутствие явного отказа ещё не означает отсутствие защиты.
Wappalyzer — быстрый способ определить технологии сайта
Один из самых простых и быстрых методов первичного анализа — расширение Wappalyzer. Инструмент настолько универсален, что регулярно фигурирует в материалах по разведке технологий, применяемых на сайте.
Для задачи определения WAF/CDN у Wappalyzer есть существенное ограничение — он анализирует технологии довольно приблизительно, в основном по заголовкам ответа. Тем не менее в качестве быстрой первичной проверки в один клик — есть ли на сайте вообще признаки WAF или CDN — он вполне подходит. Если сигналов не обнаружено, имеет смысл переходить к более специализированному инструменту.
WhatWaf — детальное определение типа WAF
WhatWaf — один из наиболее эффективных инструментов среди аналогов для обнаружения и определения конкретного типа WAF на целевом сайте. Его преимущество складывается из нескольких факторов.

Большая база payload’ов. Инструмент использует широкий набор стандартных полезных нагрузок — XSS, SQLi и другие типы атак, — способных спровоцировать реакцию WAF, причём под каждый конкретный WAF применяется свой набор триггеров.
Встроенные tamper-скрипты. WhatWaf содержит собственные tamper-скрипты для попыток обхода обнаруженного WAF, причём часть из них совместима и с sqlmap — таким образом, один прогон инструмента параллельно даёт материал для дальнейшей работы с sqlmap.
Дополнительный функционал. У инструмента есть встроенная база ранее проверенных сайтов, кэшируемая локально, а также ряд других вспомогательных возможностей. Перед использованием стоит внимательно изучить официальную документацию проекта, чтобы задействовать весь функционал инструмента.
WafW00f — быстрое обнаружение WAF при массовом тестировании
WafW00f — ещё один инструмент для обнаружения WAF, который отличается высокой скоростью работы. Особенно удобен на этапе первичной фильтрации целей: например, при массовом сборе ссылок через Google Dorks инструмент позволяет быстро отсеять из общего списка все таргеты, защищённые файрволом, и сосредоточиться на менее защищённых целях.

Поиск через IoT-поисковики (Shodan, Censys, FOFA и аналоги)
IoT-поисковики — специализированные поисковые системы, которые непрерывно сканируют интернет и индексируют информацию об устройствах, серверах и сервисах, доступных в сети. Наиболее известные примеры — Shodan и ZoomEye, но подобных сервисов существует значительно больше, и каждый из них полезен для поиска реального IP-адреса сайта за CDN.
Как составлять поисковые запросы (дорки)
Общий принцип построения запросов одинаков для большинства подобных сервисов:
- вместо
site.comподставляется исследуемый домен; - вместо
Example Title— заголовок страницы (тег<title>в исходном коде, который удобно скопировать через просмотр исходного кода страницы); - дополнительно стоит проверить исходный код страницы (
Ctrl+U) на наличие уникальных фрагментов — специфичных комментариев, необычно названных файлов и других характерных элементов, которые можно использовать как поисковый запрос.
Shodan
ssl:site.com
hostname:site.com
http.title:"Example Title"
http.html:"text"
ZoomEye
hostname=site.com
title="Example Title"
http.body="text"
site="site.com"
Censys
Censys работает несколько иначе: специальных поисковых операторов здесь нет, достаточно ввести домен в поисковую строку и проверить результаты во вкладках Hosts и Certificates.
FOFA
cert.subject.cn="site.com"
cert="site.com"
host="site.com"
domain="site.com"
title="Example Title"
body="text"
Netlas
certificate.names:site.com
host:site.com
http.title:"Example Title"
http.body:"ключевое слово из сайта"
Hunter.how
cert.subject=="site.com"
domain=="site.com"
web.title=="Example Title"
web.body=="ключевое слово из сайта"
Более полный список аналогичных сервисов доступен в открытом репозитории awesome-ip-search-engines, хотя на практике перечисленных выше сервисов обычно достаточно для решения большинства задач.
Скрипт для автогенерации дорков
Ниже — небольшой Python-скрипт, который по введённому домену, заголовку страницы и ключевому слову автоматически формирует готовые поисковые запросы сразу для всех перечисленных сервисов:
def main():
domain = input("Введите домен (например, site.com): ").strip()
title = input("Введите title (например, Example Title): ").strip()
body = input("Введите ключевое слово из текста страницы: ").strip()
print("\n=== Shodan ===")
print(f"ssl:{domain}")
print(f"hostname:{domain}")
print(f'http.title:"{title}"')
print(f'http.html:"{body}"')
print("\n=== ZoomEye ===")
print(f"site={domain}")
print(f"hostname={domain}")
print(f'title="{title}"')
print(f'http.body="{body}"')
print("\n=== FOFA ===")
print(f'cert.subject.cn="{domain}"')
print(f'cert="{domain}"')
print(f'host="{domain}"')
print(f'domain="{domain}"')
print(f'title="{title}"')
print(f'body="{body}"')
print("\n=== Netlas ===")
print(f"certificate.names:{domain}")
print(f"host:{domain}")
print(f'http.title:"{title}"')
print(f'http.body:"{body}"')
print("\n=== Hunter.how ===")
print(f'cert.subject=="{domain}"')
print(f'domain=="{domain}"')
print(f'web.title=="{title}"')
print(f'web.body=="{body}"')
if __name__ == "__main__":
main()
Диагностика и история DNS
Следующая группа сервисов относится к диагностике, мониторингу и историческому исследованию DNS-записей — эти данные особенно полезны, когда нужно узнать реальный IP сайта, который сменил CDN или WAF относительно недавно, но старые записи ещё сохранились в архивах.
Дополнительные сервисы

- completedns.com — история изменений NS-серверов, мониторинг падений;
- dnshistory.org — архив изменений DNS-записей (NS, A и другие типы);
- ViewDNS — универсальный инструмент для просмотра любых DNS-записей;
- dnschecker.org — проверка распространения (propagation) DNS-записей по разным регионам;
- SecurityTrails — один из наиболее полных сервисов для исторического анализа DNS и поиска связанных доменов.
Отдельно стоит упомянуть инструменты, которые не попадают напрямую ни в категорию IoT-поисковиков, ни в категорию DNS-диагностики, но также полезны при поиске реального IP-адреса.
VirusTotal
Домен вводится в строку поиска VirusTotal, после чего стоит перейти во вкладку Relations — там отображаются связанные IP-адреса, поддомены и исторические записи, которые нередко указывают на реальный сервер за CDN.

Техники поиска реального IP через функционал сайта
Через отправку письма на email
Если на сайте есть функционал, взаимодействующий с почтой — регистрация, подписка на рассылку, форма обратной связи с уведомлением на email — этим можно воспользоваться для поиска реального IP. В поле ввода email указывается адрес на собственном домене, привязанном к Burp Collaborator либо к бесплатному аналогу вроде interactsh.com, в формате имя@ваш-сервер.
После отправки формы стоит проверить полученные на сервере обратные соединения (callback) и адреса, с которых они пришли. Этот метод срабатывает только в том случае, если на origin-сервере развёрнут собственный SMTP-сервер с некорректной конфигурацией — случай не самый частый, но встречающийся на практике.
XML-RPC Pingback (WordPress)
Файл xmlrpc.php — встроенный в WordPress механизм удалённого управления блогом через XML-запросы. Среди доступных методов есть pingback.ping, предназначенный для отправки pingback-уведомлений между блогами.

Эту функцию нередко отключают, поскольку она может использоваться для спама и других злоупотреблений. Но если метод доступен, на него можно отправить pingback-запрос со ссылкой на собственный Collaborator-домен и дождаться результата — есть вероятность, что уведомление придёт напрямую с реального IP-адреса сервера, минуя CDN.
Пример тела запроса:
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>Сервер с протоколом передачи</string></value>
</param>
<param>
<value><string>Любая ссылка на блог сайта</string></value>
</param>
</params>
</methodCall>
Как узнать реальный IP сайта: итоги
Рассмотренные методы — лишь часть возможных подходов к получению обратного соединения с реального сервера. Аналогичного результата можно добиться, например, через заголовки запроса при помощи Param Miner и Collaborator Everywhere — подробнее об этих расширениях рассказано в отдельном материале. В конечном счёте набор рабочих методов сильно зависит от функциональности конкретного тестируемого приложения и креативности исследователя.
Теперь вы знаете, как узнать реальный IP сайта за CDN и WAF — от простого детекта через Wappalyzer и WhatWaf до продвинутых техник вроде XML-RPC pingback и работы с IoT-поисковиками. Комбинация нескольких методов почти всегда даёт результат.