Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3277 / 705 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 8:

Средства взлома Web-приложений Hacking Tools

Создание новых правил

Конструирование правил для Stealth весьма просто. Вы задаете URL, метод запроса и ожидаемый HTTP-код возврата. Например, для поиска резервной копии index.html файла вам следует создать файл со следующим содержимым.

#INF Backup index.html file
#GET /index.html.bak #200

Вместо метода #GET также может быть #HEAD или #POST. Код возврата #200 может быть заменен любым кодом возврата HTTP. Stealth не поддерживает пользовательские массивы, поэтому файлы внутри набора директорий должны быть перечислены отдельно. Параметры #GET и #200 подразумеваются по умолчанию и потому могут быть опущены. Как видно, базовый тест Stealth для URL не так развит как у whisker. У Stealth есть средство для упрощения разработки тестов на уязвимость - Stealth Exploit Development Tool.

Exploit Development Tool - это утилита с оконным интерфейсом, облегчающая заполнение всех возможных полей, которые могут быть созданы для определения метода тестирования. На рис. 8.4 показаны настройки для нашего простого теста для файла index.html.bak.

Настройка теста уязвимости

Рис. 8.4. Настройка теста уязвимости

На закладке Options вы можете задать строку, которая будет показывать возврат ложного ответа или определять User-Agent. Некоторые Web-приложения используют заголовок User-Agent, чтобы принять решение о том, может ли броузер получить доступ к сайту. Некоторые броузеры не поддерживают JavaScript, ActiveX или Java, и это может послужить отказом в доступе к сайту. На рис. 8.5 показан этот параметр.

Параметры для теста уязвимости

Рис. 8.5. Параметры для теста уязвимости

Другой классный прием, используемый в Stealth - это тест на переполнение буфера. Атака на переполнение буфера может быть применена против любого адреса, по которому Web-приложение требует списка параметров. Правило для проверки на переполнение буфера содержит четыре составляющих.

  • bofgen. URL, введенный в двойных кавычках.
  • bofstr. Строка, используемая для атаки.
  • bytes. Количество повторений символа, используемого для переполнения буфера.
  • chars. Символ для заполнения буфера.

Ниже приведено правило для проверки условий переполнения буфера в строке авторизации ввода Web-приложения.

#INF Login.asp buffer overflow check
"bofgen=/login.asp?user=%bofstr&passwd=none","bytes=999","chars=A"

В HTTP-запросе, который посылает Stealth, строка %bofstr меняется на 999 символов A.

Как только описание метода взлома создано, вам остается указать Stealth применить его. Если вы поместите файл в директорию Db, Stealth найдет его и будет использовать. Чтобы проверить созданные правила вручную или для создания нового правила щелкните на кнопке Database в окне приложения Stealth и выберите закладку Stealth User's Exploits. Пометьте соответствующий метод для его активации. На рис. 8.6 показан пример теста, называемого Sourcedis, который обычно не используется.

Добавление новых тестов

Рис. 8.6. Добавление новых тестов
Пресечение уклонения Pitfalls to Avoid

Как уже упоминалось, возможности Stealth по автоматическому сканированию набора Web-серверов ограничены. Stealth время от времени генерирует ошибки DNS, которые обычно случаются в процессе сканирования сервера с виртуальными хостами или когда сканируется сервер с несколькими IP-адресами (как в случае со многими большими, сильно загруженными сайтами). Ошибка DNS безобидна, но ее появление требует, чтобы вы закрыли окно сообщения, которое генерирует Stealth.

Большая часть тестов Stealth опирается на возвращаемые сервером HTTP-коды. Это хорошо, когда вы тестируете имеющиеся скрипты на наличие прорех, но это вовсе не означает, что скрипт уязвим. Большинство прорех viewcode.asp в IIS-файлах зафиксировано последующими заплатками; но Stealth только определяет их наличие и ошибочно принимает положительное решение. Даже если Stealth и может распознать специфические строки в результатах работы теста, немногие тесты могут это сделать. Использование HTTP-кодов возврата не означает, что Stealth может пропустить прореху, но это означает, что он может породить большое количество ошибочных положительных решений о наличии таких прорех.

