Local XSS - Локальний XSS

22:45 18.05.2010

Розповім вам про новий вид Cross-Site Scripting уразливостей, Local XSS, який я створив у червні 2006 року для кращої класифікації XSS уразливостей, коли знайшов уразливість в Ad Muncher.

Local XSS (Локальний XSS) - це Cross-Site Scripting уразливості в локальному програмному забезпеченні (на компьютері користувача, або в локальній мережі), які приводять до появи XSS уразливостей. Тобто, це такі XSS уразливості, що мають місце не безпосередньо на сайті, а в локальному ПЗ користувача. І які дозволяють атакувати навіть сайти, що можуть і не мати XSS уразливостей.

Зокрема такий вид уразливостей призводить до появи так званих універсальних XSS, що дозволяють проводити атаки на численні сайті, у випадку коли користувач використовує уразливу програму. Прикладами універсальних XSS є UXSS в PDF, уразливість в Ad Muncher та уразливість в XSS Filter в IE8.

Особливості Local XSS.

Local XSS уразливості можуть мати місце в браузерах та в інших програмах, що пов’язані з роботою в Інтернеті. Таких як плагіни для браузерів, проксі сервери, банерорізки (що виконують функцію проксі сервера) та інших.

Дані уразливості мають місце не на сайті, а у користувача на локальному комп’ютері (при використанні уразливої програми), тому адміни сайтів і веб розробники часто ігнорують подібні уразливості. В деяких випадках власники сайтів нічого зробити не можуть по відношенню до даних уразливостей (лише порадити користувачам оновити уразливу програму), в інших випадках власники сайтів можуть використовувати різні захисні методи (як у випадку UXSS в PDF та уразливості в XSS Filter в IE8).

Однією з особливостей Локальних XSS є те, що вони можуть обходити WAF на сайтах (із-за того, що уразливості мають місце в локальному ПЗ користувача, а не на сайті). Тому щоб на веб сайті протидіяти атакам з використанням даних уразливостей, потрібно використовувати не WAF, а спеціальні методи (як у випадку уразливостей в PDF та IE8).

Існує такий клас уразливостей як Cross-zone scripting. Дані уразливості мають місце у бразерах, зокрема в Mozilla Firefox (та інших браузерах на движку Gecko) та в Internet Explorer (та браузерах на движку IE, таких як Sleipnir, Portable Sleipnir, unDonut) та в плагінах (розширеннях, тулбарах) для браузерів.

Cross-zone scripting - це інший вид XSS, ніж Local XSS. Тому дані уразливості не відносяться до Local XSS. Тому що через ці уразливості в браузерах і плагінах до них можна виконати код на компьютері користувача (в локальному контексті), а не на веб сайті (в контексті даного сайту). Тобто через Cross-zone scripting атака відбувається на компьютер користувача (з його поточними правами), а через Local XSS - на веб сайт (з правами даного користувача). Але спільним для обох видів XSS є те, що дані уразливості проявляються в локальному ПЗ користувача.

Різновиди Local XSS.

Бувають наступні види Local XSS:

  • Reflected local XSS - найбільш поширений різновид Local XSS.
  • Persistent local XSS - це Post Persistent XSS (Saved XSS), тобто даний різновид XSS відноситься одночасно і до Persistent XSS і до Local XSS.
  • Strictly social local XSS - даний різновид XSS відноситься одночасно і до Strictly social XSS і до Local XSS.

Про Post Persistent XSS (Saved XSS) підклас Cross-Site Scripting уразливостей я вже писав, а про Strictly social XSS підклас я з часом напишу окрему статтю.

Розглянемо приклади різних видів Local XSS уразливостей.

Reflected local XSS.

Reflected local XSS - це Reflected XSS в локальних додатках.

Прикладами Reflected local XSS є наступні уразливості:

1. Універсальна XSS в PDF, про що я писав в 2007 році. Дану уразливість в Adobe Reader та Acrobat, а також їхніх плагінах до браузерів, виявив і оприлюднив Stefano Di Paola наприкінці 2006 року. Для атаки необхідно було використати pdf-файл на будь-якому сайті, що містить pdf-файл (за виключенням тих, що на стороні сервера подбали про захист від даної атаки).
2. Уразливості в різних плагінах для браузерів, зокрема уразливості в Adobe Flash Player та Adobe Acrobat. Якщо нижчезгадані persistent XSS через Flash та strictly social XSS в мільйонах флеш файлах вважаються Адобом фічою флеша, то вищезгадані reflected XSS Адоб виправив.
3. Cross-Site Scripting через jar: URI в Firefox, яку виявили в 2007 році PDP та Beford.
4. Універсальна XSS уразливість в Ad Muncher, про що я писав в 2010 році. Атака відбувалася при відвідуванні спеціально створених URL, за допомогою чого можна було провести XSS атаку на будь-якому сайті (за виключенням тих випадків, про які розповідається в данному записі).
5. Уразливості в Sidki та Proxomitron, про що Charles Reis, Steven D. Gribble, Tadayoshi Kohno та Nicholas C. Weaver написали в 2008 році. Як вони виявили через рік після мене, в 2007 році, окрім Ad Muncher, також до подібної XSS вразливі Sidki та набір фільтрів Grypen для Proxomitron.
6. Уразливість в Internet Explorer 8 - Eduardo Vela Nava та David Lindsay на початку цього року виявили уразливість в XSS Filter в IE8, що дозволяє проводити XSS атаки на користувачів IE8 на будь-яких сайтах (за виключенням тих, що на стороні сервера подбали про захист від даної атаки).
7. Нова уразливість в Ad Muncher, про що я писав в 2010 році. Атака аналогічна попередній уразливості в Ad Muncher.

