Admin
Администратор
Находим бекенд айпи сайта за CDN через дедупликацию.
Нередко сайт находится за WAF; CDN и нам известен тогда домен и веб сервер.
Представим что есть необходимость найти спрятанный IP бекенда.
Брать рейнджи хостинг провайдеров; сканировать все ip; резолвить хедеры это головная боль.
Сегодня посмотрим как сделать все это путем дедупликации.
Мне прислали таргет на бесплатный пробив данных о домене.
Вот его и используем.
Содержание
- Субдомены + crt.sh
- Wayback домены
- DNS записи
- TLS фингерпринт
- Сравнение и вывод данных
Входной точкой является домен - таргет.тлд.лд
Для начала ищем субдомены через sublist3r-
Bash:
sublist3r -d таргет.ком -o файл.txt
Затем используем theHarvester копируя в отдельный txt найденные hostnames в нормальном виде-
Bash:
theHarvester -d таргет.ком -b all
В конце ищем данные с помощью assetfindeк-
Bash:
assetfinder --subs-only таргет.ком > файл.txt
Получив все 3 списка субдоменов проводим дедупликацию и приводим к единому списку-
Bash:
cat файл1.txt файл2.txt файл3.txt | sort -u > файл4.txt
Как я обычно говорю - лучше иметь много источников данных.
Поэтому можно не ограничиваться и использовать другие тулзы типа subfinder: amass: findomain и тп.
Один не нашел но найдет другой.
Переходим к поиску через crt.sh.
Объясняю зачем.
SAN записи могут содержать внутренние или альтернативные хосты которые указывали на связь с таргетом.
Поэтому нам надо получить вот такой массив данных по домену-
Bash:
curl -s "https://crt.sh/?q=%25.таргет.ком&output=json" -o crtфайл.json
Теперь получаем список хостнеймов с помощью jq-
Bash:
jq -r '.[].name_value' crtфайл.json | sed 's/\*\.//g' | sort -u > crtхосты.txt
Проводим дедупликацию с нашим списком субдоменов-
Список получили.
Он будет использоваться для дальнейших слияний с найденными хостами.
Wayback домены
Архивированные и исторические страницы так же содержат крошки.
Некоторые содержат ссылки; апи; direct hostname и тп. Которые тоже указывают на бек IP.
Собираем архивы-
Bash:
curl -s "http://web.archive.org/cdx/search/cdx?url=*.param.com.tr&output=json&fl=original,timestamp" -o targwb.json
Теперь надо найти в этом всем хосты.
Делаем-
Bash:
jq -r '.[1:][] | .[0]' targwb.json \
sed 's|https\?://||' \
cut -d'/' -f1 \
sort -u > targwbhosts.txt
Список в том же виде что и в первом этапе.
Точно таким же образом смешиваем и выделяем уникальные.
DNS записи
A&AAAA записи доменов содержат не меньше отсылок к pre-cdn.
Поэтому наш получившийся список таргет хостов мы процеживаем.
Начать можно с dnsdumpster и собрать список там-
Вторым шагом в этом эатпе мы получаем историческую dns инфу из viewdns-
Лайвхак - удобнее выкачать все в xlsx и потом в excel чем работать в txt-
Финальным шагом получаем все наши текущие записи через dig+импорт-
Bash:
while read -r h; do
echo "HOST: $h"
dig +short A $h
done < targstage3.txt > targdns.txt
Как и всегда приводим к единому уникальному списку IP.
Стоит обращать внимание на хосты&адреса в самом низу списка, которые еще до CF или других провайдеров.
TLS фингерпринт
Теперь вспоминаем что мы выгружали json через crt.sh.
Именно тот который мы потом приводили к списку имен хостов.
Берем и каждый хост прогоняем вот таким образом-
Bash:
echo | openssl s_client -connect hd.param.com.tr:443 -servername hd.param.com.tr 2>/dev/null | openssl x509 -noout -text
Либо же мы используем силу гпт и просим нам сделать единую булк команду как это сделал я.
Bash:
while read domain; do
echo "===== $domain ====="
echo | openssl s_client -connect $domain:443 -servername $domain 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
done < домены.txt
Домены берем из этапа дедупликации после wayback.
Это все нам выдает вот такого рода список-
Из списка мы получаем по каждому хосту информацию такого вида.
Код:
Issuer: COMODO RSA Organization Validation Secure Server CA.
Country: TR
Organization: Turk Elektronik Para A.S.
CN: *.param.com.tr
SANs: *.param.com.tr, param.com.tr
Validity: Feb 25 2025 → Mar 28 2026
Click to expand...
Click to expand...
Важно обратить внимание на того кто выпускал сертификат.
У меня COMODO RSA Organization Validation Secure Server CA .
Отличительная особенность в том что в отличии от CF они не выдают сертификат при подклбчении просто так.
Серт покупается и устанавливается намеренно поэтому такие хосты под подозрением.
Сравнение и вывод данных
В моем кейсе почти все субдомены сЗдесь можно было бы сравнить с SAN листом IP который мы собрали и методом исклчючения получить адрес.
Есть немного другая особенность.
CN=*.param.com.tr
SAN=*.param.com.tr, param.com.tr
Issuer: COMODO RSA OV CA
И везде одинаковые даты (Feb 25 2025 – Mar 28 2026).
Можно отправить в Censys-
SQL:
host.services.cert.parsed.subject.common_name = "*.param.com.tr"
Находим выделяющиеся хосты.
В моем случае это были все с LE сертификатом
desk.param.com.tr - который имел нерелевантные SAN записи и относился ко всем суппорт доменам.
Скорее всего Saas страницы на хостинге сервис провайдера;
talep.param.com.tr - SAN привели к тикет системным Saas провайдерам;
tech.param.com.tr - собрал в себе весь тех.инфраструктурный стек;
hub.param.com.tr - на отдельном хостинге без каких-либо SAN связей;
Я выбираю его.
DNS Dumpster нам выдал IP-
Мы всего в 1 шаге.
Пробуем
Bash:
curl -vk --resolve hub.param.com.tr:443:95.173.181.164 https://hub.param.com.tr/
Мой резульат-Эта команда позволяет нам обратиться напрямую к вероятному IP, но при этом отправлять sni request к домену.
Здесь нас интересует ответ об аптайме; активности серта; хедерах; отсутствии упоминания CDN.
В таком случае это то, что нам надо.
Эта куча текста теперь просматривается и находим подтверждение того, что это оно.
IP - 95.173.181.164
Выпустили - Let’s Encrypt R12
Response - HTTP/1.1 200 OK
Хедеры указывают на nginx/1.26.3 + cookies + cache-control