[Из старого] Перевод официальной документации к плагинам w3af

Перевёл: Кузьмин Антон

Дата: ~05.06.2009

Плагины аудита

xsrf

Плагин ищет уязвимости категории Cross Site Request Forgeries (XSRF)

Для проведения элементарной проверки на XSRF приложение должно отсылать пользователю cookie и принимать от него же один или несколько параметров.

htaccessMethods

Плагин обнаружает неправильную настройку .htaccess через параметр LIMIT.

Его работа основана на документе написанном Frame и madjoker с сайта         kernelpanik.org. Он называется: «htaccess: bilbao method exposed»

 

Идея техники (и плагина) заключается в раскрытии неправильной настройки .htaccess. Например, вот такой:

 

<LIMIT GET>

require valid-used

</LIMIT>

 

Подобная конфигурация позволяет осуществлять GET-запросы только авторизированным лицам. Но те же POST-запросы могут выполнятся любым пользователем.

sqli

Данный плагин ищет уязвимости категории SQL-injections. Для их обнаружения он посылает строку d’z»0 в каждом параметре отдельно взятой ссылки и ищет в теле ответа сообщения о SQL-ошибках.

sslCertificate

Этот плагин проверяет параметры SSL-сертификатов.

Примечание: Он будет полезен только при работе с сайтами через HTTPS.

fileUpload

Данный плагин пытается произвести небезопасную загрузку файлов на сервер через соответствующую форму на сайте.

Он имеет один настраиваемый параметр:

— extensions.

Параметр представляет из себя список расширений, разделённых запятыми, файлы с которыми плагин будет пытаться загрузить на сервер. Большинство веб-приложений проверяют расширение в случае если разрешено загружать строго определённые типы файлов. Именно их Вы должны указать в параметре extensions. Некоторые приложения проверяют ещё и содержимое файла на предмет его соответствия расширению. Для обхода этих проверок плагин использует шаблоны располагающиеся в директории «plugins/audit/fileUpload/». Они представляют из себя файлы с содержимым которое полностью соответствует расширению. В каждом из них имеется специальная секция (например поле комментария в GIF-картинке) которая может быть заменена определённым кодом ( PHP, ASP и т.д.). После загрузки файла плагин пытается найти директории типа «upload» или «files». Если такие директории найдены, и файл находится в одной из них, то уязвимость существует.

mxInjection

Плагин ищет MX-инъекции. Такие уязвимости присущи веб-приложениям которые представляют из себя ПО для работы с почтой через WEB. Проверка крайне проста. В каждом параметре отсылается специальная строка. Если в ответе сервера будет найден текст ошибки то уязвимость существует.

generic

Этот плагин ищет все виды уязвимостей без использования исправленных ошибок базы данных. Это новая методология которая решает большинство проблем присущих сканерам веб-приложений.

Примечание переводчика: Знаю, бред, но по другому я никак не смог это перевести. Вот настоящий текст:

This plugin finds all kind of bugs without using a fixed database of errors. This is a new kind of methodology that solves the main problem of most web application security scanners.

localFileInclude

Данный плагин ищет уязвимости подключения локальных файлов. Это осуществляется  помещением в каждый параметр пути к файлу (например «../../../../../etc/passwd») и поиском в ответе сервера текста типа «root:x:0:0:».

unSSL

Плагин проверяет какие из ссылок, доступных по защищённому протоколу (HTTPS), доступны по обычному HTTP. Для этого он запрашивает одни и те же ссылки с разными протоколами. Например «https://abc/a.asp» и «http://abc.asp». Затем происходит сравнение ответов от сервера, и если они одинаковые то уязвимость существует.

xpath

Плагин ищет уязвимости типа XPATH-injections.

Для их обнаружения он помещает строку «d’z’0» во все доступные параметры и в ответе сервера ищёт сообщение о XPATH-ошибке.

osCommanding

Этот плагин пытается обнаружить уязвимости удалённого выполнения команд на атакуемом сервере. Обнаружение происходит двумя разными путями:

— С помощью временной задержки

— Вывода в ответе сервера какого-либо файла.

При первом случае плагин отсылает специально сформированный запрос, который при существовании уязвимости замедлит ответ сервера на 5 секунд (ping -c 5 localhost).

