Перевёл: Кузьмин Антон
Дата: ~05.06.2009
Дата: ~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.
Комментариев нет:
Отправить комментарий