Взлом всея сети. Omnis – самый лучший хостинг!Ivengo, ivengo@nosecure.info, http://www.nosecure.info Каждому профессионалу хочется славы и денег. В хакерской среде и то, и другое считается неотвратимым злом: и к тому, и к другому настоящий хакер испытывает отвращение. Но, как говорится, ботнет приходит и уходит, а кушать хочется всегда. Так что одним из способов проведения платных научных исследований на сегодняшний день является оценка того, как просто можно получить доступ к определенному ресурсу. Этим мы сегодня и займемся! Провайдер Всея СетиЕсли ты представил, что виртуальные купюры WMZ уже шелестят у тебя в кошельке, и глазки заблестели, то пойдем дальше и представим типичную картинку - хостинг-провайдера www.omnis.com, у которого, как соты в пчелином улье, хостится множество вкусных сайтов с хорошим PR (за которые отдают неплохие деньги). Один такой попался мне совсем недавно, а остановился я на нем совсем случайно - очень уж повеселило его название - Omnis Network (что в вольном переводе означает «Провайдер Всея Сети»). Особенность данного божественного пасквиля в том, что ребята из Omnis помешаны на послеполуденных молитвах и безопасности. Многие очень умные люди обломали свои зубки о всевозможные хитрости, придуманные этим хостером. Помолимся, дети мои!А заодно подумаем головой - хостят они кого попало, одних только простых сайтов больше 5000. Наверняка, найдутся пингвины, которые не в ладах со своими движками и CMS. Если все так, то и искать можно, начиная с самых простых вариантов (потому как настоящий хактивист всегда идет в обход). Выбираем несколько вариантов из наиболее доступных - WordPress, Joomla, DataLifeEngine, CowPHP и пр. Теперь пробуем... Нас интересуют не просто сайты, а сайты-соседи, которые мало того, что хостятся физически на одном сервере, так еще и принадлежат нашему священному чуду omnis.com. Чтобы найти сайты-соседи, можно воспользоваться отличным сервисом robtex.com. Это настоящий швейцарский ножик для компьютерных сетей. Он мало того, что рисует картинки зависимостей DNS, так еще и накапливает эту информацию после собственных поисковых исследований! У него можно спросить как IP-адрес, так и наоборот, доменное имя, соседа которому хочется найти. Этого динозавра, конечно, можно валить с помощью автоматических средств - например, готового POC-примера от группы notsosecure.com. Как работает релиз команды (нашей тезки), смотри ниже:
В качестве параметров сплоиту надо передать имя зарегистрированного пользователя (complita), пароль к нему (truckmebaby) и номер существующего поста, в который этот замечательный пользователь может записывать любую информацию. Выбранный burnmanbedlam.com нас не подвел - и регистрация открыта, и посты наполнять можно (их даже видно, что вдвойне приятно, хоть и редкость в наше время). На самом деле, вместо того, чтобы тратить драгоценное время на поиск и анализ уязвимого узла, всегда существует вариант приобретения чистого хостинга у провайдера - все дальнейшее совершенно одинаково как для легального пользователя, так и для неравнодушного исследователя :). Тем более, в большинстве случаев хостинг-провайдер предоставляет свои услуги всего на одном-двух очень мощных серверах. Так что шанс «промахнуться» и приобрести в аренду ненужный тебе хостинг очень мал. Суидная капеллаПервое, что порадовало, когда был залит шелл - это отсутствие включенного SAFE_MODE и пустой список недопустимых функций. Казалось бы, запускай что угодно, делай что угодно - все разрешено. Но как бы ни так - вместо привычного ответа «nobody» или «www» на вопрос «whoami» был получен вполне вразумительный «burnm001», то есть, имя конкретного владельца данного сайта (на который и был установлен шелл). Кроме того, права на файлы установлены так, что содержимое соседних сайтов недоступно вовсе. Для этого веб-сервер сконфигурирован таким образом, что во время запуска пользовательских программ и CGI-сценариев происходит имперсонализация (мы уже писали об этом замечательном процессе в статье «Пошаговая имперсонализация» в ][#048). Все это говорит о том, что за вопросами безопасности здесь стараются следить - ну или хотя бы подумали о них, когда строили систему.
Однако, несмотря на предпринятые меры безопасности, мы уже оказались внутри и у нас есть возможность исполнять системные команды. Раз так, проанализируем конфигурацию нашего божественного хостера. Самое интересное для нас будет находиться в конфигурационном файле веб-сервера. С этим все просто - провайдер использует Linux (с версией ядра 2.6.18), а нам известно, что у Unix с вигвамом всегда есть общее - нет форточек и внутри сидит апач. Следовательно, ищем конфигурационные файлы веб-сервера Apache.
Перебравшись в него, сразу становится ясно, что мы имеем дело с подключенным NFS-сервером с распределением нагрузки на жесткие диски (наверняка отдельный RAID-массив с поддержкой iSCSI или оптики). А также проясняется, где хранится все самое интересное:
Санктум-сертификатумЗапись «/webroot/?/?/*/*» позволяет веб-серверу связать доменное имя (сайта, которого у него запрашивают) с конкретным путем. Первые две буквы имени формируют ветку, где собственно и хранятся данные сайта. Например, если наш сайт располагается по адресу http://www.omnis.com, то файлы сайта находятся в каталоге «/webroot/o/m/omnis001/www», где omnis001 - имя пользователя, права которого устанавливаются веб-серверу при работе с файлами из домашнего каталога. Еще немного вкусного лежит по адресу «/clfs/cluster/httpd/», - там мы находим... сертификат с открытым и закрытым ключами сервера! Да-да, именно те самые, которые используются бедными пользователями для проверки, правда ли то, что этот их любимый провайдер или нет.
Ведь, что интересно, права как раз на эти файлы позволяют нам их не только прочесть, но и изменить. Фантазия сразу подсказывает массу забавных вариантов применения полученных сертификата и соответствующего ему секретного ключа. Самый интересный вариант - использование программ sslstrip и sslsniff, но только с небольшой доработкой, которая вместо ошибочных сертификатов выдавала бы пользователям Omnis вполне себе легальный сертификат того же Omnis, да еще и прямо в онлайне позволяла полностью читать любые зашифрованные данные пользователей. Прочитавши статью о взломе SSL в прошлых номерах, не составит труда проделать необходимые изменения в конфигурации этих программ. Однако вернемся к нашим священным барашкам. Объявив праздник курбан-байрам, находим в конфигурации Апача строку со ссылкой на LDAP-авторизацию:
LDAP - он и в Африке LDAPТакой подход к авторизации пользователей и раздаче контента на мега-сервере является крайне многообещающим. Во-первых, это означает, что админы работают с тачками, на которых стоит Windows, а сами изредка подключаются к мега-серверу (куда мы, собственно, и проникли), для управления и мониторинга дел. Во-вторых, великий сидящий воин Апач не умеет авторизовываться в LDAP со сложными схемами аутентификации. Это означает, что написанный в открытом виде пароль в строчке "VhostLDAPBindPassword "ns43k6xs" - это как раз тот пароль, с которым нас пустят в контроллер домена! Праздник продолжается, когда незамыленный взгляд замечает, помимо пароля, еще и строку подключения к ветви LDAP. Вообще говоря, LDAP - это не только сетевой протокол для доступа к службе каталогов, который используется в системе Windows для хранения всего-всего-всего, но и система обработки информации, которая включает в себя простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей. Контроллер домена (по сути, LDAP-сервер) принимает входящие соединения на порт 389 по протоколу TCP. Запомни! Всякая запись (строка подключения) в каталоге LDAP состоит из одного или нескольких атрибутов и обладает уникальным именем (DN — от Distinguished Name). Уникальное имя может выглядеть, например, следующим образом: «cn=Иван Петров, ou=Сотрудники, dc=example, dc=com». Уникальное имя состоит из одного или нескольких относительных уникальных имен (RDN — от Relative Distinguished Name), разделенных запятой. Относительное уникальное имя имеет вид «ИмяАтрибута"="значение». На одном уровне каталога не может существовать двух записей с одинаковыми относительными уникальными именами. В силу такой структуры уникального имени записи в каталоге LDAP можно легко представить в виде дерева. Запись может состоять только из тех атрибутов, которые определены в описании класса записи (object class), которые, в свою очередь, объединены в схемы (schema). В схеме определено, что одни атрибуты являются для данного класса обязательными, а другие — необязательными. Также схема определяет тип и правила сравнения атрибутов. Каждый атрибут записи может хранить несколько значений. О тонкостях настройки и работы LDAP мы писали в статье «Контроллер домена на SAMBA за семь шагов» (в 6 номере ][ за 2008 год). Устанавливаем с помощью шелла phpLDAPadmin на ранее исследованный вдоль и поперек нами хост. Вписываем адрес контроллера и строку подключения с паролем в конфигурационный файл, запускаем, наслаждаемся доступом, который позволяет нам подсчитать количество настоящих пользователей (их в системе 27), а также посмотреть их пароли в формате NTLM! Дельный совет - чтобы получить доступ ко всей информации, необходимо, во-первых, воспользоваться усечением строки доступа до корневого домена (то есть, чтобы строка выглядела как «dc=omnis,dc=com» вместо «cn=root,ou=Special Users,dc=omnis,dc=com»), а во-вторых, использовать не простой поиск, а экспорт данных из LDAP в файл просто формата - например, CSV.
Тут-то нам и пригодятся разнообразные методы взлома NTLM-хешей (не могу не поделиться: пока искал правильные сайты для взлома LM-хешей, нашел забавный сайт unix.com, в котором на русский язык оказалось переведено название John the Ripper - дядюшка Google окрестил его Иоанном (святой брутер, все-таки)). Советую параллельно использовать взлом с помощью радужных таблиц, опробование их на специализированных сайтах (как, например, lmcrack.com или hashcracking.info), а также собственные силы в виде Passwords Pro и John the Ripper. Причем, использование брутера Passwords Pro не исключает использование John the Ripper, а наоборот, только дополняет. Что в итоге? Немного потения процессором и шуршания диском - и вот они, золотые слова: Пробуем вводить полученные пароли прямо в логин-шелле, однако получаем отказ - шелл у нас индейский (от Апача), для этих целей не приспособленный. Придется искать обходной путь. Правда, попутное промежуточное решение тоже ничего - один из паролей подошел к mysql-базе данных, которая оказалась рядом (по адресу mysql.omnis.com). Полученный к СУБД доступ был рутовым - это сильно порадовало, так как среди хостеров OMNIS.COM немало товарищей с PageRank 6 и 7, а они (как мы помним) стоят денег. С помощью простого скрипта, загруженного через шелл, подбираем доменное имя сайта (чтобы оценить затем PageRank) по имени базы данных и ее типу:
Скрипт легко можно модифицировать под свои нужды, благо размер у него микроскопический. На вход ему надо подавать имя файлов со списком баз данных из mysql (благо, с рутовым доступом они известны все), а на выходе он будет выдавать вот такой листинг:
Финальный штрихОпытному исследователю этого мало - наглеем дальше и устанавливаем на хостинг прокси-сервер (для этих целей отлично подойдет 3proxy). Как только он установлен, нас уже ничего не отделяет от рабочих компов админов - они уже совсем близко. Настраиваем «прыжок» с помощью sockschain от нашего клиентского подключения на выделенном дедике к известному адресу админского компа (например, к gchon.omnis.com). Включаем RDP-клиент и получаем консоль на удаленном рабочем столе с Windows XP SP2 EN. Но самое интересное оказалось не в нем (его использование вызвало ажиотаж в стане админов, и «лавочка» быстро закрылась), а в консоли управления провайдерскими аккаунтами и пользователями - любопытная статистика приведена на скриншотах. Очевидно, что православный хостинг не столь убыточен, как могло бы показаться на первый взгляд - заработать за неполных 11 месяцев 1,5 млн. долларов оборота может не каждый провайдер. Общий итог - несмотря на все предпринятые меры безопасности, провайдер сдал свои фортификации под давлением наших знаний и умений. Читай ][ и все у тебя получится! Как сказали бы древние, «OMNIS.COM mea mecum porto» или «мой провайдер всегда со мной» :). |