С развитием веб‑технологий появлялись и продолжают появляться новые уязвимости. Однако существует большой спектр программ, которые помогают обнаруживать уязвимости в веб‑сайтах и веб‑приложениях. Среди таких программ можно выделить skipfish — инструмент с открытым исходным кодом, предназначенный для поиска уязвимостей в веб‑приложениях путем использования атаки типа перебор по словарю.

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

skipfish был создан в 2009 году компанией Google. Впоследствии данный инструмент вошел в список программ, которые поставляются вместе с операционной системой Kali Linux.

Среди достоинств можно выделить следующие:

  • бесплатный инструмент с открытым исходным кодом (open source);

  • высокая производительность. skipfish написан на языке программирования «C», благодаря чему снижается нагрузка на процессор и оперативную память. Позволяет выполнять 2 000 запросов в секунду;

  • обширный функционал, включающий в себя такие функции, как перебор по словарю, проверка на наличие SQL‑инъекций, XML инъекций и т. д.;

  • распознавание всех основных веб‑уязвимостей, среди которых SQL и PHP инъекции, межсайтовый скриптинг (XSS), Path Traversal и т. д. С полным списком поддерживаемых уязвимостей можно ознакомиться на официальном сайте в разделе «Most curious! What specific tests are implemented»;

  • поддержка автоматического сканирования с целью определения», насколько уязвимым является веб‑сайт;

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

Установка

skipfish уже предустановлен в операционной системе Kali Linux при условии, что на этапе установке ОС был выбран пункт default recommended tools или large default selection plus additional tools в разделе Software selection. В противном случае его необходимо установить вручную выполнив команду:

sudo apt -y install skipfish

Для проверки корректной установки в терминале необходимо ввести:

skipfish

Если в выводе команды отобразилась строка «skipfish web application scanner — version 2.10b», значит, установка произведена корректно.

Установить skipfish в последних версиях таких дистрибутивов как Ubuntu, Debian, Red Hat Enterprise Linux, CentOS/Fedora, не получится в связи с тем, что пакет отсутствует в репозиториях и устарел для данных ОС (последняя версия skipfish была выпущена в 2012 году). Собрать пакет из исходного кода также не получится из‑за всевозможных ошибок возникающих при компиляции. В качестве альтернативы можно использовать такие сканеры, как Nikto, arachni, owasp‑zap.

Использование

Как было упомянуто ранее, skipfish использует словари для сканирования и поиска уязвимостей. По умолчанию утилита использует свои собственные словари, которые расположены в /usr/share/skipfish/dictionaries.

Запускать программу необходимо от пользователя root или при помощи sudo. Минимальный синтаксис для запуска сканирования выглядит следующим образом: skipfish ‑o имя директории, куда будет сохранен отчет сканирования URL сайта или его IP‑адрес.

Например:

skipfish -o test http://testphp.vulnweb.com/

В качестве тестового сайта будет использоваться testphp.vulnweb.com, так как на данном сайте уже присутствуют некоторые уязвимости, благодаря чему будет наглядно показан процесс сканирования.

После запуска команды отобразится приветственное описание, в котором, в частности, говорится о том, что сканирование можно прервать в любое время путем нажатия на комбинацию клавиш Ctrl + С, а также о том, что если количество запросов будет отображаться в диапазоне 100-200, то процесс сканирования займет много времени:

После того, как будет нажата любая клавиша, или по истечению 60 секунд начнется процедура сканирования:

Показать статус сканирования можно путем нажатия на клавишу Пробел. Отобразится раздел In-flight request, который в режиме реального времени показывает сканируемые URL:

Среди полезных параметров можно выделить следующие:

-A имя пользователя:пароль – если на сканируемом сайте используется аутентификация при помощи логина/пароля, следует задать их при помощи ключа -A;

-r r_limit – задает максимальное количество запросов, которое сможет отправлять skipfish. В качестве значения можно указать число от 1 до 100000000;

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

-I string – будут сканироваться только те URL, которыезаданы в параметре -I

Процесс сканирования может занять довольно много времени — от 30 минут до нескольких часов. Длительность сканирования зависит от структуры веб‑сайта, скорости интернет соединения, а также от типа используемого словаря. Например, использование словаря complete занимает больше времени, чем при использование minimal. В любой момент сканирование можно остановить путем нажатия на сочетание клавиш Ctrl + С. После этого в терминале отобразится надпись Scan aborted by user, bailing out!, которая проинформирует, что сканирование завершено пользователем. После этого утилита сгенерирует отчет с именем index.html, который будет сохранен в ранее указанную директорию:

Файл отчета имеет следующую структуру.

Блок Document type overview:

В данном разделе все файлы сайта разбиваются на типы — html, css, plain text, xml и т. д. При раскрытии категории отображаются все найденные URL определённого типа:

При нажатии на show trace + отобразится трассировка запроса, которая включает в себя отправленный запрос (REQUEST) и полученный ответ (RESPONSE):

В блоке Issue type overview отображаются найденные уязвимости. Справа от названия уязвимости находится число, которое сообщает о количестве найденных уязвимостей данного типа:

skipfish использует 4 уровня критичности для группировки уязвимостей:

High risk — высокий уровень критичности. Данный тип уязвимостей существенно влияет на безопасность сайта. Выделяется красным цветом. К таким уязвимостям относят SQL/PHP инъекции, OS command injection (инъекция команд операционной системы), атаки типа Format String, уязвимости HTTP PUT.

Medium risk — средний уровень критичности. На данный тип уязвимостей необходимо обратить внимание. Выделяется оранжевым цветом. К таким уязвимостям относят XSS атаки, Directory Browsing, CSS инъекции.

Low risk — низкий уровень критичности. Данный тип уязвимостей оказывает минимальное воздействие на безопасность сайта. Выделяется синим цветом. К таким уязвимостям относят SSL Common Name Mismatch Error (несоответствие значение Common Name SSL сертификата к домену), XSRF (cross‑site request forgery — «межсайтовая подделка запроса»), использование само подписных сертификатов.

informational — информационный уровень. Содержит информацию о найденных версиях компонентов сайта, которые отображаются на веб‑страницах, а также отображает битые ссылки, страницы с 404 ошибкой, отладочную информацию сервера. Обозначается зеленым цветом.

Для просмотра найденной уязвимости можно перейти по URL:

Или открыть файл с трассировкой:

Как видно выше, сканер обнаружил URL сайта, на которых возможно произвести SQL инъекцию.

Рассмотрим пример с обнаруженной XSS атакой. skipfish нашел 12 URL, на которых присутствует уязвимость XSS:

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

<script>alert("Hello from skipfish!")</script>

Далее необходимо нажать на кнопку add message или клавишу Enter, и можно увидеть воспроизведённую уязвимость XSS:

Также skipfish ищет отладочную информацию и ошибки, связанные с подключением, например, к базам данных, как на скриншоте ниже: 

А также такие уязвимости, как Directory listing:

Подводя итоги, можно сказать, что несмотря на простоту использования skipfish обладает обширной базой уязвимостей. Отчет, который утилита генерирует по завершению сканирования, имеет удобную структуру, а также позволяет сразу перейти к работе с найденными уязвимостями.


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

Комментарии (0)