Как узнать все сайты на одном IP и в одной подсети
Веб-сервер может обслуживать один или более виртуальных хостов. Следовательно, на одном IP могут размещаться сразу несколько сайтов. Информация о сайтах на одном IP может быть интересна как просто из любопытства: какими ещё сайтами/проектами занимается данный веб-мастер, либо во время пентестинга – при первоначальном сборе информации для расширения площади атаки.
Поскольку различные веб-приложения могут использовать разнообразное программное обеспечение, то если не удалось найти брешь в уязвимости одного из сайтов, то стоит попытать удачу с другим на этом же сервере. Как говорят, «прочность всей цепи определяется прочностью самого слабого звена» - это применимо в данной ситуации. Поскольку при компрометации веб-сайта, который хоть и не является целью, но расположен на том же сервере, что и целевой сайт, есть вероятность скомпрометировать весь сервер или облегчить атаку на целевой сайт.
Возможность найти сайты на одном IP предоставляют различные сервисы, которые в качестве базы данных используют большой объём статистической информации. Это означает следующее:
- различные сервисы могут предоставить информацию различного объёма (в зависимости от полноты накопленных данных)
- предоставляемые данные могут быть неактуальными (частично или полностью)
- информация может быть неполной
В статье «Уроки по Nmap. Урок 2: Примеры сбора информации скриптами NSE» упоминается о трёх скриптах Nmap, которые позволяют в командной строке узнать сайты на одном IP. К сожалению, в данный момент все три скрипта потеряли свою актуальность – больше не работают.
В качестве новой альтернативы предлагается программа iptodomain. Этот инструмент, используя архив исторической информации с Virustotal, позволяет вам извлекать домены из IP диапазона и сохранять их в файл. Это полезно, если вы хотите узнать, какие домены прикреплены к этому IP адресу.
Установим программу:
git clone https://github.com/jevalenciap/iptodomain.git cd iptodomain/ sed -i '1s/^/#! \/usr\/bin\/env python2\n/' iptodomain.py sudo chmod +x iptodomain.py sudo mv iptodomain.py /usr/local/bin/iptodomain cd iptodomain
Программа имеет следующие опции:
-i FIRST_IP Первый IP диапазона, который вы хотите просканировать. -f LAST_IP Последний IP диапазона, который вы хотите просканировать. -w FILE2 Имя файла, в котором будет сохранён отчёт со всеми доменами и их IP. -o FILE1 Имя файла, в котором будут сохранены все найденные домены. -v Показывать больше информации во время сканирования. -r FILE3 Имя конечного отчёта без повторяющихся результатов доменов.
Перед началом работы, автор говорит о смене API ключа Virustotal (он бесплатный). В принципе, всё работает и без смены (в коде программы уже указан ключ).
Как можно видеть по опциям, программа работает с диапазонами IP и не поддерживает ввод напрямую имени хоста (доменного имени). Поэтому алгоритм работы следующий:
- узнаём IP интересующего сайта
- указываем в качестве начального и конечного IP диапазона один и тот же адрес.
Рассмотрим пример работы программы.
Допустим, нам требуется узнать список всех сайтов, размещённых на том же IP, что и сайт suip.biz.
Нужно начать с того, чтобы узнать IP целевого сайта. Это можно сделать командой dig:
dig +short suip.biz 185.117.153.79
Устанавливаем начало диапазона сканирования (-i 185.117.153.79) и конец диапазона сканирования (-f 185.117.153.79), результаты — домены вместе с IP — сохранить в файл (-w /tmp/t.txt):
iptodomain -i 185.117.153.79 -f 185.117.153.79 -w /tmp/t.txt
Кстати, у одного сайта может быть более чем один IP.
Для автоматизации процесса, я написал следующую большую команду. Её можно непосредственно копировать в командную строку:
DONE=""; URL=`/usr/bin/zenity --entry --width=350 --title="Нахождение всех сайтов на одном IP" --text="Пожалуйста, введите адрес сайта или IP:" 2>/dev/null`; while read -r IP; do echo ""; echo "Получен IP $IP. Ищем сайты на этом адресе:"; iptodomain -i $IP -f $IP -w /tmp/t.txt; echo ""; DONE="1"; done < <( dig @8.8.8.8 +short $URL); if [ -z "$DONE" ]; then echo ""; echo "Получен IP $URL. Ищем сайты на этом адресе:"; iptodomain -i $URL -f $URL -w /tmp/t.txt; echo ""; fi;
Будет открыто диалоговое окно, куда можно ввести доменное имя или IP адрес:
Для введённого IP будут выведенные все сайты, которые хостятся на нём. Если введено доменное имя, то для него будет найден IP и показаны все сайты на нём. Если у введённого доменного имени несколько IP, то будут показаны все найденные сайты на каждом из них:
Также вы можете сохранить в файл allwebsites.bash следующий скрипт:
#!/bin/bash URL=$1; if [ -z "$URL" ]; then URL=`/usr/bin/zenity --entry --width=350 --title="Нахождение всех сайтов на одном IP" --text="Пожалуйста, введите адрес сайта или IP:" 2>/dev/null`; fi DONE=""; while read -r IP; do echo ""; echo "Получен IP $IP. Ищем сайты на этом адресе:"; iptodomain -i $IP -f $IP -w /tmp/t.txt; echo ""; DONE="1"; done < <( dig @8.8.8.8 +short $URL); if [ -z "$DONE" ]; then echo ""; echo "Получен IP $URL. Ищем сайты на этом адресе:"; iptodomain -i $URL -f $URL -w /tmp/t.txt; echo ""; fi
Запускать его можно без опций (тогда он будет работать в точности как предыдущая большая команда):
bash allwebsites.bash
Либо сразу можно указать IP или URL. Пример:
bash allwebsites.bash yandex.ru
Все сайты из диапазона IP адресов
В предыдущих примерах мы искали сайт только на одном IP.
Программа iptodomain изначально создана для поиска всех сайтов по диапазонам сетей. Поэтому её можно запустить и так:
iptodomain -i 185.117.153.1 -f 185.117.153.255 -w /tmp/t.txt
Онлайн сервис для поиска всех сайтов на одном IP
Поскольку здесь описана работа в среде Linux, то для пользователей Windows такой подход может оказаться затруднительным.
Чтобы избежать каких-либо трудностей независимо от вашей ОС, создан онлайн сервис с данной функциональностью. Он расположен по адресу https://suip.biz/ru/?act=hostmap. Там вам достаточно только ввести адрес известного сайта или IP и для вас будет показана информация из программы iptodomain.
Заключение
Если для какого-то IP вы нашли очень большое количество сайтов, то, вероятно, этот IP адрес может принадлежать хостинг-провайдеру, который предоставляет услуги виртуального хостинга. В этих случаях на одном IP может быть сотни и даже тысячи веб-сайтов, при этом сайты принадлежат совершенно разны людям, имеющим между собой общее только то, что они пользуются услугами одного хостинга.
Мои скрипты не работают с диапазонами адресов, они предназначены только для ускорения рутинного процесса поиска сайтов по IP, либо по известному адресу сайта.
Связанные статьи:
- Как узнать, сайт за CloudFlare или нет (100%)
- Поиск сетки вредоносных сайтов (кейс) (100%)
- Обход запрета показа исходного HTML кода, обход социальных блокировщиков и других мер противодействия сбору информации о сайте (100%)
- Препарирование скамерского сайта (КЕЙС) (100%)
- Обход файерволов веб приложений Cloudflare, Incapsula, SUCURI (100%)
- Поиск беспроводных точек доступа с включённым WPS: использование программ Wash, Airodump-ng и Wifite (RANDOM - 50%)
спасибо за труд
Можно еще https://gmap.io добавить в инструментарий.
Алексей. Дай бог тебе здоровья.
Автор красавчик
Спасибо за информацию!
Программа выдаёт только 1000 доменов. Не подскажете, есть ли какие нибудь варианты увеличить количество проверяемых доменов?