Во втором варианте он посылает серверу специально сформированный запрос, который в случае существования уязвимости выводит какой-либо файл (например /etc/passwd/). Плагин имеет большой список разделителей команд типа «;» и «`» для поиска уязвимостей в любых ОС, платформах и языках программирования.

remoteFileInclude

Плагин осуществляет поиск уязвимости подключения удалённых файлов. Он имеет 3 параметра которые пользователь может изменять

— listenAddress

— listenPort

— usew3afSite

Есть 2 варианта запуска этого плагина. Первый заключается в использовании сайта w3af (w3af.sf.net) как места, откуда веб-приложение будет брать удалённый файл. Другой же путь заключается в запуске локального веб-сервера и использовании его как источника для подключения удалённого файла. Как Вы, наверное, уже догадались, опции для второго варианта это «listenAddress» и «listenPort».

dav

Данный плагин ищёт ошибки конфигурации WebDAV. Это ошибки скорее серверной стороны, чем веб-приложения. Для проверки наличия уязвимости плагин пытается методом PUT записать файл в директорию где задействован WebDAV. Если это удалось то ошибка существует.

ssi

Этот плагин ищет уязвимости при работе с технологией Server Side Include

eval

Этот плагин ищет уязвимости при использовании функции eval(). Такие уязвимости существуют в приложениях, разработчики которых помещают в эту функцию данные приходящие от пользователя. Для выявления уязвимости фреймворк посылает строку с вызовом echo-функции и двумя случайными строками в качестве параметров (echo ‘abc’ + ‘xyz’) и если в ответе сервера имеется результат выполнения этой функции (‘abcxyz’) то уязвимость существует.

buffOverflow

Плагин ищет уязвимости переполнения буфера.

Вы должны знать о том что подобный тип уязвимостей можно выявить только в том случае если на сервере включён вывод ошибок. К тому же проверяемое приложение должно быть написано на С, или другом языке, позволяющем программисту управлять памятью приложения.

xss

Плагин обнаружает уязвимости межсайтового скриптинга (Cross Site Scripting (XSS). Имеет 2 параметра:

— checkStored

— numberOfChecks

При поиске XSS плагин будет отсылать серверу специально сформированный JavaScript-код в параметрах ссылки или формы и искать его в ответе сервера. Параметр «checkStored» указывает плагину на то, что нужно запомнить все отправляемые в ходе проверки данные и по окончании неё заново запросить все страницы, проверив их наличие там. Опция numberOfChecks указывает сколько строк с кодом нужно посылать в каждом параметре.

xst

Этот плагин ищет XST-уязвимости (Cross Site Tracing). Он не имеет параметров. Суть XST-уязвимостей в том что TRACE-метод возвращает обратно запрос пользователя в таким, каким он его принял. Плагин отсылает TRACE-запрос серверу и если получает его обратно в неизменном виде то уязвимость существует.

blindSqli

Плагин для поиска слепых SQL-инъекций

Имеет 2 параметра:

— equAlgorithm

— equalLimit

Параметр equAlgorithm показывает как сравнивать полученные плагином страницы. Здесь есть 2 варианта:

— stringEq

— setIntersection

 

Классический метод сравнения двух строк (stringEq) в Python — это «string1 == string2», но некоторые сайты содержат постоянно изменяющиеся баннеры и другую не статичную информацию. Для таких случаев разработан второй метод. Алгоритм «setIntersection» создаёт два разных набора слов, взяв их из двух разных ответов сервера (имеется в виду несколько слов со страницы с ошибочным запросом и несколько с безошибочным – п.п.). При проведении проверки плагин получает страницу и ищет в её коде слова из этих наборов. Если в ответе найдено совпадений столько сколько указано в «equalLimit» то считается что страница совпала с набором «правильного» или «ошибочного» ответа.

formatString

Плагин ищен ошибки форматной строки. Вы должны знать, что выявить подобные уязвимости можно в том случае когда на сервере включён вывод ошибок. И приложение написано на C или другом языке. Позволяющем программисту допускать такие недочёты.

preg_replace

Плагин ищет ошибки в использовании функции preg_replace. Они допустимы в том случае когда пользователь может управлять данными, попадающими в регулярное выражение этой функции и оно имеет модификатор «e». На данный момент плагин может обнаружить уязвимость только тогда когда PHP выводит информацию об ошибках. Но в скором времени он сможет делать это «вслепую».

globalRedirect

Данный плагин обнаружает ошибки глобальной переадресации пользователей. Такие уязвимости могут быть использованы для фишинга или подобных ему атак. Самым простым примером является скрипт который переадресовывает пользователя на адрес, переданный в параметре «url», с помощью HTTP-ответа 302 с заголовком «location». Ошибки глобальной переадресации могут быть найдены в javascript-коде, META-тегах и переадресации с помощью кодов 302/301.

LDAPi

Плагин ищет уязвимости категории LDAP-injections. Он посылает в каждом параметре специально сформированную строку и проверяет код ответа на наличие в нём LDAP-ошибки.

phishingVector

Плагин ищет уязвимости пригодные для фишинга. Например уязвимость существует если я пройду по ссылке «http://site.tld/asd.asp?info=http://attacker.tld» и в ответе приложения будет код код:

<iframe src=»http://attacker.tld»>

….

frontpage

Этот плагин пытается загрузить файлы на сервер с использованием скприта author.dll поставляемым в FrontPage.

responseSplitting

Данный плагин ищет уязвимость разделения ответа (По нашему – CRLF-инъекция – п.п.).

Ошибка существует если при отправке серверу запроса с данными «w3af\r\nVulnerable: Yes» в каждом параметре, он посылает ответ с заголовком «Vulnerable» и его значением «Yes».

Bruteforce-плагины

formAuthBrute

Данный плагин занимается подбором логинов через html-формы.

Он имеет 9 параметров:

— usersFile

— stopOnFirst

— passwdFile

— passEqUser

— useMailUsers

— useSvnUsers

— useMails

— useProfiling

— profilingNumber

 

Плагин возьмёт список пользователей из файла указанного в «usersFile», почтовые пользователи будут браться с сайта (если «useMailUsers» установлен в true), почтовые адреса берутся с сайта (если «useMails» установлена в true), и svn-пользователи берутся с сайта (если «useSvnUsers» установлена в true).

Список паролей будет взят из файла «passwdFile» и из результатов профилирования паролей (если опция «useProfiling» установлена в true). Опция profilingNumber указывает номер результата из работы плагина профилирования для использования в поле пароля.

Опция «stopOnFirst» указывает на завершение подбора как только будет подобран пароль к первому аккаунту.

basicAuthBrute

Плагин подбирает пароли к basic-авторизации

Имеет 9 параметров:

— usersFile

— stopOnFirst

— passwdFile

— passEqUser

— useMailUsers

— useSvnUsers

— useMails

— useProfiling

— profilingNumber

 

Плагин возьмёт список пользователей из файла указанного в «usersFile», почтовые пользователи будут браться с сайта (если «useMailUsers» установлен в true), почтовые адреса берутся с сайта (если «useMails» установлена в true), и svn-пользователи берутся с сайта (если «useSvnUsers» установлена в true).

Список паролей будет взят из файла «passwdFile» и из результатов профилирования паролей (если опция «useProfiling» установлена в true). Опция profilingNumber указывает номер результата из работы плагина профилирования для использования в поле пароля.

Опция «stopOnFirst» указывает на завершение подбора как только будет подобран пароль к первому аккаунту.

Grep-плагины

dotNetEventValidation

ASP.NET имеет метод контроля действий пользователя во избежании атак. Он называется EventValidation.

В некоторых случаях разработчики отключают его, добавляя в конфигурацию строку EnableEventValidation=»false».

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

pathDisclosure

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

— C:\www\files\…

— /var/www/htdocs/…

Результат сохраняется в общей базе знаний, и может использоваться другими плагинами которым нужно знать местонахождение определённых файлов внутри атакуемого сервера.

codeDisclosure

Плагин ищет страницы, в HTML-коде которых есть вставки серверных скриптовых языков. В основном он ищет PHP и ASP теги (‘<?.*?>’ и ‘<%.*%>’). Такие ошибки могут возникать в следствие неправильной конфигурации сервера.

blankBody

Плагин отлавливает http-ответы с пустым телом. Такие ответы могут свидетельствовать об ошибке или неправильной настройке сервера/приложения

metaTags

Плагин ищет в каждой странице интересные meta-теги. К примеру, они могут содержать слова : ‘microsoft’, ‘visual’, ‘linux’.

motw

Плагин ищет страницы которые сформированы по MOTW-стандарту. Он описан вот тут:

http://msdn2.microsoft.com/en-us/library/ms537628.aspx

Он проверяет длину адресов на основании цифр «(XYZW)». Меньшей они длинны, такой же, или большей. И сообщает о результатах пользователю. Имеется один параметр который пользователь может изменять:

— withoutMOTW

Если опция «withoutMOTW» включена то плагин будет искать страницы не включающие в себя MOTW.

privateIP

Плагин сканирует все страницы веб-приложения в поисках приватных IP-адресов.

directoryIndexing

Плагин ищет ссылки при обращении к которым показывается индекс директории.

svnUsers

Плагин отсеивает со страниц имена SVN-пользователей. Например, иногда в HTML-коде приложения можно обнаружить информацию о пользователе вносившем изменения в страницу. Эта информация добавляется в плагин knowledgeBase.

ssn

Плагин сканирует страницы приложения и ищет в них номера социального страхования.

fileUpload

Плагин отбирает все страницы где есть форма загрузки файлов.

strangeHTTPCode

Плагин анализирует HTTP-ответ и пытается найти в нём различные странности, о которых позже сообщает.

hashFind

Плагин ищет различные хэши в коде http-ответов.

getMails

Плагин отсеивает из кода страниц все E-mail адреса. Позже они могут использоваться для подбора паролей или ещё чего либо.

httpAuthDetect

Плагин отбирает все страницы которые требуют авторизации.

wsdlGreper

Этот плагин обрабатывает каждую страницу и ищет в коде признаки наличия WSDL.

Не все WSDL-документы кончаются «?WSDL» в адресе страницы. Но именно по такому признаку их ищет плагин discovery.wsdlFinder. wsdlGreper может помочь отыскать те WSDF-страницы которые другой плагин не нашёл.

newline

Плагин идентифицирует тип переноса строки на каждой странице. В конце работы он скажет в какой OС было написано данное приложение – Windows, Linux или Mac.

Примечание: Я не знаю где этот плагин может пригодиться, но он был одной из многих идей. Возможно, когда-то он воскреснет из мёртвых и будет использоваться для более полезных целей.

passwordProfiling

Плагин формирует лист возможных паролей на основании анализа страниц и отбора самых популярных слов.

domXss

Плагин отбирает страницы которые могут страдать DOM XSS — уязвимостью. Информация об этом типе уязвимостей может быть найдена здесь:

http://www.webappsec.org/projects/articles/071105.shtml

ajax

Плагин ищет страницы в которых имеется AJAX-код.

findComments

Этот плагин отсеивает страницы на которых имеются комментарии. Комментарии со специальными словами типа «password» или «user» показываются пользователю отдельно.

httpInBody

Плагин ищет страницы у которых в теле имеются http-запросы или ответы. Такая ситуация может быть например когда программист занимается отладкой веб-приложения и выводит текущий запрос в комментариях страницы.

strangeHeaders

Плагин собирает странные заголовки в ответах сервера. Это может помочь в определении дополнительных модулей сервера.

lang

Плагин сканирует n-ное количество страниц и определяет на каком языке написан сайт. Информация о языках хранится в виде списка предлогов. Для определения на странице просто ищутся совпадения с предлогами каждого из языков.

errorPages

Плагин сканирует каждую страницу и ищет в них тексты ошибок.

collectCookies

Плагин собирает все cookies которые сервер посылает в ответ на запросы. Это может помочь в выявлении уязвимостей или идентификации приложения.

strangeParameters

Плагин собирает ссылки со странными параметрами. Например, вот такие:

http://a/?b=method(a,c)

http://a/?c=x|y|z|d

error500

Плагин отсеивает каждый адрес при обращении к которому сервер отвечает ошибкой 500.

objects

Плагин отбирает каждую страницу на которой есть подключение аплетов и прочих объектов.

creditCards

Плагин сканирует каждую страницу и отсеивает строки похожие на номера кредитных карт. Вы можете протестировать его на этом адресе:

https://www.paypal.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm

oracle

Плагин отсеивает каждую страницу где есть сообщения, ошибки и т.д. СУБД Oracle

feeds

Этот плагин отбирает каждую страницу где есть возможность rss, atom или opml — подписки. Это может помочь при определении ПО отвечающего за генерацию подписок. Эта же информация может использоваться при поиске feed-инъекций.

Evasion-плагины

shiftOutShiftInBetweenDots

Плагин вставляет до, после и перед точками специальные символы (shift-in, shift-out) которые позволяют обойти проверку на выражение «..». Например:

Исходный запрос: ‘../../../../../../../../etc/passwd’

Изменённый запрос:    ‘.%0E%0F./.%0E%0F./.%0E%0F./.%0E%0F./.%0E%0F./.%0E%0F./.%0E%0F./.%0E%0F./etc/passwd’

backSpaceBetweenDots

Данный плагин добавляет перед точками символ «А» и символ бэкспейса. Это помогает обойти фильтрацию по выражению»..». Пример:

Исходный запрос:     ‘../../../../../../../../etc/passwd’

Результат:     ‘.%41%08./.%41%08./.%41%08./.%41%08./.%41%08./.%41%08./.%41%08./.%41%08./etc/passwd’

rndPath

Плагин генерирует случайный путь к документу. Пример:

Исходный запрос:     ‘/bar/foo.asp’

Результат:    ‘/aflsasfasfkn/../bar/foo.asp’

selfReference

Плагин добавляет к директориям ссылку на себя же (.). Пример:

Исходный запрос:     ‘/bar/foo.asp’

Результат:    ‘/bar/./foo.asp’

modsecurity

Плагин для обхода mod_security версии 2.1.0 и ниже. Почитать об этом Вы можете здесь:

http://www.php-security.org/MOPB/BONUS-12-2007.html

Важно: Такой приём работает только с POST-данными. Пример:

Исходные данные:     ‘a=b’

Результат:    ‘\x00a=b’

rndCase

Данный плагин случайно генерирует регистр букв в строке.

Исходный адрес:     ‘/bar/foo.asp’

Результат:    ‘/BAr/foO.Asp’

rndHexEncode

Плагин случайным образом заменяет некоторые символы в строке на их HEX-аналоги. Пример:

Исходный адрес:     ‘/bar/foo.asp’

Результат:    ‘/b%61r/%66oo.asp’

reversedSlashes

Данный плагин заменяет слэши на бэк-слэши. Пример:

Исходные данные:     ‘/bar/foo.asp’

Результат:    ‘\bar\foo.asp’

fullWidthEncode

Полностью принцип работы этого плагина описан здесь:

— http://www.kb.cert.org/vuls/id/739224

Пример:

Исходные данные:     ‘/bar/foo.asp’

Результат:    ‘/b%uFF61r/%uFF66oo.asp’

rndParam

Плагин добавляет в строку случайно сгенерированный параметр. Пример:

Исходные данные:     ‘/bar/foo.asp’

Результат:    ‘/bar/foo.asp?alsfkj=f09’

Attack-плагины

sqlmap

Плагин предназначен для эксплуатации SQL-инъекций (как простых, так и слепых).

Программа sqlmap была написана Bernardo Damele и Daniele Bellucci, за что им большое спасибо.

Плагин имеет 6 параметров:

— url

— method

— data

— injvar

— equAlgorithm

— equalLimit

osCommandingShell

Плагин использует уязвимость удалённого выполнения команд и возвращает командную строку на атакованном сервере.

Имеет 7 параметров:

— changeToPost

— url

— method

— injvar

— data

— separator

— generateOnlyOne

xssBeef

Плагин представляет из себя интерфейс для эксплуатации XSS-уязвимостей с использованием beEF.

Имеет 2 опции:

— beefURL

— beefPasswd

Пожалуйста, помните о том что плагин является всего лишь «вызывающим» beEF. Выполните следующие шаги:

— Установите beEF

— После запуска этого плагина заставьте пройти по опасной ссылке пользователя

— Откройте браузер, обратитесь к beEF и управляйте атакованными браузерами.

localFileReader

Плагин использует уязвимость подключения локальных файлов и позволяет Вам читать любые данные с диска. Запомните, если читать какой-либо файл с помощью функции «include()», то Вы не сможете увидеть исходного кода скриптов, Вы увидите результат их работы. Вы можете использовать команду «list» для того что бы увидеть все файлы находящиеся в текущей директории.

6 опций плагина:

— changeToPost

— url

— method

— data

— generateOnlyOne

rfiProxy

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

Плагин имеет 5 настроек:

— listenAddress

— proxyPort

— httpdPort

— proxyPublicIP

— rfiConnGenerator

remoteFileIncludeShell

Плагин эксплуатирует подключение удалённых файлов и возвращает командную строку на атакованном сервере. Эксплуатация уязвимости может происходить двумя путями. Подключаемый файл с шеллом может находится на локальном сервере, где запущен плагин. Или формироваться на другом сайте страдающем XSS-уязвимостью. Оба варианта хорошо работают и возвращают командную строку. Только обратите внимание на то, что при использовании второго варианта доступ с удалённого сервера на уязвимый сайт может быть заблокирован файрволом.

У плагина есть 4 опции:

— listenAddress

— listenPort

— useXssBug

— generateOnlyOne

davShell

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

Единственный конфигурационный параметр:

— URL (используется только в fastexploit)

eval

Плагин эксплуатирует уязвимость неправильного использования eval() и возвращает командную строку. Имеет 6 опций:

— changeToPost

— url

— method

— injvar

— data

— generateOnlyOne

fileUploadShell

Плагин эксплуатирует ошибку небезопасной загрузки файлов на сервер. Через специальную форму на сайте он пытается загрузить шелл (на языке php, asp и т.д.), проверяет работает ли шелл и возвращает пользователю командную строку.

Не имеет конфигурационных параметров.

sql_webshell

Плагин использует SQL-инъекцию (обычную или слепую). Первая программа работающая таким методом была написана Bernardo Damele и Daniele Bellucci, за что им большое спасибо.

Плагин имеет 7 конфигурационных параметров:

— url

— method

— data

— injvar

— equAlgorithm

— equalLimit

Output-плагины

htmlFile

Плагин пишет отчёт о работе фреймворка в HTML-файл. Имеется два параметра:

— fileName

— verbose

Если Вы хотите записывать в отчёт HTTP-запросы/ответы в текстовый файл то Вам лучше использовать textFile.

xmlFile

Плагин пишет отчёт о работе фреймворка в XML-файл.

Имеется один параметр:

— fileName

textFile

Плагин пишет отчёт о работе фрейморка в текстовый файл.

Имеется 4 опции:

— fileName

— httpFileName

— verbose

— showCaller

console

Этот плагин пишет отчёт о работе фреймворка в консоль.

Плагин имеет одну опцию:

— verbose

gtkOutput

Сохраняет сообщения фреймворка в kb.kb.getData(‘gtkOutput’, ‘queue’). Сообщения сохраняются в форме объектов. Этот плагин позволяет сообщаться с gtkUi.

Mangle-плагины

sed

Этот плагин представляет из себя многопоточный редактор для web-запросов и ответов. Имеет 3 опции:

— priority

— expressions

— fixContentLen

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

— qh/User/NotLuser/

Это выражение указывает плагину на то, что нужно работать с запросом (re[q]uest), а именно – с заголовком ([h]eader). В нём требуется заменить строку «User» на «NotLuser».

— sb/[fF]orm/form

Здесь поиск будет производиться в ответе (re[s]ponse), а именно в его теле ([b]ody). Заменяться будут слова «form» или «Form» на «form».

Если Вы хотите указать много выражений то разделяйте их запятыми.

Discovery-плагины

webDiff

Смысл плагина в сравнении двух директорий – локальной и удалённой. Идея в том, что бы имитировать работу linux-команды «diff».

Плагин имеет 4 параметра:

— localDir

— remotePath

— banUrl

— content

Он будет считывать файлы внутри «localDir», и запрашивать их в удалённой директории  «remotePath». Совпадения и ошибки записываются отдельно и сохраняются. Сравнение содержимого файлов происходит только если параметр «content» установлен в true и их расширение не находится в опции «banUrl».

Параметр «banUrl» содержит список расширений, файлы с которыми не нужно проверять. Например, ASP, PHP, и т.д. файлы

sitemapReader

Плагин ищет файл sitemap.xml и обрабатывает его.

Файл sitemap.xml используется администраторами для того чтобы дать поисковому пауку Google больше информации о сайте. При обработке этого файла плагин находит новые ссылки и дополнительную информацию.

detectReverseProxy

Плагин пытается определить, стоит ли исследуемый хост за прокси-сервером. Суть процедуры проверки состоит в посылке запроса удалённому серверу и анализе заголовков ответа. Если в них найден заголовок «Via» то плагин сообщает о наличие прокси-сервера.

phpEggs

Плагин пытается найти документированные «пасхальные яйца» в PHP и определить версию интерпритатора на основе их содержимого. Вот примеры «пасхальных яиц»:

— http://php.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 ( PHP Credits )

— http://php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 ( PHP Logo )

— http://php.net/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 ( Zend Logo )

— http://php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 ( PHP Logo 2 )

spiderMan

Плагин представляет из себя локальный прокси-сервер который может быть использован для передачи информации фреймворку о исследуемом приложении в том случае если на сайте много Flash-объектов или Java-апплетов. Когда Вам потребуется исследовать с помощью w3af такое приложение то запускайте этот плагин и используйте браузер, настроенный на работу с локальным прокси-сервером.

Плагин будет извлекать информацию из данных передающихся между пользователем и сервером, и искать в них информацию которую можно передать на исследование audit-плагинам. Дополнительно spiderMan поддерживает функцию сохранения cookies приходящих от сервера для будущего использования их другими плагинами. Так что если Вы исследуйте приложение которое передаёт информацию о сессии в cookies то Вам нужно включить этот плагин, авторизоваться и потом уже запускать остальные плагины.

Имеется 2 параметра:

— listenAddress

— listenPort

urlFuzzer

Плагин пытается найти новые ссылки основываясь на исходящих запросах. Например если исходящий запрос проходит по ссылке

— http://a/a.html

То плагин запросит:

— http://a/a.html.tgz

— http://a/a.tgz

— http://a/a.zip

… и т.д.

Если код ответа на запрос не 404 то плагин рапортует о нахождении архива. Вообщем он ищет резервные копии файлов, исходные коды и т.д.

Имеет одну опцию:

— fuzzImages

userDir

Плагин пытается найти домашние директории пользователей основываясь на информации полученной другими плагинами. Например, если запрашиваемый URL

— http://test/

И другой плагин нашёл следующие email-аккаунты:

— test@test.com

— f00b4r@test.com

То userDir произведёт следующие запросы:

— http://test/~test/

— http://test/test/

— http://test/~f00b4r/

— http://test/f00b4r/

Если код ответа на них не 404 error то мы нашли новую ссылку и знаем что такой пользователь существует в системе атакуемого сервера. Так же плагин определяет операционную систему и установленные приложения проверяя особые имена пользователей.

findvhost

Плагин использует заголовок «Host» для того что бы найти дополнительные виртуальные хосты. Плагин пригодится в ситуации если на одном и том же сервере есть публичных хост и приватный. Тогда, если сервер настроен не правильно, плагин сможет раскрыть приватных хост. Пожалуйста, помните о том что данный плагин не использует никаких технологий связанных с DNS.

fingerprint_os

Плагин определяет семейство операционной системы через веб-сервер (Windows, Unix, и т.д.).

На данный момент алгоритм работы этого плагина очень тривиален, потому что используется только один способ определения: разделитель директорий Windows. Например, если есть адрес http://host.tld/abc/def.html то плагин пробует запросить ссылку http://host.tld/abc\def.html и если ответы на обе из них совпали — на сервере стоит  Windows.

findBackdoor

Плагин ищет веб-шеллы в директории сайта.

Например запрашивается ссылка

— http://host.tld/w3af/f00b4r.php

Тогда плагин проверит следующие адреса:

— http://host.tld/w3af/c99.php

— http://host.tld/w3af/cmd.php

— http://host.tld/w3af/webshell.php

wordnet

Плагин пытается найти новые ссылки с использованием WordNet.

Рассмотрим следующий пример. Плагин отловил следующую ссылку:

— http://a/index.asp?color=blue

Он берёт значение параметра color (blue) и ищет связанные с ним по смыслу слова в базе данных WordNet. Находятся слова «black» и «white». Тогда плагин запрашивает два адреса:

— http://a/index.asp?color=black

— http://a/index.asp?color=white

Если код ответа на эти запросы не 404, и они не имеют одного и того же содержимого, то считается что найдены новые ссылки. Более подробную информацию о WordNet Вы можете найти на http://wordnet.princeton.edu/

zone_h

Плагин ищет сайт в базе дефейсов zone-h.org. Это может оказаться полезным т.к. в некоторых случаях, при дефейсе, взломщик сообщает какую уязвимость он использовал. Возможно, она ещё не закрыта.

performance_testing

К сожалению, описания этого плагина нет.

robotsReader

Плагин ищет файл robots.txt и обрабатывает его.

Файл является разграничителем доступа поисковиков к разным частям сайта.

Исследовав его Вы можете узнать много новой информации о сайте

sharedHosting

Плагин пытается найти дополнительную информацию если приложение установлено на хостинге. Плагин устраивает поиск по запросу «ip:1.2.3.4» где 1.2.3.4 это IP-адрес веб-сервера.

Имеет одну опцию:

— resultLimit

Она указывает сколько ссылок надо обработать из результатов поиска MSN.

afd

Плагин посылает специальные запросы на удалённый веб-сервер для того что бы выяснить, защищена ли удалённая сеть IPS или WAF.

afd определяет сброс TCP-соединений и различные http-фильтры. Например, если afd запрашивает определённую страницу через запрещённый метод, то запрос будет заблокирован фильтром. В случае с приложениями класса «Web Application Firewalls»  (типа mod_security) всё немного сложнее. Сначала afd запрашивает страницу без добавления каких-либо параметров. После этого он обращается по тому же адресу, но с дополнительным случайным параметром. Если ответы на эти 2 запроса разные то возможно на стороне сервера находится какой-то фильтр.

allowedMethods

Плагин ищет доступные HTTP-методы передачи данных. Имеется 2 параметра:

— execOneTime

— reportDavOnly

Если «execOneTime» установлен в true, то проверка осуществляется только обращаясь к корню сайта. Если «reportDavOnly» установлен в true, плагин сообщает только если найдены DAV-методы.

Плагин сначала пытается использовать метод OPTIONS для того что бы перебрать все доступные методы. Если этого сделать не удаётся то он использует обычный перебор методов.

phpinfo

Плагин ищет файлы с «PHP Info» в директориях и под-директориях взятых из найденных ссылок. Файл «PHP Info» содержит информацию о PHP – версии, модулях, системе на которой он стоит и т.д. Например, если будет найден следующий адрес:

— http://localhost/w3af/index.php

То плагин попытается запросить:

— http://localhost/w3af/phpinfo.php

— http://localhost/phpinfo.php

— …

— http://localhost/test.php?mode=phpinfo

importResults

Плагин импортирует результаты работы других программ которые ищут ссылки на сайтах. Он считывает указанный ему файл, в котором содержится информация о ссылках разделенная запятой, в формате HTTP-METHOD,URI,POSTDATA.

У плагина существует всего один параметр:

— input_file

findCaptchas

Плагин пытается найти различные CAPTCHA-изображения в HTML-документе. Суть его работы в том что бы запросить одну и ту же страницу два раза и сравнить контрольные суммы изображений. Если у какой-то картинки они разные то возможно что это CAPTCHA.

serverStatus

Плагин ищет «server-status»-файл используемый веб-сервером Apache, и обрабатывает его. После этого плагин может найти новые ссылки или ранее неизвестные домены на этом сервере.

oracleDiscovery

Плагин ищет некоторые ссылки используемые «Oracle Application Server» и обрабатывает информацию полученную по ним.

yahooSiteExplorer

Плагин ищет новые ссылки на сайте с помощью «Yahoo Site Explorer». Он производит поиск по фразе «domain.com» и делает запросы по всем найденным ссылкам.

У плагина есть всего один параметр:

— resultLimit

frontpage_version

Плагин ищет информационный файл о сервере FrontPage. Если находит, то пытается узнать версию сервера и установленные дополнения. Файл распологается внутри корневой директории. Пример:

— http://localhost/_vti_inf.html

detectTransparentProxy

Плагин пытается обнаружить «прозрачный» прокси-сервер. Процедура обнаружения достаточно проста. Плагин пытается подключиться к диапазону IP-адресов и если все подключения возвращают открытый сокет то на той стороне работает «прозрачный» прокси-сервер.

dnsWildcard

Плагин запрашивает домены www.site.com и site.com и пытается сравнить результат. Выясняя при этом какой шаблон DNS-конфигураций используется на сайте.

webSpider

Плагин представляет из себя классического web-паука. Он бродит по сайту и извлекает все ссылки и адреса форм.

Имеет 3 опции:

— onlyForward

— ignoreRegex

— followRegex

— urlParameter

Параметры IgnoreRegex и followRegex могут использоваться для того чтобы показать пауку какие ссылки (не)нужно посещать (типа «logout» или «Перезагрузить устройство»).

По умолчанию в опции ignoreRegex ничего не содержится, а followRegex содержит ‘.*’ (следовать по всем ссылкам). Регулярное выражение должно быть совместимым с языком Python.

fingerMSN

Плагин ищет почтовые адреса в поисковике MSN.

Плагин имеет один конфигурационный параметр:

— resultLimit

Он производит поиск по фразе «@domain.com», запрашивает все найденные ссылки и пытается найти в них почтовые адреса.

googleSets

Плагин ищет ссылки используя «Google Sets».

Имеется 2 параметра:

— resultLimit

— setResults

Вот самый простой пример который демонстрирует работу плагина. Допустим фреймворк нашёл ссылки:

— http://a/index.asp?color=blue

— http://a/index.asp?color=red

Тогда плагин произведёт поиск слов в «Google Sets», связанных со словами «blue» и «red». Результатом этого поиска будет слова «black» и «white». И плагин осуществит следующие запросы:

— http://a/index.asp?color=black

— http://a/index.asp?color=white

Если эти запросы не вернут ошибку с кодом 404 и не будут одинакового содержания, то ссылки добавятся в общую базу.

digitSum

Плагин пытается найти новые ссылки путём изменения номеров, идущих после основного имени файла.

Имеется 2 параметра:

— fuzzImages

— maxDigitSections

Для того чтобы лучше понять работу плагина приведу следующий пример. Возьмём следующую ссылку:

— http://host.tld/index1.asp

Тогда плагин запросит документы:

— http://host.tld/index0.asp

— http://host.tld/index2.asp

Если сервер ответит не ошибкой с кодом 404, то ссылка подобрана правильно.

halberd

Плагин пытается обнаружить существование узла балансировки HTTP-нагрузки.

domain_dot

Плагин ищет неправильную настройку виртуальных хостов отправляя серверу специально сформированный запрос с точкой в конце доменного имени. Например, если сходный адрес http://host.tld/, то плагин запросит http://host.tld./ .

В некоторых случаях при неправильной конфигурации сервера атакующий может прочитать исходные коды веб-приложения запрашивая некоторые файлы по такому адресу. Например:

— http://host.tld./login.php

MSNSpider

Плагин ищет новые ссылки на сайте через поискового паука MSN.

Имеет один конфигурационный параметр:

— resultLimit

Так же плагин производит поиск по запросу «@domain.com» и ищет все email адреса на сайте.

fingerprint_WAF

Плагин пытается опознать ПО класса «Web Application Firewall that». Помните о том что изначально эта программа должны быть обнаружена плагином discovery.afd

serverHeader

Плагин осуществляет GET-запрос к серверу и извлекает из ответа содержимое заголовка «Server». Затем он его помещает общую базу знаний. Ничего особенного плагин из себя не представляет. Для получения более детальной информации Вы можете использовать hmap-плагин.

wsdlFinder

Плагин ищет веб-сервисы на сайте запрашивая каждый существующий файл с добавлением «?WSDL» к его имени.

pykto

Плагин представляет из себя сканнер nikto, портированный на python.

Он использует базу данных из nikto (scan_database) для поиска уязвимых ссылок. Плагин имеет семь параметров:

— updateScandb

— cgiDirs

— adminDirs

— nukeDirs

— dbFile

— extra_db_file

— mutateTests

— genericScan

crossDomain

Ищет файл crossdomain.xml, который используется Flash, и обрабатывает его.

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

fingerPKS

Плагин ищет почтовые адреса в PGP PKS серверах.

googleSpider

Плагин ищет новые ссылки на сайте с помощью Google. Поиск происходит с помощью запроса «site:domain.com» и просмотра всех найденных ссылок.

Существует два конфигурационных параметра:

— resultLimit

— key

hmap

Плагин опознаёт удалённый веб-сервер, его тип, версию и установленные исправления. Идентификация происходит не только через заголовок «Server». По сути плагин представляет из себя обёртку для hmap Dustin`a Lee