Persistent local XSS.

Persistent local XSS - це Persistent XSS в локальних додатках, зокрема це Post Persistent XSS (Saved XSS) уразливості.

Прикладами Persistent local XSS є наступні уразливості:

1. Уразливості в Flash плагіні для браузерів. При завантаженні swf-файлів на сервер з XSS-кодом, можна провести атаку на користувачів, що мають флеш плагін (який мають більше 99% користувачів Інтернет). Як я вже зазначав, Адоб не важає це проблемою безпеки, бо це фіча технології Flash, тому власникам сайтів та веб розробникам потрібно самим займатися безпекою, при дозволі включення флешек (як у випадку уразливості в Invision Power Board) чи дозволі завантаження флешек (як у випадку уразливості в FCKeditor).
2. Уразливості в QuickTime плагіні для браузерів. Зокрема через Media Link в QuickTime при завантаженні файлів (в xml-форматі) з розширенням mp3 на сервер, можна було провести атаку на користувачів, що мають QT плагін (один з популярних плагінів).
3. Cross-Site Scripting уразливість в Internet Explorer, про що я писав в 2007 році. Атака відбувається при збереженні сторінки зі спеціально створеним URL та подальшому відкритті даної сторінки в браузері.
4. Cross-Site Scripting уразливість в Google Chrome, про що я писав в 2008 році. Атака аналогічна до атаки на IE.
5. Cross-Site Scripting уразливість в Opera, про що я писав в 2008 році. Атака аналогічна до атаки на IE та Chrome.
6. Універсальна XSS уразливість в Ad Muncher, про що я писав в 2010 році. В даному додатку можна було провести як Reflected local XSS атаку, так і Persistent local XSS атаку.
7. Нова уразливість в Ad Muncher, про що я писав в 2010 році. Атака аналогічна попередній уразливості в Ad Muncher.

Strictly social local XSS.

Strictly social local XSS - це Strictly social XSS в локальних додатках.

Прикладами Strictly social local XSS є наступні уразливості:

1. Cross-Site Scripting в Mozilla та Firefox, про що я писав в 2007 році. Атака відбувається через gopher протокол. Для проведення XSS атаки необхідно, щоб користувач браузера Mozilla, Firefox або SeaMonkey (чи інших браузерів на движку Gecko) перейшов не спецільно створену сторінку і змінів кодування на UTF-7.
2. Cross-Site Scripting з UTF-7 в Mozilla та Firefox, про що я писав в 2009 році. Атака відбувається через http, https і ftp протоколи (дана уразливість є продовждення попередньої, в якій використовуються нові протоколи).
3. Cross-Site Scripting уразливості в Mozilla та Firefox, про що я писав в 2009 році. Атака відбувається при запиті до location-header редиректора з вказанням JavaScript коду. При запиті браузер виводить сторінку “Object Moved”, де в лінці “here” виводить даний код, при натисканні на яку код спрацює.
4. Через flash плагін для браузерів можливі strictly social XSS уразливості в 8 мільйонах та 34 мільйонах флеш файлах.

Приклад Local XSS.

Найбільш яскравим прикладом Local XSS уразливості є універсальна XSS в Ad Muncher. Суть даної уразливості полягала в наступному.

Уразливість була можлива через те, що програма вказувала поточний URL в тілі поточної сторінки (без фільтрації тегів). Тому при спеціально створеному URL можно було виконати код на будь-якому сайті.

Проведення reflected XSS атаки:

http://www.google.com/webhp?%3C/script%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

За допомогою даної уразливості можна було провести XSS атаку на будь-який сайт (за виключенням вищезгаданих випадків). Атаку можна було провести, наприклад, через прихований iframe. Причому атака працювала в будь-якому браузері.


3 відповідей на “Local XSS - Локальний XSS”

  1. MustLive каже:

    You can read this article on English: Local XSS.

  2. MustLive каже:

    Ще одним прикладом Local XSS є Cross-Site Scripting уразливість в Mozilla, Firefox та інших браузерах через редиректори з відповіддю “302 Found”.

  3. MustLive каже:

    Ще одним прикладом Local XSS є Saved XSS уразливість в Internet Explorer.

Leave a Reply

You must be logged in to post a comment.