
С развитием веб-технологий появлялись и продолжают появляться новые уязвимости. Однако существует большой спектр программ, которые помогают обнаруживать уязвимости в веб-сайтах и веб-приложениях. Среди таких программ можно выделить 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.
ссылка на оригинал статьи https://habr.com/ru/company/first/blog/720902/
Добавить комментарий