Хабрахабр

Чем искать уязвимости веб-приложений: сравниваем восемь популярных сканеров

Сканеры веб-приложений — довольно популярная сегодня категория софта. Есть платные сканеры, есть бесплатные. У каждого из них свой набор параметров и уязвимостей, возможных для обнаружения. Некоторые ограничиваются только теми, что публикуются в OWASP Top Ten (Open Web Application Security Project), некоторые идут в своем black-box тестировании гораздо дальше.

В качестве тренировочных мишеней выбрали независимые точки на двух платформах (. В этом посте мы собрали восемь популярных сканеров, рассмотрели их подробнее и попробовали в деле. NET и php): premium.pgabank.com и php.testsparker.com.

OWASP ZAP

Как можно догадаться по названию, за выпуск OWASP ZAP отвечает та самая организация OWASP, что мы упомянули во вступлении. Это бесплатный инструмент для тестирования на проникновение и для поиска уязвимостей в веб-приложениях.

Основные возможности OWASP ZAP:

  • Man-in-the-middle Proxy
  • Traditional and AJAX spiders
  • Automated scanner
  • Passive scanner
  • Forced browsing
  • Fuzzer

Дополнительные фичи

  • Dynamic SSL certificates
  • Smartcard and Client Digital Certificates support
  • Web sockets support
  • Support for a wide range of scripting languages
  • Plug-n-Hack support
  • Authentication and session support
  • Powerful REST based API
  • Automatic updating option
  • Integrated and growing marketplace of add-ons

Интерфейс программы переведен на русский, что будет удобно для некоторых пользователей. Рабочая область OWASP ZAP складывается из нескольких окон. Внизу — вкладки с текущими заданиями и процесс их выполнения, слева — дерево сайтов, дополнительно можно вывести в правую часть окна запросов и ответов.

С помощью маркетплейса можно немного расширить функциональность сканера.

Например, мы можем настроить входящие векторы для активного сканирования, сгенерировать динамические SSL-сертификаты, добавить идентификаторы HTTP-сессий и т.д. У каждого компонента программы есть много настраиваемых параметров.

При сканировании сайта php.testsparker.com была найдена Blind SQL Injection. Перейдем к тестам. На этом критичные уязвимости заканчиваются.

Полные результаты OWASP ZAP на php.testsparker.com

H: Advanced SQL Injection — AND boolean-based blind — WHERE or HAVING clause
M: X-Frame-Options Header Not Set
L: X-Content-Type-Options Header Missing
L: Web browser xss protection is not enabled

На premium.bgabank.com мы видим более интересные результаты: найдена возможность Server Side Include (SSI) и Reflected Cross Site Scripting.

Полные результаты OWASP ZAP на premium.bgabank.com

H: Server Side Include
H: Reflected Cross Site Scripting
M: X-Frame-Options Header Not Set
M: Application Error Disclosure
M: Directory Browsing
M: Secure Pages Include Mixed Content (Including Scripts)
L: X-Content-Type-Options Header Missing
L: Web browser xss protection is not enabled
L: Cross-Domain JavaScript Source File Inclusion
L: Incomplete or No Cache-control and Pragma HTTP Header Set
L: Cookie No HttpOnly Flag
L: Cookie Without Secure Flag
L: Content-Type Header Missing
L: Private IP Disclosure
I: Image Exposes Location or Privacy Data

Все результаты сканирования можно экспортировать в отчет (поддерживается *.pdf, *.html, *.xml, *.json). В отчете подробно описываются уязвимости, найденные векторы, а также методы «закрытия» уязвимостей.

Есть все необходимые инструменты для пентеста веб-приложения, простой и понятный интерфейс, быстрое сканирование в один клик. В целом работать с OWASP ZAP нам понравилось. Ниже мы еще расскажем о сканере Burp Suite Pro, который имеет с OWASP ZAP много общего. И при этом гибкие, глубокие настройки для более детального сканирования, что может послужить отправной точкой для дальнейшего ручного поиска уязвимостей. Рекомендован к использованию в работе. По количеству и качеству найденных уязвимостей первый рассмотренный нами сканер показал очень неплохой результат.

