Сканеры безопасности web-приложений – это комплексные решения, позволяющие производить поиск дефектов web-приложений, приводящих к нарушению целостности системных или пользовательских данных, их кражи или получения контроля над системой в целом. В данной статье мы проведем тестирование некоторых сканеров безопасности и попробуем проанализировать полученные результаты.

Подготовка тестового стенда

 В качестве тестового стенда мы будем использовать виртуальную машину Oracle VM VirtualBox c установленной на ней операционной системой Microsoft Window XP SP2.

2

Рисунок 1. Виртуальная машина с установленной Windows XP SP2

Также нам понадобится Web-приложение, которое будет содержать различные типы уязвимостей – и это будет Mutillidae. Мы сделали такой выбор по нескольким причинам:

  1. Простота развертывания
  2. Подробная документация
  3. Данный дистрибутив имеет самую свежую дату обновления, в отличие от остальных подобных продуктов.

1

Рисунок 2. Внешний вид веб-приложения Mutillidae

Методика тестирования

Теперь, когда мы подготовили тестовый стенд, можно рассмотреть процесс тестирования, который будет представлять собой следующую последовательность действий:

  1. Подготовка тестового приложения к сканированию
  2. Настройка сканера безопасности
  3. Запуск процесса сканирования с выбранными настройками
  4. Анализ результатов и занесение их в таблицу
Тип уязвимости Найдено Ложно найдено Время

Таблица 1. Результаты сканирования

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

Сканер

SQL injection

XSS

CSRF

The Path Traversal / Local File Inclusion

Sensitive Data Exposure

Затраченное время

Обнару-

жено

Ложно обнару-

жено

Обнару-

жено

Ложно обнару-жено

Обнару-

жено

Ложно обнару-

жено

Обнару-

жено

Ложно обнару-

жено

Обнару-

жено

Ложно обнару-

жено

Всего

Таблица 2. Итоговая таблица результатов

В процессе проведения тестов мы столкнемся с несколькими проблемами:

  1. Сканеры безопасности отличаются своей настройкой и функционалом. Для того чтобы отразить в нашем тестировании специфические особенности сканеров, мы будем проводить по несколько серий сканирования с различными конфигурациями настроек для получения более качественного результата (если это возможно).
  2. Сканеры безопасности бывают специализированы на определенном типе уязвимости либо могут определять широкий спектр уязвимостей. Если сканер специализирован на определенном типе уязвимости, следовательно, он должен более качественно определять их, в противном случае мы будем акцентирование особое внимания на не идентифицированной или ложно идентифицированной уязвимости специализированным сканером.
  3. Типы уязвимостей. Так как существует большое множество типов уязвимостей, нам надо определиться с теми типами, которые мы будем отражать в итоговом отчете. В данном вопросе мы будем руководствоваться классификацией OWASP Top 10 2013 и выберем из этого списка пять типов уязвимостей.
  4. Количество уязвимостей в веб-приложении. Заранее знать о том, какое количество уязвимостей содержится в тестовом Web приложении, мы не можем, поэтому за общее число мы возьмем сумму найденных уязвимостей всеми сканерами.

Настройка сканеров и начало тестирования

SkipFish

Данный сканер представляет собой полностью автоматизированный инструмент с консольным интерфейсом и обладает небольшим количеством настроек, с полным перечнем которых можно ознакомиться с помощью команды skipfish -h. Для запуска процесса сканирования автор предлагает три базовых варианта:

  1. skipfish -W /dev/null -LV […other options…] – в данном режиме запуска сканер выполняет упорядоченный обход цели и в принципе работает также как другие сканеры. Не рекомендуется вследствие ограниченного охвата ресурсов цели, но зато процесс сканирования занимает значительно меньше времени по сравнению с остальными режимами;
  2. skipfish -W dictionary.wl -Y […other options…] – в данном режиме сканер использует фаззинг только имен файлов или расширений. Этот режим предпочтителен, если есть ограничение по времени и при этом требуется получить приемлемый результат;
  3. skipfish -W dictionary.wl […other options…] – в данном режиме сканер перебирает все возможные пары имя и расширение. Этот режим значительно медленнее предыдущих, но при этом он проводит более детальный анализ веб-приложения. Разработчик сканера рекомендует использовать данный вариант по умолчанию.

Последуем рекомендации и воспользуемся третьим вариантом запуска, но при этом добавим необходимые опции:

skipfish -W dictionary.wl -o ~/report/ http://target/

-W – указываем путь к словарю, который мы будем использовать;

-o – указываем директорию, в которую будем сохранять отчет.

Тип уязвимости Найдено Ложно найдено Время
SQL injection 6 5 3ч18м
XSS 11 2
CSRF 1 1
The Path Traversal / Local File Inclusion 3 2
Sensitive Data Exposure 128 0

Таблица 3. Результаты сканирования SkipFish

3

Рисунок 3. Окончание процесса сканирования SkipFish

SkipFish неплохо справился с поставленной задачей, несмотря на большое количество ложных срабатываний. Стоит заметить, что хоть сканер и не имеет графического интерфейса, он очень прост в настройке. Также помимо результатов, отраженных в таблице, SkipFish обнаружил много интересной информации о Web-приложение, проанализировав которую можно улучшить защищенность приложения

SQLMap

Основной целью данного сканера является автоматический поиск и эксплуатация SQL уязвимостей. Он обладает огромным количеством настроек, позволяющих оптимизировать процесс поиска и эксплуатации уязвимостей. Для запуска сканирования можно воспользоваться визардом: sqlmap —wizard или простейшей командой: sqlmap -u «http://www.target.com/vuln.php?id=1». Мы же постараемся полностью автоматизировать процесс поиска и максимизировать результат. Запускать процесс сканирования мы будем двумя способами:

sqlmap –u "http://target/" -o –v 4 --crawl=4 --level=3 --risk=2 --forms --batch --dbms=mysql
sqlmap –l ~/burplog.log -o –v 4 --batch --level=3 --risk=2 --dbms=mysql

В первом способе мы используем встроенный в SQLMap краулер, а во втором – файл логов Burp Suite. А теперь прокомментируем параметры, которые мы использовали:

-u – после данного параметра указываем адрес цели сканирования;

-l – после данного параметра указываем путь к файлу с логами Burp Suite (или WebScarab);

-o – включаем оптимизацию;

-v – устанавливаем уровень подробности выводимой информации;

—dbms – устанавливаем СУБД, которую использует наша цель;

—forms – включаем парсинг и анализ форм, содержащихся в тестовом приложении;

—crawl – включаем встроенный краулер, который будет сканировать нашу цель;

—batch – так как мы решили полностью автоматизировать процесс поиска и эксплуатации, мы воспользуемся этим параметром, он заставляет SQLMap выполнять все действия по умолчанию, а не запрашивать решение у пользователя;

—level,  —risk – увеличиваем количество используемых тестов, при этом значительно увеличивается время сканирования.

Тип уязвимости Найдено Ложно найдено Время
SQL injection 14 0 4ч27м
XSS
CSRF
The Path Traversal / Local File Inclusion
Sensitive Data Exposure

Таблица 4. Результаты сканирования SQLMap

4

Рисунок 4. Эксплуатация обнаруженной SQL уязвимости

Как мы писали выше, SQLMap является специализированным инструментов для поиска и эксплуатации SQL уязвимостей, он справился с этой задачей на отлично, хотя полная автоматизация не дала такого результата. Добиться такого результата нам удалось благодаря ручному анализу. Стоит отметить, что время тестирования достаточно продолжительное, учитывая то, что мы занимались поиском только одного типа уязвимостей. Настройка данного сканера без подробного ознакомления с богатым перечнем опций является наиболее сложной из всех представленных в этой статье сканеров.

Acunetix Web Vulnerability Scanner (Acunetix WVS)

Данный инструмент является единственным платным представителем, работающим только на платформе Windows, в нашем тестировании. Сканер имеет как графический, так и консольный интерфейс. Для запуска процесса сканирования нужно воспользоваться визардом, в котором будет предложено использовать как стандартные настройки, так и специально сконфигурированные.

Итак, приступим к настройке сканера:

  1. На первом шаге нам предлагают ввести адрес цели, либо выбрать файл со структурой сайта, который был получен с помощью инструмента «Site Crawler», мы выберем первый вариант
  2. На втором шаге нам предстоит выбрать профиль сканирования, их достаточно много, мы выберем профиль «Default», так как он содержит в себе тесты для поиска всех доступных типов уязвимостей и настройки сканирования, которые мы оставим дефолтными
  3. На третьем шаге сканер пытается определить технологии, которые использует цель, и отображает полученные значения, при этом их можно выбрать самому либо выставить значение «Unknown». В нашем случае все значения были определены верно, и мы их оставим без изменения
  4. Следующим шагом предлагается выбрать способ аутентификации, так как нам она не потребуется, мы пропустим этот шаг
  5. На последнем шаге предлагается сохранить настройки и после нажатия «Finish» начинается процесс сканирования
Тип уязвимости Найдено Ложно найдено Время
SQL injection 1 0 2ч 13м
XSS 31 0
CSRF 19 0
The Path Traversal / Local File Inclusion 4 3
Sensitive Data Exposure 231 0

Таблица 5. Результаты сканирования Acunetix WVS

5

Рисунок 5. Окончание процесса сканирования Acunetix WVS

Простота настройки и минимум ложных срабатываний вот — что можно сказать про данный инструмент. Помимо результатов, занесенных в таблицу, Acunetix WVS собрал много информации, касающейся структуры веб-приложения и конфиденциальных данных пользователей. Одной из полезных фич сканера можно выделить предоставление подробной информации об уязвимости и методах её устранения, а также ссылки на ресурсы, содержащие исчерпывающую информацию.

Web Application Attack and Audit Framework (w3af)

Фреймворк с графическим и консольным интерфейсом, позволяющий искать и эксплуатировать уязвимости в веб-приложении. Благодаря широкому спектру плагинов можно достаточно тонко настроить процесс сканирования. Также в w3af есть готовые шаблоны для сканирования, пользователю надо ввести только адрес цели.

При настройке сканера мы будем базироваться на шаблонах «full_audit» и «full_audit_spider_man», их отличие заключается в том, что в первом шаблоне в качестве плагина краулера используется web_spider – классический web-паук, а во втором spider_man – локальный прокси. Для наших целей нам не понадобятся плагины из группы «bruteforce», включенные по умолчанию в выбранных шаблонах, поэтому мы их выключим. Осталось настроить плагины из группы «output». По умолчанию вывод собранной информации производится только в консоль, что для анализа результатов не очень удобно, поэтому мы включим плагин «html_file», который позволяет сохранять всю полученную информацию в HTML-файл.

Теперь можно ввести адрес цели и начать сканирование.

Тип уязвимости Найдено Ложно найдено Время
SQL injection 4 2 2ч57м
XSS 3 1
CSRF 25 0
The Path Traversal / Local File Inclusion 4 3
Sensitive Data Exposure 17 0

Таблица 6. Результаты сканирования w3af

6

Рисунок 6. Детали запроса, содержащего SQL уязвимость

Не зря данный инструмент является фреймворком, при определенных навыках настройки он способен собрать исчерпывающую информацию о цели за приемлемое время. Но и он не лишен недостатков, в процессе тестирования мы столкнулись с проблемой стабильности работы сканера, что не могло не огорчить.

Итоги тестирования

Что же показало наше тестирование? Если у вас появились задачи, связанные с проведением аудита безопасности веб-приложения, вам следует запастись терпением и временем. В таблице, представленной ниже можно обратить внимание на время, которое занял процесс сканирования каждым из инструментов. Оно не очень большое, причина в следующем: во-первых, тестовое приложение и сканеры безопасности находились на одной физической машине и, во-вторых, данное время не включает в себя процесс анализа полученных результатов, в реальных условиях время тестирования будет занимать значительно больше времени. Как вы успели заметить, результаты, предоставленные сканерами различаются: какой-то сканер лучше справился с поиском той или иной уязвимости, какой-то предоставил более подробную информацию о приложении в целом. В связи с этим при аудите безопасности не стоит полагаться только на один инструмент, надо использовать комплекс различных средств, в том числе и ручной анализ веб-приложения. Также стоит сказать, что веб-технологии развиваются со стремительной скоростью, и сканеры безопасности не поспевают за их развитием, поэтому перед проведением аудита надо подробно ознакомиться с технологиями, используемыми в тестируемом веб-приложении, чтобы более точно подобрать комплекс инструментов и методик.

Сканеры

SQL injection

XSS

CSRF

The Path Traversal / Local File Inclusion

Sensitive Data Exposure

Затраченное время

Обнару-

жено

Ложно обнару-

жено

Обнару-

жено

Ложно обнару-

жено

Обнару-

жено

Ложно обнару-

жено

Обнару-

жено

Ложно обнару-

жено

Обнару-

жено

Ложно обнару-

жено

SkipFish

6

5

11

2

1

1

3

2

128

0

3ч 18м

SQLMap

14

0

4ч 27м

Acunetix WVS

1

0

31

0

19

0

4

3

231

0

2ч 13м

W3AF

4

2

3

1

25

0

4

3

17

0

2ч 57м

Всего

14

32

25

3

231