![](https://habrastorage.org/getpro/habr/upload_files/e54/4d4/c55/e544d4c551d95162601c0e1b8e618797.jpg)
С развитием веб‑технологий появлялись и продолжают появляться новые уязвимости. Однако существует большой спектр программ, которые помогают обнаруживать уязвимости в веб‑сайтах и веб‑приложениях. Среди таких программ можно выделить 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
![](https://habrastorage.org/getpro/habr/upload_files/ee6/f1f/3ed/ee6f1f3edead9e1a0d4972107601eab5.png)
Если в выводе команды отобразилась строка «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, то процесс сканирования займет много времени:
![](https://habrastorage.org/getpro/habr/upload_files/086/2f7/ed3/0862f7ed318ea1e64c4d725be5b21b7c.png)
После того, как будет нажата любая клавиша, или по истечению 60 секунд начнется процедура сканирования:
![](https://habrastorage.org/getpro/habr/upload_files/6af/71d/c8e/6af71dc8e3117faec2d8d9e69ec7e278.png)
Показать статус сканирования можно путем нажатия на клавишу Пробел. Отобразится раздел In-flight request, который в режиме реального времени показывает сканируемые URL:
![](https://habrastorage.org/getpro/habr/upload_files/e4a/81a/39a/e4a81a39a4fdc9ac2ad990bf1ccec584.png)
Среди полезных параметров можно выделить следующие:
-A имя пользователя:пароль – если на сканируемом сайте используется аутентификация при помощи логина/пароля, следует задать их при помощи ключа -A;
-r r_limit – задает максимальное количество запросов, которое сможет отправлять skipfish. В качестве значения можно указать число от 1 до 100000000;
-W wordlist – задает путь до файла со словарем, т.е. можно использовать собственные файлы словарей, а не только стандартные;
-I string – будут сканироваться только те URL, которыезаданы в параметре -I.
![](https://habrastorage.org/getpro/habr/upload_files/378/c1b/7af/378c1b7afcc7967f2b211b59ad0a5027.png)
Процесс сканирования может занять довольно много времени — от 30 минут до нескольких часов. Длительность сканирования зависит от структуры веб‑сайта, скорости интернет соединения, а также от типа используемого словаря. Например, использование словаря complete занимает больше времени, чем при использование minimal. В любой момент сканирование можно остановить путем нажатия на сочетание клавиш Ctrl + С. После этого в терминале отобразится надпись Scan aborted by user, bailing out!, которая проинформирует, что сканирование завершено пользователем. После этого утилита сгенерирует отчет с именем index.html, который будет сохранен в ранее указанную директорию:
![](https://habrastorage.org/getpro/habr/upload_files/0dc/206/4fd/0dc2064fdc508ec616d5054c0d0ccb28.png)
Файл отчета имеет следующую структуру.
Блок Document type overview:
![](https://habrastorage.org/getpro/habr/upload_files/0a9/420/30a/0a942030af8e41b32d8c119a9d7f44eb.png)
В данном разделе все файлы сайта разбиваются на типы — html, css, plain text, xml и т. д. При раскрытии категории отображаются все найденные URL определённого типа:
![](https://habrastorage.org/getpro/habr/upload_files/8a0/182/d3e/8a0182d3e06a7d860f33d4085eb53fa9.png)
При нажатии на show trace + отобразится трассировка запроса, которая включает в себя отправленный запрос (REQUEST) и полученный ответ (RESPONSE):
![](https://habrastorage.org/getpro/habr/upload_files/f3d/1c8/614/f3d1c86142bb0bc2c78e2dea3291fbc6.png)
В блоке Issue type overview отображаются найденные уязвимости. Справа от названия уязвимости находится число, которое сообщает о количестве найденных уязвимостей данного типа:
![](https://habrastorage.org/getpro/habr/upload_files/141/de9/b82/141de9b82640025c07fa8ca81c0156ac.png)
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:
![](https://habrastorage.org/getpro/habr/upload_files/a55/c47/e41/a55c47e417c2ef4503255051ac1d09af.png)
![](https://habrastorage.org/getpro/habr/upload_files/10f/1b6/7cd/10f1b67cd741a907c8114047deb0e3ab.png)
Или открыть файл с трассировкой:
![](https://habrastorage.org/getpro/habr/upload_files/f0d/c8c/caa/f0dc8ccaacf152df111e1091a1e70cff.png)
Как видно выше, сканер обнаружил URL сайта, на которых возможно произвести SQL инъекцию.
Рассмотрим пример с обнаруженной XSS атакой. skipfish нашел 12 URL, на которых присутствует уязвимость XSS:
![](https://habrastorage.org/getpro/habr/upload_files/85c/de6/96a/85cde696a138c4e2dc79cc4902c8a933.png)
Перейдем по одной из предложенных ссылок и в поле, где пользователи сайта могут оставлять комментарии, введем следующий код:
<script>alert("Hello from skipfish!")</script>
![](https://habrastorage.org/getpro/habr/upload_files/f90/532/033/f9053203305b64cccf2736c4cab004a4.png)
Далее необходимо нажать на кнопку add message или клавишу Enter, и можно увидеть воспроизведённую уязвимость XSS:
![](https://habrastorage.org/getpro/habr/upload_files/abb/e7a/4ee/abbe7a4ee065992e0cc22b3e47fe61e3.png)
Также skipfish ищет отладочную информацию и ошибки, связанные с подключением, например, к базам данных, как на скриншоте ниже:
![](https://habrastorage.org/getpro/habr/upload_files/cf4/8ea/4f1/cf48ea4f1df26f27ca9d078ad17cfdf9.png)
А также такие уязвимости, как Directory listing:
![](https://habrastorage.org/getpro/habr/upload_files/56e/209/083/56e209083a1b6028bf4930121571380c.png)
Подводя итоги, можно сказать, что несмотря на простоту использования skipfish обладает обширной базой уязвимостей. Отчет, который утилита генерирует по завершению сканирования, имеет удобную структуру, а также позволяет сразу перейти к работе с найденными уязвимостями.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.