W9scan

W9scan — это бесплатный консольный сканер уязвимостей сайта с более чем 1200 встроенными плагинами, которые могут определять отпечатки веб-страниц, портов, проводить анализ структуры веб-сайта, находить различные  популярные уязвимости, сканировать на SQL Injection, XSS и т. д.

Более полный список возможностей W9scan

— Fingerprint detection

  • Can identify common website CMS fingerprints ( 300+)
  • Recognizable common website frame
  • Identify common port service fingerprints
  • Detect website scripting language
  • Detect operating system type
  • Detection Website Firewall (WAF)

— Attack parameter

  • SQL injection (based on crawlers)
  • XSS injection (based on reptiles)
  • A large number of Fuzz parameter scans
  • CVE vulnerability
  • struts Vulnerability collection (including automatic detection)
  • Shellshock cgi test
  • heartbeat Bleeding heart
  • IIS parsing vulnerability
  • IIS Put vulnerability

— Violent cracking

  • Backup files and directories (based on crawlers)
  • Backup files and directories (based on domain name)
  • Common directory
  • Common file
  • Subdomain violence analysis
  • fckeditorPath enumeration
  • Common mdbdatabase enumeration
  • git svn Leak identification
  • TOMCAT web.xml Give way

— Сollect message

  • Emails (based on reptiles)
  • Private IP (based on reptiles)
  • E-mail (based on reptiles)
  • Detecting Warnings, Fatal Error,…
  • PHP version identification
  • IIS information disclosure
  • IP address attribution
  • Integrated Wappalyzer recognition script
  • robots.txt Analysis
  • Detecting unsafe headers in headers
  • Detecting unsafe factors in cookies

W9scan автоматически генерирует отчеты о результатах сканирования в формате HTML. Для запуска сканирования требуется только указать URL сайта и плагины, которые будут использоваться. Можно выбрать сразу все, дописав «all».

Из менее критичного — определил версии используемых сервисов, возможные векторы проведения XXE, XXS-атак, нашел конфигурационные файлы сервера и провел поиск субдоменов. При сканировании php.testsparker.com W9scan нашел svn и возможные пути загрузки payload.

Но сканер определил возможные векторы проведения атак, определены версии сервисов, директории и субдомены. На сайте premium.bgabank.com ничего критичного найдено не было.

По результатам сканирования W9scan автоматически генерирует файл отчета в формате HTML.

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

Wapiti

Ещё один неплохой консольный сканер. Так же, как и W9scan, готов к старту в одну команду, при этом имеет больше разных настроек сканирования.

Wapiti производит поиск следующих уязвимостей:

  • File disclosure (Local and remote include/require, fopen, readfile...)
  • Database Injection (PHP/JSP/ASP SQL Injections and XPath Injections)
  • XSS (Cross Site Scripting) injection (reflected and permanent)
  • Command Execution detection (eval(), system(), passtru()...)
  • CRLF Injection (HTTP Response Splitting, session fixation...)
  • XXE (XML External Entity) injection
  • SSRF (Server Side Request Forgery)
  • Use of know potentially dangerous files
  • Weak .htaccess configurations that can be bypassed
  • Presence of backup files giving sensitive information
  • Shellshock

В дополнение ко всему перечисленному имеется поддержка прокси (HTTP, HTTPs и SOCKS5), различных методов аутентификации (Basic, Digest, Kerberos, NTLM),  поддержка SSL-сертификатов, возможность добавления различных HTTP-заголовков или настроек user-agent.

На premium.bgabank.com Wapiti в сравнении с другими сканерами показывает не такие выдающиеся результаты: был обнаружен только Cross Site Scripting. При сканировании сайта php.testsparker.com были найдены уязвимости Blind SQL Injection, Cross Site Scripting, Commands execution.

