Бесплатные инструменты для поиска уязвимых мест в Web-приложениях
При проектировании Web-сервера были соблюдены все возможные рекомендации и установлены все новейшие исправления, но действительно ли надежна его защита? Чтобы ответить на этот вопрос, необходимо регулярно инспектировать Web-приложения в поисках потенциальных уязвимых мест.
Один из путей несанкционированного доступа — через неверно настроенную конфигурацию Web-приложений. Другой способ — через уязвимые места Web-приложений. В данной статье речь пойдет о том, как изначально устранить некоторые пробелы безопасности и как собрать информацию об уязвимых местах Web-узла с помощью нескольких бесплатных инструментов.
Рекомендации по установке и настройке конфигурации Web-приложений
Соблюдение простых правил при приобретении программного пакета — модуля, приложения или базовой подсистемы — поможет значительно упростить задачу администратора в долгосрочной перспективе. Для начала необходимо отыскать на Web-узле поставщика любую информацию об установке и настройке. Особенно внимательно нужно читать информацию о настройке, так как недочеты в ней часто приводят к возникновению уязвимых мест. Следует помнить, что параметры конфигурации и связанные с ними потенциальные угрозы для многих компонентов зависят от платформы Web-сервера (например, Microsoft IIS, Apache).
Кроме того, стоит поискать в Internet соответствующие сведения о безопасности. Например, PHP широко используется в качестве базового механизма сценариев для проектирования Web-приложений. Но не все пользователи PHP знают о проекте Hardened PHP Project (http://www.hardened-php.net), в рамках которого подготовлен набор исправлений, существенно повышающих безопасность PHP. Много подобных сведений можно найти в Internet. В частности, чтобы больше узнать об обеспечении безопасности продукта, в поисковые фразы следует ввести название продукта, слова hardening, hardened и secure.
Необходимо также обследовать содержимое каталогов Web-сервера и Web-узла. Не исключено, что на них установлены программные пакеты или компоненты, которые еще не используются Web-узлом, но могут быть доступны взломщику, который введет верный URL. Полезно проверить внутренние компоненты, чтобы убедиться в безопасности каталогов, через которые можно получить привилегированный доступ ко всей файловой системе и реестру. Отыскать такие пакеты и компоненты можно с помощью инструментов, рассмотренных в данной статье, но прямые инвентаризация и аудит добавляют уверенности, что ничего не пропущено.
Проверка Web-сервера
Интервал между проверками зависит от сервера и способа его использования, но рекомендуется проводить проверки, по крайней мере ежеквартально.
Выполнить проверку можно с помощью инструментов, которые напрямую исследуют Web-сервер и приложения, в том числе NTOinsight и NTOweb компании NT OBJECTives (http://www.ntobjectives.com/freeware) и screamingCobra (http://samy.pl/scobra). С помощью этих поисковых механизмов можно также выявить потенциальные проблемные области. Поисковые механизмы используются для обнаружения уязвимых мест Web в таких инструментах, как Massive Enumeration Tool (MET-http://www.gnucitizen.org) и SiteDigger (http://foundstone.com/resources/ s3i_tools.htm) компании Foundstone. Один из аргументов в пользу регулярного применения поисковых механизмов для проверки безопасности заключается в их способности индексировать связанный контент Web-узла. Еще одно ценное преимущество таких поисковых механизмов, как Google, — возможность отслеживать историю и кэшировать Web-страницы. Например, в Web-странице в течение некоторого времени использовался сценарий, который впоследствии был удален из нее. Поисковые механизмы показывают, были ли удалены как сценарий, так и путь к каталогу. Замечу, что «роботу» поискового механизма требуется некоторое время, чтобы обнаружить Web-узел и проиндексировать его содержимое. Авторы нового сайта могут ускорить процесс, передав URL непосредственно в поисковые механизмы. Ссылку для передачи URL-адресов можно найти на сайте каждого поискового механизма.
Еще одна причина успеха поисковых механизмов заключается в возможности поиска известных URL-адресов, используемых уязвимыми приложениями. Например, по URL-суффиксу (часть URL, которая следует за полным именем домена — FQDN) можно обнаружить сайты с легкодоступными административными экранами. Взломщики регулярно применяют поисковые механизмы для сбора такой информации, а администраторы должны использовать их, чтобы заранее выяснить, какие сведения о Web-сервере могут попасть в руки злоумышленника, и устранить потенциальные угрозы.
Wikto компании SensePost (http://www.sensepost.com/ research/wikto) — третий тип инструмента. Эта гибридная программа выполняет прямую проверку наряду с использованием поискового механизма. Следует помнить, что эффективность таких инструментов зависит от конкретной операционной системы, Web-сервера и сопутствующих программных пакетов и компонентов. Однако, как правило, все эти инструменты можно использовать для исследования любой платформы, так как многие современные Web-приложения проектировались на языках сценариев (например, Perl, PHP, VBScript), совместимых почти с любыми используемыми в настоящее время Web-платформами. Отметив это обстоятельство, перейдем к описанию различных типов инструментов.
Прямое сканирование
Компания NT OBJECTives, которая давно выпускает превосходный инструментарий для сообщества Internet, предлагает бесплатные программы NTOinsight и NTOweb. NTOinsight — анализатор Web-сервера, который может выполнить поиск в любом числе серверов и идентифицировать все связанные с ними ресурсы. NTOweb — модуль расширения для NTOinsight, который функционирует совместно с общедоступной базой данных Nikto, содержащей более 3000 URL-суффиксов для уязвимых приложений. Совместно эти два инструмента обеспечивают интенсивный аудит Web-серверов на основе Microsoft IIS, Apache и других платформ.
NTOinsight и NTOweb — сравнительно простые в использовании инструменты командной строки. После их установки следует сначала запустить NTOweb без параметров командной строки, чтобы загрузить новейшую версию базы данных Nikto, а затем работать с NTOinsight.
NTOinsight располагает длинным списком возможных параметров командной строки, в том числе для исследования большого числа серверов, аутентификации NT LAN Manager (NTLM), проверки proxy-серверов, определения максимального числа запросов к странице и интервалов между запросами, а также анализа поведения при обходе домена и сервера. Ниже приведена команда, с которой можно начать работу с инструментом. Параметр -h указывает узел, который нужно исследовать; -sn — имя сеанса сканирования и каталога, в который будет записан отчет; -ntoweb указывает на необходимость сверки с базой данных Nikto с использованием модуля NTOweb; -delay — на задержку между запросами (в миллисекундах).
ntoinsight -h www.myhost.nul
-sn myhost -ntoweb -delay 1000
Процесс сканирования NTOinsight (и всех инструментов, описанных в данной статье) может занимать от нескольких минут до нескольких часов (до суток и более!), в зависимости от числа страниц в исследуемом сервере. На экране 1 показано, как можно следить за ходом проверки.
Экран 1. Наблюдаем за ходом сканирования NTOinsight |
После завершения сканирования можно просмотреть графический отчет. По умолчанию отчеты сохраняются в каталоге ReportsInsightdate, где date — дата проверки. Из главного отчета можно перейти к более подробным отчетам об обнаруженных ресурсах и потенциальных уязвимых местах.
Администраторам, которым придется по душе NTOinsight, вероятно, понравится и NTOSpider компании NT OBJECTives, коммерческая программа поиска уязвимых мест в Web-приложениях. NTOSpider по своим возможностям значительно превосходит NTOinsight; он обеспечивает поиск множества потенциальных проблем в Secure Sockets Layer (SSL), Java, proxy-серверах, пользовательских сеансах и др. Кроме того, с помощью инструмента можно тестировать приложения на устойчивость к атакам с использованием встроенных команд SQL и кросс-узловых атак с применением сценариев.
Простой Perl-сценарий screamingCobra создан компанией DEFCON 5 много лет назад в ходе работы над алгоритмом обнаружения уязвимых мест в сценариях. Несмотря на возраст, screamingCobra — довольно полезная программа. В сценарии имеется четыре основных параметра командной строки: показать панель состояния (-s), не игнорировать никаких файлов
(-i), использовать дополнительные методы для обнаружения cbugs (-e) и режим отображения всей информации (-v). Информацию о cbugs можно получить на Web-узле The Bugs Project по адресу http://www.mrc-bsu.cam.ac.uk/bugs. Конечно, необходимо указать адрес проверяемого Web-узла. Рекомендуется запускать сценарий с параметрами -i, -e и -v, как в следующей команде:
perl screamingcobra.pl -e -i -v
http://www.mysite.nul
Сценарий переходит от страницы к странице, собирая URL-адреса из Web-узла. Если обнаружен потенциально уязвимый URL, screamingCobra печатает сообщение с заголовком BUG FOUND. С помощью следующей команды можно направить выходные данные screamingCobra в файл report.txt:
perl screamingcobra.pl -e -i -v
http://www.mysite.nul >
report.txt
Если в компьютере установлена утилита grep, то с ее помощью можно сохранить в текстовом файле данные об обнаруженных проблемах. Следующая команда сохраняет только сведения о проблемах:
perl screamingcobra.pl -e -i -v
http://www.mysite.nul > grep
«BUG FOUND» > report.txt
В целом screamingCobra — эффективный способ тестирования безопасности приложений, особенно если используется Web-платформа Linux. Большинство проверок, выполняемых screamingCobra, направлено на поиск пробелов в системе безопасности, типичных для приложений Linux. Программу можно использовать в качестве дополнения к другим инструментам, рассмотренным в данной статье.
Использование поисковых механизмов
MET работает с API компании Google и запрашивает из Google ссылки на проверяемый Web-узел, которые могут представлять потенциальные уязвимые места. С помощью MET можно конструировать специализированные запросы или работать с Google Hacking Database (GHDB-http://johnny.ihackstuff.com), еще одной общедоступной базой данных URL-суффиксов, связанных с уязвимыми Web-приложениями. В данной статье приводится простой пример применения MET с GHDB.
Google API (http://www.google.com/apis/index.html) обеспечивает использование подобных MET-инструментов, которые генерируют большое число запросов к базам данных Google. Чтобы задействовать API, необходимо получить лицензию от Google. Процедура проста: достаточно заполнить форму и дождаться ключа API, который высылается по электронной почте. Ключ API позволяет выполнить до 1000 автоматизированных запросов в день. Если направить большое число последовательных запросов в Google без ключа API, то Google обнаружит активность и на некоторое время блокирует доступ.
Метод Google позволяет запрашивать конкретные данные о Web-узле, не посылая на него трафика. Из-за этой особенности Google представляет собой обоюдоострый меч: взломщики могут скрыто обследовать Web-узел, но администраторы могут делать то же самое и отыскать потенциальные уязвимые места или нечаянно открытую информацию. Перемещаясь по Web, роботы Google собирают массу информации, поэтому необходимо направить в Google запрос, чтобы выяснить, какие сведения о ваших Web-узлах хранятся в базе данных.
MET составлен на языке сценариев Python; для работы с ним необходим экземпляр Python, который можно загрузить из http://python.org. Установите Python, затем MET, а потом загрузите экземпляр GHDB и поместите его в подкаталог в каталоге Python. Например, можно извлечь GHDB в папку pythonetc (она появляется после установки Python). После этого можно приступать к работе. Если используется версия MET с MSI Installer, то сценарий устанавливается в каталоге pythonscripts, и запустить его можно с помощью следующей пробной команды:
python scriptsgoogle ghdb -v
—database=etcghdb.xml
—key=XYZ —output=mysite.txt
?site:mysite.dom?
Параметр -v обеспечивает запуск MET в режиме отображения всей информации для наблюдения за ходом работы. Символы XYZ следует заменить ключом API Google. Последний параметр, ?site:mysite.dom?, — фильтр запросов. Он должен быть последним параметром в командной строке, а mysite.dom требуется заменить доменным именем. По этой команде MET пытается найти каждый URL, перечисленный в GHDB на Web-узле (экран 2), и записывает результаты в выходной файл mysite.txt.
Экран 2. MET запрашивает каждый URL |
Следует обратить внимание, что Google API позволяет сделать только 1000 запросов в день, поэтому запросы приходится дозировать. Причина в том, что во время подготовки данной статьи версия GHDB по адресу http://johnny.ihackstuff.com содержала более 1100 запросов. Чтобы работать с этой версией, необходимо разделить файл на два и использовать полученные файлы в разные дни. При делении файла следует обратить особое внимание на формат XML. Каждый файл должен располагать корректным набором заголовков.
SiteDigger 2.0 — еще один инструмент, который направляет запросы в Google, чтобы обнаружить потенциально уязвимые приложения на Web-узле. Инструмент, который поставляется вместе со 175 специальными строками запросов URL, также может использоваться с GHDB. Чтобы начать работу, необходимо ввести ключ API Google в поле лицензионного ключа в пользовательском интерфейсе SiteDigger.
Прежде чем запустить запросы, требуется обновить базы данных Foundstone и GHDB из меню Update. В любом случае пользователь устанавливает и снимает флажки, выбирая нужные запросы. Следует ввести адрес Web-узла на вкладке Search, а потом щелкнуть на кнопке Search.
Экран 3. HTML-отчет SiteDigger 2.0 |
После завершения поиска можно щелкнуть на кнопке Export Results на вкладке Search, чтобы экспортировать результаты. SiteDigger выдает ясный отчет в формате HTML (экран 3). Отчет SiteDigger не так подробен, как отчет NTOinsight, но содержит полезную сводку возможных уязвимых мест, объяснения и ссылки на подозрительные URL сайта. Компания Foundstone также позволяет оценивать уязвимость по расписанию или по требованию.
Гибридный инструмент
Вследствие расширенной функциональности программа Wikto несколько сложнее в использовании. Wikto перемещается по Web-узлам, копирует их на локальный диск, направляет запросы в Google через Google API, чтобы отыскать возможные URL-адреса, связанные с проверяемыми сайтами, и работает с базой данных Nikto, а также с GHDB. Запросы от базы данных Nikto направляются в Web-серверы напрямую, а GHDB запрашивает в Google комбинации URL, относящиеся к проверяемым Web-серверам.
В сущности, Witko представляет собой комбинированный сканер и анализатор, но для подготовки отчетов требуется экспортировать данные в формате с разделением запятыми (CSV), а затем импортировать данные в электронную таблицу или базу данных для генерации отчетов и дальнейшего анализа.
Прежде чем загрузить Wikto, нужно получить бесплатную учетную запись на Web-узле SensePost. Ссылка для регистрации находится в верхней части Web-страницы Wikto. После регистрации идентификатор и пароль направляются по указанному получателем адресу электронной почты.
Для использования Wikto необходимы два бесплатных инструмента от независимых поставщиков — HTTrack (http://www.httrack.com) и httprint (http://net-square.com/httprint). HTTrack создает полные копии Web-узлов, а httprint определяет, какие серверные программы используются на Web-узле, путем анализа пакетов Internet Control Message Protocol (ICMP). Оба инструмента применяются для уточнения проверок Wikto.
После установки всех трех инструментов нужно настроить Wikto и обновить базу данных. Сначала следует щелкнуть на вкладке SystemConfig, чтобы убедиться в корректности путей для HTTrack, httprint и баз данных Nikto и GHDB. Также необходимо ввести ключ API Google в соответствующее поле. Щелкните на Save, чтобы сохранить конфигурацию на диске. Затем нужно щелкнуть на Update NiktoDB и следовать инструкциям на экране. После того как загрузка будет завершена, необходимо щелкнуть на Update NiktoDB и вновь следовать приглашениям системы. Теперь все готово к аудиту Web-узла.
Первый шаг в процессе аудита Web-узла — создать его зеркальную копию. Зеркальная копия используется для того, чтобы определить встроенные ссылки и пути каталогов, которые можно иначе просто не увидеть. Щелкните на вкладке Mirror & Fingerprint, введите адрес домашней страницы Web-узла в поле Target и щелкните на кнопке Start. Wikto использует HTTrack для получения полной копии Web-узла на локальной системе. После завершения процесса зеркального копирования на экране появляется список обнаруженных каталогов в поле Directories Mined в правой панели экрана.
Второй шаг — перейти к вкладке Googler, убедиться, что поля Site/Domain field и Google Keyword содержат URL домашней страницы сайта, и щелкнуть на кнопке Start. В результате будет выдана серия запросов в Google для поиска различных типов файлов, выявленных на Web-узле. Этот процесс поможет обнаружить дополнительные пути каталогов на Web-узле. После завершения операции может оказаться, что обнаружено гораздо больше каталогов, чем на первом этапе.
Затем следует перейти на вкладку BackEnd и щелкнуть на кнопках Import from Google и Import from Mirror, чтобы импортировать данные, собранные на этапах 1 и 2. В разделе Update from SensePost следует выбрать пункт Full из раскрывающегося меню, а затем щелкнуть на Update from SensePost. В результате полный список каталогов будет обновлен через импорт данных из Web-узла SensePost. Необходимо убедиться, что в поле IP/DNS name указана домашняя страница Web-узла, а затем щелкнуть на кнопке Start Mining. Иногда для этого требуется много времени, в зависимости от числа каталогов и файлов, поэтому нужно набраться терпения. В результате будут выявлены все доступные пользователям файлы и каталоги. Любые обнаруженные административные интерфейсы и другие чувствительные зоны сайта необходимо защитить с использованием какого-либо метода аутентификации.
После завершения данного процесса можно перейти на вкладку Wikto и вкладку GoogleHacks, назначение которой очевидно. Следует убедиться, что URL-адрес Web-узла введен правильно, а затем щелкнуть на кнопке Load, чтобы загрузить соответствующие базы данных, и нажать Start. Результаты отображаются в окне на каждой вкладке.
После завершения проверки можно просмотреть и экспортировать результаты в формате CSV, а затем импортировать их в электронную таблицу или базу данных для дальнейшего анализа или подготовки отчета, как упоминалось ранее. В дополнение к Wikto, SensePost также предоставляет подписную оперативную службу сканирования.
Проверка безопасности Web-приложений
В данной статье описано несколько полезных инструментов и способы их применения для оценки безопасности Web-приложений. С помощью инструментов, напрямую сканирующих серверы, и инструментов, связанных с поисковыми механизмами Internet, можно найти уязвимые места и устранить их, чтобы сервер был неприступен для среднего взломщика. Главное преимущество бесплатных инструментов — возможность начать использовать их немедленно и регулярно применять впоследствии.
Марк Джозеф Эдвардс - старший редактор Windows IT Pro и ведущий еженедельного электронного бюллетеня Security UPDATE. С ним можно связаться по адресу mark@ntsecurity.net