Статьи Перевод описания плагинов w3af

Discussion in 'Статьи' started by Kuzya, 7 Jun 2009.

  1. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Здравствуйте. Изучая w3af я наткнулся на страницу описания всех плагинов (http://w3af.sourceforge.net/plugin-descriptions.php). Там содержится всё - их опции, назначение, принцип работы и т.д. Этот документ может сильно помочь в освоении фреймворка, поэтому я решил перевести его на русский язык.

    pdf-версия с содержанием - http://kuzya.name/files/w3af_plugins.pdf (26 страниц, Times New Roman, 12pt).
    Плагины аудита

    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" указывает на завершение подбора как только будет подобран пароль к первому аккаунту.
     
    #1 Kuzya, 7 Jun 2009
    Last edited: 7 Jun 2009
    2 people like this.
  2. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    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'
     
  3. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    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
     
  4. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    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
    Здесь поиск будет производиться в ответе (reponse), а именно в его теле ([*b]ody). Заменяться будут слова "form" или "Form" на "form".
    Если Вы хотите указать много выражений то разделяйте их запятыми.
     
  5. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    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-аккаунты:
    - [email protected]
    - [email protected]
    То 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, то будет сгенерирован специальный опознавательный файл для проверяемого веб-сервера. Такие файлы используются для быстрого опознавания серверов. Если Вы сгенерировали новый файл то отправьте его пожалуйста нам на адрес [email protected] и мы добавим его в фреймворк. Обратите внимание на то что 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.
     
    1 person likes this.
Loading...