По результатам работы сканера также формируется отчет в формате HTML, в котором содержатся категории и число найденных уязвимостей, их описание, запросы, команды для curl и советы о том, как закрыть найденные дыры в безопасности.

Но все же он отработал качественнее W9scan, хотя не был произведен поиск директорий, субдоменов и определение версий сервисов. Как и следовало ожидать, Wapiti до уровня OWASP ZAP, конечно, не дотягивает.

Arachni

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

Активное тестирование:

  • SQL injection — Error based detection
  • Blind SQL injection using differential analysis
  • Blind SQL injection using timing attacks
  • NoSQL injection — Error based vulnerability detection
  • Blind NoSQL injection using differential analysis

Полный список функций для активного тестирования

  • CSRF detection
  • Code injection
  • Blind code injection using timing attacks
  • LDAP injection
  • Path traversal
  • File inclusion
  • Response splitting
  • OS command injection
  • Blind OS command injection using timing attacks
  • Remote file inclusion
  • Unvalidated redirects
  • Unvalidated DOM redirects
  • XPath injection
  • XSS
  • Path XSS
  • XSS in event attributes of HTML elements
  • XSS in HTML tags
  • XSS in script context
  • DOM XSS
  • DOM XSS script context
  • Source code disclosure
  • XML External Entity

Пассивное тестирование:

  • Allowed HTTP methods
  • Backup files
  • Backup directories
  • Common administration interfaces
  • Common directories
  • Common files

Полный список функций для пассивного тестирования

  • HTTP PUT
  • Insufficient Transport Layer Protection for password forms
  • WebDAV detection ( webdav).
  • HTTP TRACE detection
  • Credit Card number disclosure
  • CVS/SVN user disclosure
  • Private IP address disclosure
  • Common backdoors
  • .htaccess LIMIT misconfiguration
  • Interesting responses
  • HTML object grepper
  • E-mail address disclosure
  • US Social Security Number disclosure
  • Forceful directory listing
  • Mixed Resource/Scripting
  • Insecure cookies
  • HttpOnly cookies
  • Auto-complete for password form fields.
  • Origin Spoof Access Restriction Bypass
  • Form-based upload
  • localstart.asp
  • Cookie set for parent domain
  • Missing Strict-Transport-Security headers for HTTPS sites
  • Missing X-Frame-Options headers
  • Insecure CORS policy
  • Insecure cross-domain policy
  • Insecure cross-domain policy
  • Insecure client-access policy

Внушительно, не правда ли? Но и это не все. В «паутину» завернута ещё куча плагинов, например Passive Proxy, Dictionary attacker for HTTP Auth, Cookie collector, WAF Detector и др.

Сканер имеет приятный и лаконичный веб-интерфейс:

Php.testsparker.com: И вот что нашел Arachni на наших тестовых сайтах.

  • Cross-Site Scripting (XSS) in script context
  • Blind SQL Injection (differential analysis)
  • Code injection
  • Code injection (timing attack)
  • Operating system command injection (timing attack)
  • Operating system command injection

Остальные уязвимости на php.testsparker.com

H: File Inclusion
H: Cross-Site Scripting (XSS) in HTML tag
H: Cross-Site Scripting (XSS)
H: Path Traversal
M: Backup file
M: Common directory
M: HTTP TRACE
L: Missing 'X-Frame-Options' header
L: Password field with auto-complete
L: Insecure client-access policy
L: Insecure cross-domain policy (allow-access-from)
L: Common sensitive file

На premium.bgabank.com из критичного была обнаружена только возможность межсайтовой подделки запросов (CSRF).

Полные результаты Arachni на premium.bgabank.com

H: Cross-Site Request Forgery
M: Mixed Resource
M: HTTP TRACE
M: Common directory
M: Missing 'Strict-Transport-Security' header
L: Private IP address disclosure

Отдельно отметим, какие симпатичные отчеты выдает нам Arachni. Поддерживается немало форматов — HTML, XML, text, JSON, Marshal, YAML, AFR.