Опирающаяся на оконный интерфейс утилита не слишком хорошо взаимодействует с другими. Сложно создать скрипт, который генерирует список Web-серверов или систем с открытым 80 портом, передать этот список на вход Stealth и затем разобрать выходной файл. Средства, выполняемые из командной строки, с другой стороны, могут быть встроены в конструкции программных циклов, и программными конвейерами передавать данные средствам разбора результатов, которые вы предпочитаете. Помните, как просто вы манипулировали выводом от whisker с помощью утилит tee и grep?

Stealth не поддерживает SSL-соединение. Это просто преодолеть. В разделе "Многоцелевые средства" мы увидим, как SSL-прокси легко решает эту проблему.

Twwwscan/Arirang

Twwwscan и arirang - близнецы. Twwwscan - Windows-сканер, с полностью графическим интерфейсом. Arirang построен на основе прототипа из Berkeley Software Distribution (BSD) и использует такое же, как twwwscan, рабочее ядро, тот же формат базы данных.

Реализация: компиляция исходных текстов

В отличие от whisker, который написан на Perl и не требует никаких изменений при запуске perl-интерпретатором, arirang написан на C и должен быть скомпилирован до выполнения в системе. В среде BSD arirang распространяется в коллекции портов. Коллекция портов - нечто большее, чем репозиторий архивных файлов. Она включает набор специфических для FreeBSD (или других BSD) заплаток, инструкции по компиляции и сборке, тестированию и инсталляции программ ( makefiles ) и список текущих мест расположения, откуда можно загрузить обновленные версии программ. Дополнительную информацию вы можете получить по адресу http://wwwfreebsd.org/ports/index.html.

Процесс инсталляции похож на многие другие программы из коллекции портов. Прежде всего, убедитесь, что ваша коллекция портов актуальна (внесены последние изменения), а затем соберите исполняемые коды arirang.

$ cd /usr/ports/security/arirang
$ cvs up -Pad
$ make
$ make install

Наберите arirang в командной строке, и справка по использованию программы сможет поприветствовать вас.

Запуск Arirang. Запуск Arirang следует принципу простоты. Программа разработана как быстрый, качественно работающий сканер уязвимостей. Поддержка прокси, SSL и средств обхода IDL были принесены в жертву скорости и аккуратности работы. Запустив arirang с набором правил сканирования по умолчанию, можно увидеть вывод, похожий на информацию, выдаваемую whisker.

$ arirang -G -h www.victim.com

Параметр -G указывает на необходимость использования информации из заголовка тестируемого Web-сервера для определения типа сервера и используемой операционной системы. Вместо этого вы можете задать параметр -o, чтобы запросить netcraft-тип сервера и его версию. По умолчанию arirang, сканирует 80 порт, но воспользовавшись параметром -p, вы можете сканировать другой порт. Помните, по аналогии со Stealth, если вы используете 443 порт, arirang может это делать, но не поддерживает SSL-соединение.

Примечание. Netcraft, по адресу http://www.netcraft.com, собирает информацию о Web-серверах и сортирует эти данные в соответствии с базовой операционной системой и ПО Web-сервера. Эта база данных, возможно, достаточно полная, но он также опирается на информацию, полученную из заголовка, передаваемого тестируемым сервером, и результаты finger -тестирования с использованием сканеров типа nmap.

Вы также можете запустить arirang со списком Web-серверов, используя параметр f.

$ arirang -G -f hosts.txt

Arirang также предоставляет возможность сканировать интервал IP-адресов с помощью параметра -s (start) и -e (end).

$ arirang -G -s 192.168.17.2 -e 192.168.17.245

Параметр -P (верхний регистр) позволяет ускорить работу программы, особенно в случае использования параметра -f или сканирования интервала IP-адресов. Параметр -P управляет количеством одновременно выполняемых процессов. Сканирование уязвимостей не слишком интенсивный с точки зрения загрузки процессора процесс, но он опирается на установление сетевых соединений. Запуск нескольких процессов ведет к уменьшению общего времени сканирования.

$ arirang -G -f hosts.txt -P 20