Обзор сканера уязвимостей Skipfish

Авторы: Google (Michael Zalewski, Niels Heinen, Sebastian Roschke, etc.)
Лицензия: Apache 2.0 (бесплатно)sf_name
Страница проекта: code.google.com/p/skipfish/
Последняя версия: 2.10b (Dec 4, 2012) / входит в сборку Kali Linux, отдельно ставить не надо.
Аналоги: Nikto, Websecurify, Netsparker, w3af, Arachni

Согласно описанию разработчика, утилита предназначена для проведения разведки на предмет защищённости тестируемого веб-приложения. Она создаёт интерактивную карту сайта с помощью рекурсивного- и основанного на словарях анализе, после чего сканер применяет к полученным элементам различные проверки защищённости (обещают, что non-disruptive, но в любом случае тестирование лучше проводить не на продакшне). По окончанию работ формируется отчёт для анализа результатов человеком.

Какие именно проверки делает утилита? XSSi, SQLi, XMLi/XPATHi, CSSi, corrupt MIME, SSL attacks,  shellcode/file injections, sensible data/files revealing. Полный список проверок перечислен здесь: https://code.google.com/archive/p/skipfish/wikis/SkipfishDoc.wiki

Для быстрого запуска достаточно использовать команду:

$ ./skipfish -o output_dir http://targettestsite.com

здесь ключ -o и параметр за ним (/logs) означает куда складывать логи работы, далее URL цели.

Давайте натравим нашу рыбку на веб-овечку (тренажёр WebGoat, который хостится на той же машине, где и skipfish):

$ ./skipfish -o /logs http://localhost:8080/WebGoat/start.mvc

Результат работы (ура, что-то нашлось!):
Skipfish_01.png

Откроем файл отчёта (выглядит симпатично и наглядно; несмотря на то, что похоже сканер не прошёл дальше окна логина, он нашёл несколько подозрений на уязвимости на сайте):
Skipfish_02.png

Как мы заметили выше, некоторые сайты могут требовать аутентификацию. Skipfish умеет работать как с простой аутентификацией, так и использовать HTTP cookies.
Для простых HTTP credentials попробуйте команду вида:

$ ./skipfish -A user:pass ...other parameters...

Если этот вариант не прокатит, попробуйте HTTP cookies. Залогиньтесь на сайт в браузере, а потом перехватите идентификатор сессии сниффером, например WebScarab/TamperData, либо посмотрите в настройках браузера. Далее используйте полученный идентификатор чтобы скормить его Skipfish’у:

$ ./skipfish -C name=val ...other parameters...

Есть ещё третий способ аутентификации (каноничный, если хотите) — через соответствующую форму. В этом случае Skipfish’у нужно указать адрес формы, логин, пароль, и адрес который должен открыться в случае успешного входа:

$ ./skipfish --auth-form http://example.org/login \
--auth-user myuser \
--auth-pass mypass \
--auth-verify-url http://example.org/profile \
[...other options...]

С WebGoat проходит аутентификация по HTTP cookies, например:

skipfish -C JSESSIONID=5C975D43 -o /logs http://localhost:8080/WebGoat/start.mvc

В этот раз сканер находит гораздо больше подозрительных мест в веб-приложении!
Skipfish_04

Skipfish_05

Как Skipfish определяет что сканировать и почему та или иная область уязвима? Он использует словари (dictionaries) и сигнатуры (signatures) соответственно. На Kali Linux они, а также шаблон отчёта (assets), лежат в папке /usr/share/skipfish, при необходимости их можно отредактировать в текстовом редакторе:
Skipfish_06

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

Официальная документация всё равно будет более полной, чем мой обзор, поэтому советую также прочитать и её https://code.google.com/archive/p/skipfish/wikis/SkipfishDoc.wiki

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.