Наше мнение: это «маст хэв» в арсенале любого уважающего себя спеца. В общем, Arachni оставляет после работы только положительные впечатления.

Paros

Еще один сканер веб-уязвимостей с графическим интерфейсом. По умолчанию включен в дистрибутив Kali Linux и установлен там локально. Имеет встроенный прокси, через который добавляются сайты для анализа, встроенный веб-паук, способный анализировать сайт и строить карту запросов.

Сканер будет использовать авторизованные куки в процессе сканирования. Для сканирования личного кабинета пользователя необходимо авторизоваться в браузере с включенным перенаправлением трафика через прокси Paros. Он сохраняется в файл root/paros/session/LatestScannedReport.htm и в дальнейшем перезаписывается. Отчет о работе можно экспортировать в HTML. Если вы хотите сохранить результат предыдущего сканирования, то перед началом следующего сканирования необходимо создать копию имеющегося файла.

Основные возможности (с оглядкой на OWASP TOP 10 2017):

  • A1: Injection — SQLinjection, SQLinjection Fingerprint (места, где потенциально может быть SQLinj)
  • A6: Security Misconfiguration — Directory browsing, ISS default file, Tomcat source file disclosure, IBM WebSphere default files и некоторые другие стандартные или устаревшие файлы (Obsolete file), содержащие исходный код и прочее.
  • A7: XSS

Дополнительные возможности:

  • Поиск включенного автозаполнения для форм паролей. При этом если у поля input есть атрибут type=«password»,  получается ложное срабатывание.
  • CRLF injection
  • Secure page browser cache (кэширование страниц в браузере c важной информацией)
  • Возможность сканирования защищенной области пользователя (личный кабинет)
  • Возможность сканирования веб-приложений в локальной сети

В финальном отчете к каждому типу уязвимостей есть более подробная информация и некоторые рекомендации о способе устранения.

На php.testsparker.com были найдены: В нашем тестировании Paros показал довольно слабые результаты.

H: SQL injection
M: XSS
M: Устаревшие файлы с исходным кодом
M: Использование автозаполнения в формах с важной информацией (пароли и прочее).
L: Раскрытие внутренних IP
На premium.bgabank.com и того меньше:
M: Directory browsing
M: Использование автозаполнения в формах с важной информацией (пароли и прочее).

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

Tenable.io

Платный многофункциональный облачный сканер, который умеет находить большое число веб-уязвимостей и почти полностью покрывает OWASP TOP 10 2017.

Если в настройках сканирования указать данные авторизации (запрос авторизации, логин и пароль, авторизованные куки), то сканер проверит и личный кабинет (зону авторизованного пользователя). Сервис имеет встроенного веб-паука.

Возможно подключение агентов для сканирования внутренней сети. Кроме сканирования веб-приложений, Tenable.io умеет сканировать сеть — как на предмет известных уязвимостей, так и для поиска хостов. Есть возможность экспортирования отчета в различные форматы: *.nessus, *.csv, *.db, *.pdf.


На скриншоте все домены «тестовые»

В данной статье не затрагиваются
Дополнительные профили сканирования.

После сканирования становится доступна статистика и приоритизация найденных уязвимостей — critical, high, middle, low, information

В карточке уязвимости представлена дополнительная информация о ней и некоторые рекомендации по ее устранению.

Уязвимости с приоритетом high: Сканируем php.testsparker.com.

H: Уязвимости компонентов
— вышедшая из поддержки версия PHP
— вышедшая из поддержки версия Apache
H: Code injection
H: SQLinj
H: XSS
H: LFI
H: Path Traversal

Middle- и low-уязвимости

