Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

Terrorists win!

Вася Иванов

Xakep, номер #068, стр. 068-050-2


Теперь у меня уже было имя пользователя, с которым можно было попытаться войти в систему. FTP-брутфорс был запущен. Одновременно с этим я продолжал искать уязвимости в движке web-сайта. И тут я вспомнил, что это игровой сервер, а значит, на нем должен быть демон Counter-strike, про который я совсем забыл.

Игры - опасная штука

Для начала я решил проверить, уязвим ли этот сервер. Скачав m00-HL-DoS.exe, который написали наши соотечественники из m00 security, я ввел имя сервера, и программа выдала: «The remote server is vulnerable!». Радости не было предела! Надо было теперь найти рабочий эксплойт. Я нашел эксплойт pu-hl.c, но в нем была лишь одна цель - FreeBSD 5.1, в то время как на серванте стоял Linux с ядром 2.4.20. Я все-таки решил попробовать этот эксплойт, и, естественно, ничего толкового у меня не вышло. Было уже поздно, и я пошел спать, надеясь, что утром у меня будет доступ на FTP, а возможно, и SSH.

На следующий день доступ к FTP был получен, но логин с паролем не проходили на SSH. Тогда было решено залить файл cmd.php (говоря иначе - backdoor) вот с таким содержанием: >?php echo ">pre<"; system($cmd); echo ">/pre<"; ?<. Каково же было мое разочарование, когда я увидел ответ сервера, в котором говорилось, что команду system() выполнять нельзя: Warning: system(): Cannot execute a blank command in /home/adm13/htdocs/cmd.php on line 1. Я решил попробовать команду exec, но ничего не вышло. С другими командами было то же самое. Админ попросту запретил выполнение системных команд из PHP-сценариев. Блин, что же делать дальше?

В это же время я разговорился со своим знакомым трейдером, у которого периодически появлялся новый приватный стафф. У него был эксплойт hlwbig.c для сервера Half-Life с двумя универсальными целями для Linux & FreeBSD.

Итак, теперь у меня была командная строка хоть с какими-то правами. Ядро было древним - 2.4.20. Можно было попробовать взять рута через уязвимости do_brk или mremap. Я решил попробовать do_brk, т.к. для удачной эксплуатации уязвимости mremap требовалось несколько часов. Я закачал эксплойт с packetstormsecurity.org на сервер при помощи wget. Скомпилировал, запустил, но ничего не вышло! Segmentation fault. По-видимому, сплойт был не совсем рабочим, а разбираться, в чем дело, было решительно в лом. Что же делать? Тогда я решил воспользоваться эксплойтом для mremap-бага. После запуска этого эксплойта я понял, что на получение рута понадобится ну никак не меньше 6 часов, и это меня очень расстроило. В самом деле, не ждать же полдня?! Тогда я обратился к своему знакомому, который сказал, что я олень, а сплойт надо было собирать с флагом -static. Скомпилировав отмычку заново, я быстро добился успеха.

Suck it!

Теперь мне оставалось залить руткит. Я доверял только SuckIt'у. Были некоторые опасения касательно того, что с его установкой могут быть проблемы, но все прошло на удивление успешно. Через некоторое время в директории руткита появился файл «.sniffer» с паролем от какого-то сервера. Теперь оставалось выяснить, от какого именно. В папке /root/.ssh был файл known_hosts, нужно было установить соединение с каждым из этих серверов, и где-то пароль должен был совпасть. Так и произошло. Я получил в свое управление еще одну машину. На этот раз попался RedHat Linux 9.0 с ядром 2.4.24. Я установил туда SuckIt, повесил BNC, и на этом его приключения закончились, т.к. через неделю админ, видно, проснулся и восстановил обе системы. Демон HL был также пропатчен. Вот так. Я продержался на серверах чуть больше недели, потом допустил грубую ошибку, и админ отреагировал молниеносно: пропатчил все баги, поудалял мои бэкдоры и убил отличную BNC :(.

Назад на стр. 068-050-1  Содержание  Вперед на стр. 068-050-3