Механизм, который позволяет обращаться к нескольким доменам на одном веб-сервере. Администраторы в настройках веб-сервера прописывают домен, а браузер пользователя при обращении к IP указывает в заголовке
Host запрашиваемый домен. Веб-сервер использует нужный шаблон и отдает запрашиваемый контент.Конфигурирование веб-сервера может быть достаточно сложным, и могут возникать ошибки, например, доступные любому пользователю админ-панели или внутренние сервисы, которые не подразумевались быть доступными извне VPN.
Как найти внутренние сервисы и выявить мисконфигурации?
Используя сервис
crt.sh, можно получить выписанные для домена сертификаты и скопировать все полученные домены. Сертификаты могут быть выписаны и на недоступные в данный момент из интернета приложения. Это можно сделать, к примеру, так:
https://crt.sh/?q=vk.teamЗатем можно использовать
curl и обратиться к IP-адресам, принадлежащим компании, с полученными доменными именами. Может произойти так, что балансировщик направит запрос во внутренний сервис, хотя он должен быть недоступен снаружи.Например:
curl --resolve title.bugbounty.vk.company.ru:443:10.12.72.18 https://title.bugbounty.vk.company.ru/
Так можно обратиться к IP-адресу, используя произвольный заголовок
Host. Как видно на скриншоте, по стандартным хостам нет доступа, но, применив правильный заголовок, мы получили ответ. Подставляя localhost или полученные из сертификатов домены, иногда можно получить доступ к админкам и другим внутренним системам.Публикация подготовлена совместно с командой VK Bug Bounty.