M: Раскрытие ценных данных — полный путь, бекапы
M: Раскрытие внутренних IP
M: Cookie без флага HTTPOnly
M: Отправка пароля по HTTP
L: Использование автозаполнения в формах с важной информацией
L: Ответ сервера на TRACE запросы
L: Не установлены header`ы Cache-Control, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection

Теперь premium.bgabank.com. Уязвимости с приоритетом high:

H: Уязвимости компонентов

  • вышедшая из поддержки версия PHP
  • уязвимости Apache
  • уязвимости Bootstrap
  • уязвимости JQuery

Middle- и low-уязвимости

M: Web server phpinfo()
M: Совместное использование HTTP и HTTPS
M: Отсутствие перенаправления с HTTP на HTTPS
M: Directory browsing
M: Найдены backup файлы
M: Использование небезопасной версии протокола SSL
M: Истечение срока сертификата SSL/TLS
L: Раскрытие внутренних IP
L: Cookie без флага HTTPOnly
L: Ответ сервера на TRACE запросы
L: Не установлены header`ы Strict-Transport-Security, Cache-Control, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection

Сканер Tenable.io показал себя хорошо, нашел множество уязвимостей. Работу с ним упрощает удобный графический интерфейс и представление данных. Еще один плюс — наличие дополнительных профилей сканирования, в которые мы пока решили не зарываться. Важной особенностью является облачная структура сервиса. С одной стороны, сервис не использует локальные вычислительные ресурсы рабочего компьютера. С другой — не сможет просканировать веб-приложения в локальной сети.

Burp Suite Pro

Burp Suite — это комплексное решение для проверок веб-приложений. Оно включает в себя разнообразные утилиты, позволяющие улучшить и ускорить поиск уязвимостей веб-приложений.

В составе Burp Suite есть следующие утилиты:

  • Proxy — прокси-сервер, который перехватывает трафик, проходящий по протоколу HTTP(S), в режиме man-in-the-middle. Находясь между браузером и целевым веб-приложением, эта утилита позволяет перехватывать, изучать и изменять трафик, идущий в обоих направлениях.
  • Spider — веб-паук, который в автоматическом режиме собирает информацию о содержимом и функционале приложения (веб-ресурса).
  • Scanner (только в Burp Suite Pro) — сканер для автоматического поиска уязвимостей в веб-приложениях.
  • Intruder — гибкая утилита, позволяющая в автоматическом режиме производить атаки различного вида. Например, перебор идентификаторов, сбор важной информации и прочее.
  • Repeater — инструмент для ручного изменения и повторной отсылки отдельных HTTP-запросов, а также для анализа ответов приложения.
  • Sequencer — утилита для анализа случайных данных приложения на возможность предсказания алгоритма их генерации.
  • Decoder — утилита для ручного или автоматического кодирования и декодирования данных приложения.
  • Comparer — инструмент для поиска визуальных различий между двумя вариациями данных.
  • Extender — инструмент для добавления расширений в Burp Suite

Утилита Scanner представлена в одноименной вкладке основного окна программы Burp Suite. Интерфейс англоязычный, но кого сейчас это может отпугнуть?

Следует отметить, что список весьма внушительный. На вкладке Issue Definition представлен полный список всех уязвимостей, которые способен выявить данный сканер.

Также есть категория information, к которой относятся механизмы сбора различной полезной информации о сканируемом ресурсе.
При запуске сканирования в окне Scan queue мы можем наблюдать за прогрессом по этапам. Все уязвимости разделены на 3 категории: high, medium, low. «Цветовая дифференциация штанов» присутствует.

На вкладке Options выполняется основная настройка параметров сканирования.

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

При сканировании php.testsparker.com было найдено и классифицировано достаточно уязвимостей чтобы получить полный контроль над веб приложением и его данными — это и OS command injection, и SSTI, и File path traversal. В целом Burp Suite Pro показал неплохой результат.

Полные результаты Burp Suite Pro на php.testsparker.com

H: OS command injection
H: File path traversal
H: Out-of-band resource load (HTTP)
H: Server-side template injection
H: Cross-site scripting (reflected)
H: Flash cross-domain policy
H: Silverlight cross-domain policy
H: Cleartext submission of password
H: External service interaction (DNS)
H: External service interaction (HTTP)

