Как узнать все сайты на одном 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, либо по известному адресу сайта.

Рекомендуемые статьи:

One Comment на Как узнать все сайты на одном IP и в одной подсети

  1. артем:

    спасибо за труд

Добавить комментарий

Ваш e-mail не будет опубликован.