Плагины
Плагины ищут ссылки, обнаружают уязвимости и т.д - вообщем выполняют всю основную работу. Сейчас мы научимся их настраивать. Вопервых, нужно сказать что w3af имеет 3 основных типа плагинов: для исследований, аудита и эксплуатации уязвимостей. Вот полный лист категорий (включая и 3 основные):
- discovery
- audit
- grep
- exploit
- output
- mangle
- bruteforce
- evasion
Первый вид плагинов находит места для возможного проведения инъекционных атак. Они позже передаются audit-плагинам для поиска уязвимостей. Grep-плагины анализируют содержимое всех страниц и ищут в нём что-либо подозрительное. Например grep-плагин ищет комментарии со словом "password" в коде страниц. Плагины для эксплуатации уязвимостей (exploit) запускаются при работе audit-плагинов и пытаются дать пользователю что ни будь полезное (удалённый шелл, SQL-дамп и т.д.).
Output-плагины осуществляют связь между фреймворком и пользователем. Они сохраняют полученные данные в виде отчётов в текстовый или html-файл. Отладочная информация так же передаётся этим плагинам и может быть в будущем использована для анализа.
Mangle-плагины позволяют модифицировать запросы к серверу и ответы от него с помощью регулярных выражений.
Bruteforce-плагины занимаются подбором паролей. Они запускаются на фазе исследования (работы discovery-плагинов)
Ну и наконец evasion-плагины. Они нужны для избежания обнаружения сканирования (скрытие от IDS и т.д.).
Настройка плагинов
Плагины можно настроить в соответствующем разделе. Используйте для этого команду "plugins" в главном меню.
Все плагины могут быть настроены здесь, за исключением оных их exploit-группы. Вот примеры того как можно узнать синтаксис для любого из них:
w3af/plugins>>> help audit
View, configure and enable audit plugins
Syntax: audit [config plugin | plugin1[,plugin2 ... pluginN] | desc plugin]
Example: audit
Result: All enabled audit plugins are listed.
Example2: audit LDAPi,blindSqli
Result: LDAPi and blindSqli are configured to run
Example3: audit config LDAPi
Result: Enters to the plugin configuration menu.
Example4: audit all,!blindSqli
Result: All audit plugins are configured to run except
blindSqli.
Example1: audit desc LDAPi
Result: You will get the plugin description
w3af/plugins>>> help list
List available plugins.
Syntax: list {plugin type} [all | enabled | disabled]
By default all plugins are listed.
w3af/plugins>>>
Нижеприведённый пример демонстрирует использование команды для того чтобы увидеть доступные audit-плагины и их статус.
Для активации плагинов "xss" и "sqli", и проверки того что фреймворк правильно понял нас, можно использовать следующий набор команд
w3af/plugins>>> audit xss, sqli
w3af/plugins>>> audit
В появившемся списке Вы можете увидеть то что нужные нам плагины теперь активны.
А если пользователю интересно что делает тот или иной плагин то он может использовать команду "desc".
w3af>>> plugins
w3af/plugins>>> audit desc fileUpload
This plugin will try to expoit insecure file upload forms.
One configurable parameter exists:
- extensions
The extensions parameter is a comma separated list of extensions
that this plugin will try to upload. Many web applications
verify the extension of the file being uploaded, if special
extensions are required, they can be added here.
Some web applications check the contents of the files being
uploaded to see if they are really what their extension
is telling. To bypass this check, this plugin uses file
templates located at "plugins/audit/fileUpload/", this templates
are valid files for each extension that have a section ( the
comment field in a gif file for example ) that can be replaced
by scripting code ( PHP, ASP, etc ).
After uploading the file, this plugin will try to find it on
common directories like "upload" and "files" on every know
directory. If the file is found, a vulnerability exists.
w3af/plugins>>>
Теперь мы можем узнать что делает плагин, но давайте проверим его настройки:
Конфигурационное меню у плагинов всегда имеет команду "set" для изменения значений и команду "view" выводящую список существующих опций. В предыдущем примере мы отключили одну из проверок в xss-плагине и посмотрели список опций sqli-плагина который на данный момент не имеет параметров.
Начало сканирования
После настройки всех необходимых плагинов пользователь должен указать целевой URL и начать сканирование. Указание цели происходит следующим путём:
w3af>>> target
w3af/config:target>>> set target http://localhost/
w3af/config:target>>> back
w3af>>>
В конце нужно выполнить команду "start".
Время от времени Вы можете нажимать Enter для того чтобы видеть текущую информацию о ходе сканирования.
Status: Running discovery.webSpider on http://localhost/w3af/ |
Method: GET.
Полная сессия работы
Рассмотрим пример работы с w3af от начала и до конца. Обратите внимание на вставленные коментарии так как они содержат дополнительную информацию.
$ ./w3af
w3af>>> plugins
w3af/plugins>>> output console,textFile
w3af/plugins>>> output config textFile
w3af/plugins/output/config:textFile>>> set fileName output-w3af.txt
w3af/plugins/output/config:textFile>>> set verbose True
w3af/plugins/output/config:textFile>>> back
w3af/plugins>>> output config console
w3af/plugins/output/config:console>>> set verbose False
w3af/plugins/output/config:console>>> back
Все предыдущие команды активировали два output-плагина - "console" и "textFile",
и настроили их.
w3af/plugins>>> discovery allowedMethods,webSpider
w3af/plugins>>> back
В этом случае мы будем запускать только discovery-плагины. А именно - "allowedMethods" и "webSpider".
w3af>>> target
w3af/target>>>set target http://localhost/w3af/
w3af/target>>>back
w3af>>> start
New URL found by discovery:
http://localhost/w3af/responseSplitting/responseSplitting.php
New URL found by discovery:
http://localhost/w3af/blindSqli/blindSqlistr.php
New URL found by discovery:
http://localhost/w3af/webSpider/2.html
...
...
The URL: http://localhost/beef/hook/ has DAV methods enabled:
OPTIONS
GET
HEAD
POST
TRACE
PROPFIND
PROPPATCH
COPY
MOVE
LOCK
UNLOCK
DELETE
( is possibly enabled too, not tested for safety )
New URL found by discovery:
http://localhost/w3af/globalRedirect/wargame/
New URL found by discovery:
http://localhost/w3af/globalRedirect/w3afsite.tgz
После фазы исследования пользователь получил следующие данные:
Список полученных URL:
- http://localhost/w3af/globalRedirect/w3af.testsite.tgz
- http://localhost/beef/hook/beefmagic.js.php
- http://localhost/w3af/globalRedirect/2.php
- http://localhost/w3af/webSpider/11.html
...
А в секции отчёта будет информация о местах с возможными инъекционными уязвимостями, которые будут использованы audit-плагинами:
Found 78 URLs and 102 different points of injection.
The list of Fuzzable requests is:
http://localhost/w3af/ | Method: GET
http://localhost/w3af/responseSplitting/responseSplitting.php
| Method: GET | Parameters: (header)
- http://localhost/w3af/sqli/dataReceptor.php | Method: POST | Parameters: (user,firstname)
По окончании работы приложения пользователь возвращается в командную строку.
w3af>>> exit
w3af, better than the regular script kiddie.
$
Предупреждение об исследовании
Фаза исследований это палка о двух концах: если использовать её с умом то можно получить много информации о веб-приложении, а пользоваться этим безрассудно то можно прождать несколько часов и получить небольшой результат. Скажу более понятно - безрассудный вариант это например активация всех discovery-плагинов ( "discovery all" ) без чёткого понимания того что они делают.
Вот несколько примеров исследования сайтов и рекомендаций по ним:
- "Вы тестируйте веб-приложение во внутренней сети. Оно имеет большую структуру и не использует Flash или JS-код.
Рекомендация : Вам нужна команда "discovery all,!spiderMan, !fingerGoogle, !fingerMSN, !fingerPKS, !MSNSpider, !googleSpider, !phishtank, !googleSafeBrowsing".
Причина: Плагин Spiderman должен быть использован только тогда когда webSpider не может найти ссылок. Плагины FingerGoogle, FingerMSN и FingerPKS ищут почтовые адреса в поисковиках. Если веб-приложение находится во внутренней сети то адреса, находящиеся на его страницах, никогда не попадут к ним. Плагины MSNSpider и googleSpider ищут ссылки с помощью соответствующих поисковых систем. Их не нужно использовать по той же причине. Плагины phishtank и googleSafeBrowsing сделаны для поиска фишинговых сайтов, но так как сайт с приложением находится во внутренней сети то он не может быть проверен поисковиком.
- "Вы тестируйте веб-приложение в интернете. Оно имеет большую структуру и не содержит элементов Flash и JS-кода
Рекомендация : Вам нужна команда "discovery all,!spiderMan, !wordnet , !googleSets".
Причина: Плагин Spiderman должен быть задействован только тогда когда плагин webSpider не может сам обнаружить ссылок на главной странице. Wordnet и googleSets работают очень долго при работе в интернете, поэтому их отключение является хорошей идеей.
- "Вы тестируйте веб-приложение в интернете. Оно большое и содержит элементы Flash или JS-кода. Так же Вы знаете что приложение не реализует какой-либо веб-сервис.
Рекомендация :Вам нужна команда "discovery all, !wordnet , !googleSets, !wsdlFinder".
Причина: Плагины wordnet и googleSets отнимают много времени на выполнение в интернете, поэтому их отключение является хорошей идеей.
А wsdlFinder не нужно включать если мы итак знаем что веб-сервисов на сайте нет.
- "Вы проверяете приложение в интернет. Вам требуется узнать досконально всё о его функционале и Вы не ограничены временем.
Рекомендация : Используйте команду "discovery all" .
Причина: Вы хотите узнать о сайте как можно больше и не боитесь потратить на это пару дней.