Автоматическое выявление уязвимостей: описание и статистика
Пришло время подвести результаты автоматического сканирования, которое было анонсировано 3 недели назад. Было прислано несколько заявок на автоматический аудит, большинство сайтов представляли коммерческий сектор — интернет-магазины и корпоративные сайты.
Выбор инструмента
Для автоматического тестирования был выбран один из самых популярных opensource сканеров уязвимостей — w3af.
w3af или Web Application Attack and Audit Framework — это гибкая платформа для поиска и эксплуатации уязвимостей в веб-приложениях, работает на большинстве современных систем, написан на Python. Этот фреймворк иногда называют «Metasploit для веб».
Для упрощения процесса автоматизированного тестирования была взята консольная версия w3af_console. Как и в GUI версии, где всем управляют профили (состоящие из плагинов), в консольной версии все управление и настройки тоже зависит от подключенных плагинов в так называемом script файле.
Как это работает
Формат запуска настроенного скрипт-файла довольно прост:
./w3af_console -s MyScript.w3af
Скрипт файл состоит из последовательности подключаемых видов плагинов и их параметров:
plugins
output console,text_file
output
output config text_file
set output_file report.txt
set verbose True
back
output config console
set verbose False
back
crawl all
crawl
grep all
grep
audit all
audit
bruteforce all
bruteforce
back
target
set target http://targethost
back
start
В представленном примере будут собраны все ссылки с сайта targethost, проанализированы запросы и ответы, комментарии, вывод ошибок, проверятся по базе знаний/признаков на наличие распространенных веб-уязвимостей, обнаруженные формы ввода будут подвергнуты bruteforce-атаке (подбор паролей) и результат будет сохранен в файл report.txt с полным выводом работы плагинов.
вывод подключаемых плагинов в ручном режиме в консоли w3af_console
Из чего состоит
В зависимости от типа воздействия существует несколько видов подключаемых плагинов:
- attack — для реализации атаки, эксплойтинг. В автоматическом аудите не использовались.
- audit — выявление уязвимостей веб-приложения, содержит плагины для поиска XSS, SQLi, CSRF, LFI, RFI, open redirects и многие другие. Часть плагинов использовалось в автоматическом аудите.
- auth — плагины для задания параметров авторизации на исследуемом ресурсе. В автоматическом аудите не использовались.
- bruteforce — плагины для проведения атаки «подбор по словарю» (bruteforce). В автоматическом аудите не использовались.
- crawl — плагины для поиска и сбора информации, перебора имен файлов и директорий, использования поисковых систем, определения типа CMS, анализа форм для передачи в отделы audit/bruteforce/attack. Часть плагинов использовалось в автоматическом аудите.
- evasion — плагины для обхода IDS, политик безопасности и WAF. В автоматическом аудите не использовались.
- grep — плагины для анализа запросов/ответов веб-сервера, поиска критичной информации, вывода ошибок, комментариев в исходном коде и т.д. Часть плагинов использовалось в автоматическом аудите.
- infrastructure — плагины для анализа настроек сервера, мисконфигураций, виртуальных хостов и т.д. Часть плагинов использовалось в автоматическом аудите.
- mangle плагины для модификации запросов «на лету». В автоматическом аудите не использовались.
- output — плагины для вывода и сохранения результатов работы. Часть плагинов использовалось в автоматическом аудите.
Готовые примеры скрипт-файлов под разные вектора атаки и тип воздействия вы можете найти здесь. Их работоспособность можно протестировать в специализированной уязвимой среде moth.
Статистика
Для проведения автоматического аудита был скомпонован script файл для поиска и выявления полной карты сайта, типа CMS, веб-сервера и поиск уязвимостей OWASP TOP-10, настроена система проверки легитимности и компоновки отчетности (резюмирующие рекомендации по найденным уязвимостям добавлялись сотрудниками нашей компании вручную, машина не может проанализировать вектора атаки и составить точный сценарий атаки).
скриншот системы добавления задания на автоскан
Из общего количества сайтов топ-5 по общему объему выявленных уязвимостей выглядит так:
- Утечка чувствительных данных — OWASP A6 (sensitive data exposure) — неверные конфигурации сертификатов, сюда же отнесены неправильно настроенные политики HSTS.
- Небезопасная конфигурация — OWASP A5 (security misconfiguration) — листинг директорий, настройки по-умолчанию, устаревшие версии ПО.
- Использование компонентов с известными уязвимостями — OWASP A9 (using components with known vulnerabilities) — было найдено несколько незакрытых уязвимостей, с доступными публичными эксплоитами.
- Межсайтовый скриптинг — OWASP A3 XSS (cross-site scripting) — было найдено несколько пассивных XSS.
- Внедрение кода — OWASP A1 (injection) — уязвимости типа SQL-injection все еще достаточно распространены.
Время сканирования ресурсов занимало от 10 минут до 2 суток. Несколько сайтов не выдержали нагрузки и автоматическое тестирование было остановлено до восстановления работоспособности. По всем выявленным уязвимостям были составлены отчеты, содержащие перечисление выявленных уязвимостей, вероятность компрометации веб-приложения и возможный сценарий атаки.