Имеется один параметр:

— genFpF

Если genFpF установлен в true, то будет сгенерирован специальный опознавательный файл для проверяемого веб-сервера. Такие файлы используются для быстрого опознавания серверов. Если Вы сгенерировали новый файл то отправьте его пожалуйста нам на адрес w3af.project@gmail.com и мы добавим его в фреймворк. Обратите внимание на то что hmap самостоятельно соединяется с веб-сервером, не используя при этом настройки w3af (такие как прокси-сервер например).

phishtank

Плагин проверяет домен в базе phishtank. Если он там есть значит сайт взломан и используется для фишинга.

Есть 2 конфигурационных параметра:

— dbFile

— updateDB

fingerGoogle

Данный плагин ищет почтовые адреса в Google. Имеется 2 опции:

— key

— resultLimit

— fastSearch

Если параметр fastSearch установлен в false, то плагин производит поиск по запросу «@domain.com», обрабатывая затем результат (запрашивая каждую найденную ссылку) и возвращая список найденных E-mail`ов. А если этот параметр установлен в true, то E-mail`ы берутся лишь со страницы результатов поиска. Найденные ссылки при этом не посещаются.

dotNetErrors

Плагин запрашивает специально сформированные ссылки которые могут вызвать сообщения об ошибках ASP.NET с интересной информацией типа ASP.NET-версии. Вот пара примеров при запросе которых должна быть сгенерирована ошибка.

— default|.aspx

— default~.aspx

archiveDotOrg

Данный плагин ищет исследуемый сайт на archive.org и обрабатывает результаты. Позволяет найти новые ссылки. Это машина времени!

ghdb

Плагин ищет в приложении уязвимости с помощью Google.

Имеет 3 параметра:

— resultLimit

— updateGHDB

— key

Действие происходит с использованием «google hack database», автором которой является jhonny.

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

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