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

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

Master-lame-master

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


Прежде чем давать заказчику шелл, надо было изменить сценарий выполнения команд на более дружелюбную оболочку (судя по разговорам, клиенту бесполезно объяснять, что такое QUERY_STRING :)). Я решил воспользоваться услугами скрипта CGI-Telnet, о котором уже рассказывал в прошлых выпусках Х. Теперь достаточно выполнить пару команд, чтобы заказчик мог сливать нужные файлы самостоятельно, потому как CGI-Telnet (http://www.rohitab.com/cgiscripts/cgitelnet.zip) снабжен функциями скачивания и закачивания документов.

Поставить CGI-Telnet несложно. Нужно лишь перегнать скрипт в ASCII-режим и слегка изменить содержание вспомогательного сценария file.cgi. Вот, собственно, и все нехитрые действия.

CGI-Telnet оправдал мои ожидания. Заказчик с удовольствием заюзал эту оболочку, слив все данные, которые хотел. После изнурительного двухчасового ожидания я получил заслуженные $300 за прекрасную работу. Я был очень доволен собой, так как никогда раньше не ломал самую умную нацию на Земле :).

Что помогло мне при взломе?

1. Я никогда не терял надежду на победу, поэтому всегда экспериментировал. Например, я быстро обнаружил, что параметр file_name может принимать значения произвольных команд.

2. Я знаю параметры многих утилит и программ. Я без труда сумел связать два приложения GET и Perl. А все потому, что перед этим я старательно изучил описание параметров к этим командам.

3. Я часто обращался за помощью к Web-оболочкам типа CGI-Telnet и не изобретал велосипед. Действительно, WWW-шелл ничем не хуже обычного. Главное - уметь к нему привыкнуть :).

Командуй через WWW

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

1. Обращай внимания на параметры с именами file, file_name, path и т.п. Часто их значения не проверяются на спецсимволы, и могут быть проэксплуатированы. Попробуй подставить в качестве значения «../../../../../etc/passwd%00» и проверить скрипт на null-баг.

2. Параметры типа page, locate и т.п. позволяют организовать code-insertion. Достаточно лишь создать файл с вредоносным кодом и передать в качестве страницы линк на свежесозданный скрипт.

3. Пробуй изменять значения параметров cgi-скриптов на |команду|. Часто программисты не проверяют опции на наличие пайпа, поэтому есть определенный шанс (очень маленький, замечу), что команда будет выполнена.

4. Если ты встречаешь всего один параметр, передаваемый скрипту, не исключено, что он входит в функцию system(). Проверь это, отделив опцию от знака равенства символом «;». Если предположение верно, на экране появится выполненная системная команда.

Cisco под прицелом

На вопрос, заданный в июльском номере Х, мне пришло всего два ответа. Причем оба были не совсем правильными. Итак, чтобы эксплойт для циски заработал, необходимо увеличить размер передаваемого пакета. Кодер эксплойта этого не сделал, потому что хотел защитить свое творение от грязных рук скрипткидисов. Внутри исходника нужно добавить пару нуликов к счетчику цикла. Помимо этого в самом цикле как бы случайно забыт номер протокола :). Его тоже надо указать.

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