M: SSL certificate (not trusted or expired)
L: Password field with autocomplete enabled
L: Form action hijacking (reflected)
L: Unencrypted communications
L: Strict transport security not enforced

На сайте premium.bgabank.com были найдены:
H: Cross-site scripting (reflected)
M: SSL cookie without secure flag set
M: SSL certificate (not trusted or expired)

L: Cookie without HttpOnly flag set
L: Password field with autocomplete enabled
L: Strict transport security not enforced

Если для веб-пентеста вы часто используете Burp Suite, вам нравится его экосистема, но хотелось бы как-то автоматизировать процесс поиска уязвимостей, то эта утилита отлично впишется в ваш арсенал.

Acunetix

В заключение — еще один весьма неплохой коммерческий сканер. Его очень активно продвигают с помощью рекламы, но Acutenix не добился бы успеха без своей обширной функциональности. Среди доступных ему для обнаружения уязвимостей — все виды SQL injection, Cross site scripting, CRLF injection и прочие радости пентестера веб-приложений. Стоит отметить, что для качественного сканирования требуется выбрать правильный профиль.

Интерфейс дашборда приятный:

Ну и куда же без категории Information, в которую включаются все интересные, по мнению сканера, данные. Все выявленные уязвимости по традиции раскладываются на четыре категории: High, Medium, Low.

На вкладке Scans мы можем наблюдать прогресс сканирования и прочую диагностическую информацию.

Цветовая дифференциация на месте. После завершения сканирования на вкладке Vulnerabilities мы можем ознакомиться с тем, что и в каком количестве было найдено.

В тесте на php.testsparker.com сканер показал неплохой результат, а вот с premium.bgabank.com откровенно подкачал.

Полные результаты Acunetix

php.testsparker.com:
H: Apache 2.2.14 mod_isapi Dangling Pointer
H: Blind SQL Injection
H: Cross site scripting
H: Cross site scripting (verified)
H: Directory traversal
H: File inclusion
H: PHP code injection
H: Server-side template injection
H: SVN repository found
H: User controllable script source

M: Access database found
M: Apache 2.x version older than 2.2.9
M: Apache httpd remote denial of service
M: Apache httpOnly cookie disclosure
M: Application error message
M: Backup files
M: Directory listing
M: HTML form without CSRF protection
M: Insecure clientaccesspolicy.xml file
M: Partial user controllable script source
M: PHP hangs on parsing particular strings as floating point number
M: PHP preg_replace used on user input
M: Source code disclosure
M: User credentials are sent in clear text

L: Apache 2.x version older than 2.2.10
L: Apache mod_negotiation filename bruteforcing
L: Clickjacking: X-Frame-Options header missing
L: Login page password-guessing attack
L: Possible relative path overwrite
L: Possible sensitive directories
L: Possible sensitive files
L: TRACE method is enabled

premium.bgabank.com:
L: Clickjacking: X-Frame-Options header missing

Веб-интерфейс прост и понятен, инфографика и отчеты выглядят вполне удобоваримо. Acunetix имеет большие возможности и подойдет, если вы ищете stand-alone решение. Не часто. Возможны осечки при сканировании, но, как говорил Тони Старк: «С мужиками такое случается. Один разок из пяти».

Общие итоги

А теперь выводы по всем протестированным сканерам.

  • OWASP ZAP нам понравился. Рекомендуем к использованию.
  • W9scan мы рекомендуем использовать как вспомогательный инструмент для определения версий и сервисов, а также потенциальных векторов атак.
  • Wapiti до OWASP ZAP не дотягивает, но у нас отработал качественнее W9scan.
  • Arachni — это просто «маст-хэв».
  • Paros сканирует слабо, и мы его не рекомендуем.
  • Tenable.io хорош, находит множество уязвимостей. Но стоит учесть, что он облачный.
  • Burp Suite Pro мы советуем тем, кому нравится экосистема Burp Suite, но не хватает автоматизации.
  • Acunetix подойдет тем, кто ищет сканер как stand-alone приложение.
Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть