Tjat.com: финальный ударПо сложившейся доброй традиции, примерно один раз в два года ты можешь насладиться увлекательнейшей историей очередного взлома мобильного шлюза tjat.com, предназначенного для общения в ICQ/MSN/Yahoo/Chikka/AIM/GTalk/Facebook/Orkut/ВКонтакте прямо с экрана твоего телефона. Каждый из описанных взломов отличался увеличением сложности и глубины проникновения в систему, которая, в свою очередь, также росла, расширялась и видоизменялась. В сегодняшнем материале мы постараемся поставить жирную точку в этой истории, потому что получать контроль больше просто не над чем — в жестокой схватке пали последние из серверов этого WAP-сервиса. ПредысторияКак-то раз мне в голову взбрело перебрать старые текстовые файлы с логами взломов tjat.com. Как это ни удивительно, но мой старый шелл все еще находился в укромном месте по адресу forums.tjat.com/phpBB2/language/lang_ukrainian/1.php! Конечно же, я сразу вспомнил былое и стал исследовать систему. Во-первых, старинное ядро так никто и не удосужился пропатчить:
Во-вторых, сохранился не только веб-шелл, но и суидник raptor_prctl1, полученный с помощью сплойта Linux Kernel 2.6.13 <= 2.6.17.4 prctl() Local Root Exploit. В-третьих, вкуснейшие логи сервиса, в которых когда-то хранились пароли и ICQ-уины, по-прежнему находились в /usr/local/apache_1.3.37/logs/. Насторожило то, что эти самые логи имели крайне малый размер и уже не содержали ничего интересного. Чтобы подтвердить закравшиеся сомнения, я проследовал на известный сервис Reverse IP Lookup и узнал, что теперь сервер forums.tjat.com обслуживает только следующие сайты:
Такое положение вещей меня, конечно же, не устраивало, поэтому настала пора заняться взломом последних рубежей обороны tjat.com :). Проникновение в БДПосле не слишком долгих поисков стало ясно, что админы шлюза практически полностью перенесли свое творение на java и, соответственно, Apache Tomcat. Из интересного на глаза мне попался файл /usr/local/tomcat/conf/Catalina/localhost/wapicq.xml, в котором содержались данные для подключения к некой PostgreSQL базе: ... Я составил нехитрую команду для просмотра доступных баз данных:
И увидел следующую картину (кстати, как выяснилось немного позже, юзер postgres вообще не имел пароля!):
После небольших экспериментов и нескольких запросов к обнаруженной базе я нашел: 1. Логи подключений к асе в таблице wapicq.icquser, весящие 141 Мб (аналогичным образом назывались и таблицы с логами для остальных сервисов):
2. Таблицу statistics.traffic, содержащую логи в формате Апача (из-за того, что отныне сервис не передает логин и пароль для подключения в _GET, толка от этих логов не было никакого); 3. Маленькие таблицы myid.user_accounts и myid.users, содержащие непонятные аккаунты и пароли:
Здесь также стоит указать схему работы с утилитой pg_dump, так как PHP, установленный на сервере, не мог по дефолту работать с базами PostgreSQL:
Данным запросом мы можем сдампить таблицу icquser из базы statistics в файл /usr/local/apache_1.3.37/htdocs/forum/phpBB2/language/lang_ukrainian/1.sql. 4. Аналогичные postgres базы находились также на других серверах в сетке tjat: 192.168.25.2, 192.168.25.22, 192.168.25.23, 192.168.25.24, 192.168.25.25, 192.168.25.26 — это я узнал с помощью своих старых nmap-логов, описанных в предыдущей статье про наш многострадальный шлюз. Топтание на одном местеПотеряв много времени на изучение postgres-баз, я решил любыми путями проникнуть на соседние сервера — на одном из них должен был скрываться нужный нам wap.tjat.com. Единственным доступным на тот момент способом казалось чтение и запись файлов с помощью встроенных в PostgreSQL средств. Но немного погуглив по теме, я сообразил следующую схему: 1. Логинимся в постгрес
2. Читаем файлы с помощью следующего сценария:
Данный сценарий успешно отработал и отобразил мне содержимое /etc/passwd на сервере 10.0.0.1:
Дальше, конечно же, возникла необходимость чтения других интересных файлов с
postgres серверов tjat’а, но попытки прочитать что-то, кроме /etc/passwd, не
увенчались успехом. Например, на запрос "
Не получив вменяемого ответа от Гугла, я совсем уже было опустил руки, но тут к делу подключилась свежая голова пожелавшего остаться неизвестным хеккера (далее — Анонимус), которому я и стукнул в аську :). Все меняется, когда приходит Анонимус!Недолго думая, Анонимус воспользовался уже известным тебе веб-шеллом на форумах tjat, удобно обустроился и получил привилегии рута. Поиски по серверу снова ничего не дали, постгрес же отвечал гробовым молчанием... Казалось бы, стоит оставить tjat.com с его асями в покое, но не тут-то было: вспомнив о статье ShadOS'а "Шапка-невидимка" из 103-го номера журнала, Анонимус принялся за протроянивание ssh. По окончании этого нехитрого действия мы имели следующий профит:
Тут стоит упомянуть о том, что сервис ssh на forums.tjat.com и остальных серверах локальной сети располагался на необычном порту 4430, что помог выяснить установленный два года назад сканер nmap:
Также, если запустить внешний скан нашего хоста, то можно увидеть следующую информацию:
Эпик фэйл ДимыПосле того, как ssh был протроянен, нам оставалось лишь подождать входа в
систему одного из администраторов. Ожидание омрачалось лишь одним фактом —
команда " Приняв во внимание данный факт, Анонимус предложил уронить какой-нибудь из сервисов, крутящихся на данной машине, для привлечения внимания ожидаемых нами админов. Выбор был сделан в пользу MySQL: /etc/init.d/mysql stop. Спустя несколько часов в лог упал аккаунт dima;dima76767676, а сервис мускуля был снова запущен :). Теперь необходимо было проверить данный пароль на соответствие остальным серверам в сетке. Первая же попытка коннекта " Последующие тесты, а также логи nmap помогли узнать, что наиболее интересными для нас серверами являются 192.168.25.5, 192.168.25.6, 192.168.25.7 и 192.168.25.8 по следующим соображениям:
Теперь необходимо было порутать наши сервера и подумать над получением логинов и паролей к аськам пользователей сервиса. Последние рубежиНа всех нужных нам серверах Анонимус легко справился с задачей рутания (а затем и протроянивания) с помощью совершенно разных сплойтов, найденных на просторах exploit-db.com. В большинстве же случаев помог небольшой сценарий, эксплуатирующий уязвимость в Glibc:
Получив таким нехитрым образом абсолютные привилегии на четырех серверах, обслуживающих сайт wap.tjat.com, Анонимус предложил встроить в сервис троянский логгер для асек и стал подыскивать нужную точку для инжекта. Таковой оказался java-класс /usr/local/tomcat/webapps/wapicq/WEB-INF/classes/com/tjat/icq/wap/servlet/LoginServlet.class, который и содержал процедуру асечного логина:
Здесь необходимо было создать некую функцию записи в файл и вставить ее после получения пароля пользователя, то есть после строки, начинающейся со слов "String password". Данная задача была решена Анонимусом с помощью Гугла и шаманского бубна следующим образом:
Профит!Наш незамысловатый логгер проработал примерно неделю до его обнаружения админами. За это время мы смогли получить примерно 6 000 номеров, большинство из которых, конечно же, были кривейшими 9-знаками:
Однако среди этого многообразия, как и в прошлые разы, попалось n-ное количество админских и просто красивых номеров. По сложившейся традиции публикую часть контакт-листа одного из таких номеров — 44446:
Как видишь, WAP ICQ-шлюз tjat.com по-прежнему пользуется популярностью среди определенного круга людей, хотя, надо заметить, что эта популярность значительно упала по сравнению с 2006-2008 годами. Кстати, примерно в то же время Анонимус случайно заглянул в каталог /tmp на forums.tjat.com и обнаружил в нем подозрительные файлы вида tmp_Nagios_proc.63.218.56.11.postmaster, tmp_Nagios_proc.63.218.56.5.java и так далее. После быстрой проверки выяснилось, что эти сервера обслуживают один сайт — miami.tjat.com, на который вел редирект с основного домена tjat.com и который, в отличие от wap.tjat.com, содержал еще и сервис для общения в русской социальной сети ВКонтакте. Конечно же, сразу был проверен (и сразу подошел) ранее полученный пароль Димы, а внезапно найденная вторая сетка Tjat была быстро порутана и протроянена :). НапоследокПосле обнаружения логгера админы, мало того, что не пропатчили свои сервера, но еще и:
В связи с данными обстоятельствами Анонимус, конечно же, предложил создать более продвинутый логгер для всех сервисов Tjat и поиметь, помимо ICQ, кучу аккаунтов MSN, Facebook и иже с ними, но это уже другая история :). В целом же, оглядываясь на этот воистину эпохальный взлом целой армады серверов одного сервиса, я бы посоветовал тебе никогда и нигде не использовать одинаковые пароли (главная уязвимость Tjat — один и тот же пароль), а также внимательнейшим образом следить за безопасностью подконтрольных тебе систем. Надеюсь, что в третий раз я, наконец, смогу поставить точку во взломе многострадального tjat.com :).
|