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


Рекомендуется Вам:

6 комментариев to Как узнать все сайты на одном IP и в одной подсети

  1. артем:

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

  2. Bogon:

    Можно еще https://gmap.io добавить в инструментарий.

  3. Зуксел:

    Алексей. Дай бог тебе здоровья.

  4. Сергей:

    Автор красавчик

  5. Дагестанец:

    Спасибо за информацию!

  6. Сергей:

    Программа выдаёт только 1000 доменов. Не подскажете, есть ли какие нибудь варианты увеличить количество проверяемых доменов?

Добавить комментарий для Сергей Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *