Архів за Червень, 2011

XSS атаки через заголовок User-Agent

22:49 04.06.2011

HTTP заголовок User-Agent часто використовується різними веб додатками і системами (для різних цілей), тому можливість підробки даного заголовка дозволяє проводити атаки. Це можуть бути як spoofing-атаки (причому як проти веб додатків, так і веб додатки можуть використовувати цей заголовок з метою клоакінга), так і XSS атаки. Раніше я вже розповідав про можливість атак через підробку User-Agent в статті Обхід систем для пошуку вірусів на веб сайтах, а зараз розповім про Cross-Site Scripting атаки через заголовок User-Agent.

Враховуючи, що заголовок User-Agent часто використовується різними веб додатками, які виводять значення цього заголовка на веб сторінку, і при цьому розробники часто забувають про його фільтрацію, то це дозволяє проводити XSS атак на дані веб додатки. Бувають як reflected XSS, так і persistent XSS уразливості, що пов’язані з User-Agent.

Проведення XSS атак через User-Agent.

Існують наступні методи проведення XSS атак через User-Agent:

1. Через Flash.

2. Через підробку User-Agent при persistent XSS уразливостях.

3. Через JavaScript.

4. Через ActiveX.

5. Через підробку User-Agent в браузері вірусами.

6. Через проксі, що підроблює User-Agent.

Атака через Flash.

Одним з найлегших методів проведення XSS атак, зокрема на reflected XSS уразливості, є використання Flash. Коли створюється спеціальний swf-файл, що відправляє запит до цільового сайта, при цьому вказуючи в заголовку User-Agent атакуючий XSS код.

Дані атаки спрацюють лише в старих версіях флеш-плагіна - в Flash Player 9.0.16 і попередніх версіях. Починаючи з версії 9.0.28 використання заголовку User-Agent заборонене.

Як я зазначив в статті Відправка серверних заголовків в Flash, у флеш-плагіні 10.0.22.87 і наступних версіях всього заборонено 47 серверних заголовків. Більш детально про XSS атаки через заголовки в флеш ви можете прочитати в даній статті.

Відправка довільних заголовків через Flash.

Хоча Adobe заборонила відправляти деякі заголовки через флеш (на даний момент це 47 серверних заголовків, як я зазначив вище), але всі інші заголовки дозволені. Тобто через Flash можна відправляти довільні заголовки (окрім заборонених), як з числа відомих заголовків, що є стандартизованими, так і будь-які інші.

Тобто, якщо якийсь веб додаток використовує нестандартний заголовок, або заголовки з нових стандартів, то можна буде провести атаку на цей веб додаток. Як і у випадку використання стандартних заголовків з числа незаборонених у флеші (наприклад заголовки Accept і Accept-Language дозволені). А окрім User-Agent веб додатки працюють і з багатьма іншими заголовками, що дозволяє проводити XSS атаки на них.

Атака через підробку User-Agent при persistent XSS уразливостях.

При наявності persistent XSS уразливостей (зокрема в зовнішніх веб додатках), можна підробити User-Agent і провести XSS атаку на вразливий веб додаток.

Це робиться шляхом створення експлоіту чи використання існуючого програмного забезпечення, що вміє посилати довільні заголовки. Для того, щоб відправити запит з User-Agent з атакуючим XSS кодом.

Атака через JavaScript.

Серед сучасних браузерів є такі, що дозволяють змінювати User-Agent через JavaScript. В даному випадку відбувається постійна зміна User-Agent, а не при одному запиті, як це має місце у випадку атаки через флеш.

Зокрема така можливість є в браузерах від Mozilla (в браузерах на движку Gecko), як в старій Mozilla, так і в нових Firefox, в тому числі в Firefox 3.х і 4. З JS кодом для зміни User-Agent в браузері ви можете ознайомитися в мене на сайті.

Даний код я зробив ще в 2003 році. Він змінює значення параметра general.useragent.override. Дана атака спрацює лише локально, але не онлайн. Тобто потрібно змусити користувача зберегти html-сторінку на свій комп’ютер і відкрити її локально (або підсунути її йому різними шляхами для локального відкриття). Про подібні атаки на браузери я вже писав, тому це цілком реально.

З іншої сторони, можна використати Cross Context Scripting (Cross-zone scripting) уразливості в браузерах на движку Gecko, для того щоб віддалено виконати код в локальному контексті й провести зміну User-Agent в браузері. Додам, що при цій зміні в старих Mozilla 1.7.х і попередніх версіях не виникало жодних повідомлень, тому атаку можна було провести приховано, а в Firefox 3.х вже виникає повідомлення (але якщо поставити відповідних чекбокс, то воно більше виникати не буде). Але це не є проблемою, тому що користувача можна обманним чином змусити натиснути Allow, та й багато користувачів взагалі автоматично натиснуть Allow в даному повідомленні.

Атака через ActiveX.

В Internet Explorer і в браузерах на движку IE можна через ActiveX компонент (так само як і в Flash ActiveX компоненті) підмінити заголовок User-Agent. Так само можуть додаватися будь-які інші серверні заголовки. Тому зловмисні компоненти в IE можуть проводити такі атаки.

Атака через підробку User-Agent в браузері вірусами.

Віруси, що потрапили на комп’ютер користувача, можуть змінювати User-Agent в одному або всіх браузерах, що він використовує. В даному випадку відбувається постійна зміна User-Agent, а не при одному запиті, як це має місце у випадку атаки через флеш. Так само можуть додаватися будь-які інші серверні заголовки.

Можливі різні варіанти зміни User-Agent шкідливим програмним забезпеченням. В браузерах Mozilla і Firefox вірус може додати необхідне значення User-Agent в файл prefs.js в папці з профілем користувача. Це також може зробити зловмисник при тимчасовому доступі до комп’ютера користувача.

В файл prefs.js додається (або замінюється існуючий) рядок:

user_pref("general.useragent.override", "XSS payload");

Для атаки на всі браузери можна або інфікувати exe-файли (або dll-файли) браузерів, щоб додати в них функцію, яка задає фіксоване значення User-Agent (що важче), або додати плагін/доповнення до браузеру, що робить дану операцію (що легше). Дана атака також може бути проведена через плагіни/доповнення, які скачуються користувачем з Інтернету - це можуть бути підставні плагіни, які або нічого не роблять (при цьому змінюючи User-Agent), або навіть мають якийсь публічний функціонал (при цьому приховано змінюючи User-Agent), або ж це можуть бути легальні плагіни, в яких є подібний прихований функціонал (що був зроблений автором плагіна, або зловмисником, який включив такий код в плагін).

Атака через проксі, що підроблює User-Agent.

У випадку атаки через проксі, у всіх запитах з браузера проксі може підміняти User-Agent, щоб задати заголовок з атакуючим XSS кодом. Атака буде тривати доти, доки користувач буде використовувати даний проксі (лише у випадку атаки на Ad Muncher відбудеться постійна зміна User-Agent). Так само можуть додаватися будь-які інші серверні заголовки.

Дана атака може відбуватися наступним чином:

а) На комп’ютері користувача встановлена програма, що працює як проксі. Наприклад, така як Ad Muncher (про різні універсальні XSS в якому я писав торік), що вміє підроблювати значення User-Agent. Вірус на комп’ютері користувача, або зловмисник при тимчасовому доступі до його комп’ютера, може змінити налаштування Ad Muncher, щоб задати необхідне значення User-Agent.

б) Користувач задав для свого браузера проксі - це може бути публічний анонімний проксі, що контролюється зловмисником, або користувача обманним шляхом заставили встановити необхідний проксі, чи це зробив вірус, змінивши налаштування браузера. І цей проксі підмінює значення User-Agent.

До речі, при атаці через JavaScript (або вірусами) також можна змінити налаштування проксі в браузері. Зокрема в браузерах на движку Gecko потрібно вказати параметри network.proxy.http, network.proxy.http_port і задати network.proxy.type = 1. Таким чином можна об’єднати атаки 3 і 6 або 5 і 6.

в) Деякі Інтернет провайдери в реальному часі вносять зміни в запити/відповіді, що йдуть від/до користувача. І зловмисний провайдер (або взломаний провайдер) може підмінити значення User-Agent.

г) При MITM атаці, наприклад, при використанні WiFi, також можуть підмінити значення User-Agent.

Заключення.

З вищенаведеного видно, що існує чимало методів підробки User-Agent, зокрема для проведення XSS атак. Тому веб розробникам потрібно завжди слідкувати за безпекою власних додатків. Щоб не допускати Cross-Site Scripting уразливостей, в тому числі при роботі з заголовком User-Agent.

DoS в Internet Explorer

20:15 04.06.2011

Новий тест для вашого браузера. Даний експлоіт виконує DoS атаку на Microsoft Internet Explorer 6.

В результаті роботи експлоіта браузер вилітає (тобто DoS атака). Як я протестував, на моєму Internet Explorer 6 під Windows XP SP2 цей експлоіт працює. В наступних версіях IE він вже не працює.

Протестувати Internet Explorer 6

Останній тест для IE був DoS в Internet Explorer 6, з яким ви також можете ознайомитися.

IL та XSS уразливості в багатьох темах для WordPress

16:08 04.06.2011

11.04.2011

У квітні, 08.04.2011, я знайшов Information Leakage та Cross-Site Scripting уразливості в різних темах для WordPress. Про що найближчим часом повідомлю розробникам даних тем.

Уразливі наступні теми від WooThemes: Live Wire (всі три теми Live Wire серії), Gotham News, Typebased, Blogtheme, VibrantCMS, Fresh News, The Gazette Edition, NewsPress, The Station, The Original Premium News, Flash News, Busy Bee та Geometric. Можливі й інші уразливі шаблони для WP.

Раніше я вже писав про уразливості в багатьох темах для WordPress.

Детальна інформація про уразливості з’явиться пізніше. Спочатку повідомлю розробникам.

04.06.2011

В різних шаблонах є test.php - скрипт з phpinfo() - що призводить до Information Leakage (витік FPD та іншої важливої інформації про сервер) та XSS (в PHP < 4.4.1, 4.4.3-4.4.6).

Information Leakage:

http://site/wp-content/themes/_theme's_name_/includes/test.php

XSS:

http://site/wp-content/themes/_theme's_name_/includes/test.php?a[]=%3Cscript%3Ealert(document.cookie)%3C/script%3E

Для Live Wire скрипт розміщується за адресою http://site/wp-content/themes/livewire/includes/test.php, для інших тем аналогічно.

Дані уразливості досі не виправлені розробниками. Тому користувачам даних тем потрібно виправити уразливості власноруч (наприклад, видаливши цей скрипт).

Нові CSRF і XSS уразливості в ADSL модемі Callisto 821+

23:55 03.06.2011

Продовжуючи тему уразливостей в ADSL модемі Callisto 821+, розповім вам про нові уразливості в даному модемі. У квітні, 07.04.2011, я виявив Cross-Site Request Forgery та Cross-Site Scripting уразливості в ADSL модемі Callisto 821+ (SI2000 Callisto821+ Router).

Уразлива версія SI2000 Callisto821+ Router: X7821 Annex A v1.0.0.0 / Argon 4×1 CSP v1.0 (ISOS 9.0) [4.3.4-5.1]. Дана модель з іншими прошивками також повинна бути вразливою.

Дані атаки потрібно проводити на власника модему, який залогінений в адмінку. Враховуючи, що малоймовірно застати його в такому стані, то можна використати раніше згадані уразливості для проведення віддаленого логіну (щоб залогінити його в адмінку). Після чого можна спокійно провести CSRF або XSS атаку.

CSRF:

Дана уразливість дозволяє задати ім’я для DNS relay local LAN database. Дана БД буде працювати лише коли задане її ім’я (тобто задавши пусте значення можна деактивувати її).

Callisto 821+ CSRF12.html

В розділі Create new DNS relay local LAN database entry (http://192.168.1.1/configuration/create_landb_host.html) через CSRF можна додавати, редагувати і видаляти хости в даній БД.

XSS:

В вищезгаданій формі є 3 persistent XSS уразливості.

Callisto 821+ XSS17.html

В даному випадку код виконається одразу, а також при відвіданні сторінки http://192.168.1.1/configuration/dns_relay_landb.html.

Callisto 821+ XSS18.html

В даному випадку код виконається одразу, а також при відвіданні сторінок http://192.168.1.1/system/events.html і http://192.168.1.1/shared/event_log_selection.html.

Callisto 821+ XSS19.html

В даному випадку код виконається одразу, а також при відвіданні сторінок http://192.168.1.1/system/events.html і http://192.168.1.1/shared/event_log_selection.html.

В розділі Create new DNS relay local LAN database entry (http://192.168.1.1/configuration/create_landb_host.html) у всіх текстових полях та деяких прихованих полях мають місце persistent XSS уразливості.

Експлоіт для Firefox 3.6

22:41 03.06.2011

Продовжуючи розпочату традицію, після попереднього відео про експлоіт для Firefox 3.5, пропоную нове відео на веб секюріті тематику. Цього разу відео про eксплоіт для Firefox 3.6. Рекомендую подивитися всім хто цікавиться цією темою.

Exploit Firefox 3.6

В даному відео ролику демонструється використання експлоіта для уразливості в Firefox 3.6, свіжій версії Firefox на момент запису відео. Експлоіт дозволяє проводити віддалене виконання коду в даному браузері.

Атака відбувається при відвідуванні веб сторінки зі шкідливим кодом (що експлуатує дану уразливість). Рекомендую подивитися дане відео для розуміння векторів атак на Mozilla Firefox.

Новини: кібертренування Євросоюзу і США, дірка в Hotmail та банкомати

19:11 03.06.2011

За повідомленням www.xakep.ru, Євросоюз і США погодилися на проведення спільних кібертренувань у 2011 році.

Євросоюз і США вирішили затратити більше сил на боротьбу з кіберзлочинами і на поліпшення кібербезпеки.

На зустрічі комісара внутрішніх справ Євросоюзу Сесілії Мальмстрем, відповідальної за боротьбу з кіберзлочинами, і секретаря національної безпеки США Джанет Наполітано було вирішено запустити спільний проект-тренування по кіберподіям Євросоюзу і США наприкінці 2011.

За повідомленням hackzona.com.ua, Microsoft усунула вразливість в Hotmail.

Корпорація Microsoft повідомила про усунення уразливості нульового дня в поштовому сервісі Hotmail, яка дозволяла зловмисникам перехоплювати електронні адреси та контактні дані користувачів.

За повідомленням www.xakep.ru, чоловік засуджений до 3 років позбавлення волі за спробу перепрограмувати банкомати.

Чоловік з Північної Кароліни був присуджений до трьох років тюремного ув’язнення після того, як він зізнався, що планував привласнити $200000 шляхом взлому банкоматів.

Добірка уразливостей

16:24 03.06.2011

В даній добірці уразливості в веб додатках:

Нові CSRF і XSS уразливості в ADSL модемі Callisto 821+

23:59 02.06.2011

Продовжуючи тему уразливостей в ADSL модемі Callisto 821+, розповім вам про нові уразливості в даному модемі. У квітні, 07.04.2011, я виявив Cross-Site Request Forgery та Cross-Site Scripting уразливості в ADSL модемі Callisto 821+ (SI2000 Callisto821+ Router).

Уразлива версія SI2000 Callisto821+ Router: X7821 Annex A v1.0.0.0 / Argon 4×1 CSP v1.0 (ISOS 9.0) [4.3.4-5.1]. Дана модель з іншими прошивками також повинна бути вразливою.

Дані атаки потрібно проводити на власника модему, який залогінений в адмінку. Враховуючи, що малоймовірно застати його в такому стані, то можна використати раніше згадані уразливості для проведення віддаленого логіну (щоб залогінити його в адмінку). Після чого можна спокійно провести CSRF або XSS атаку.

CSRF:

Дана уразливість дозволяє видалити порядок пошуку доменів.

Callisto 821+ CSRF11.html

В розділі DNS Relay (http://192.168.1.1/configuration/dns_relay2.html) через CSRF можна додавати, редагувати і видаляти DNS сервера.

XSS:

В формі видалення порядку пошуку доменів є persistent XSS уразливість.

Callisto 821+ XSS16.html

В даному випадку код виконається одразу, а також при відвіданні сторінок http://192.168.1.1/system/events.html і http://192.168.1.1/shared/event_log_selection.html.

В розділі DNS Relay (http://192.168.1.1/configuration/dns_relay2.html) у всіх текстових полях мають місце persistent XSS уразливості.

Відправка серверних заголовків у Flash

22:46 02.06.2011

Можливість відправки серверних заголовків, що наявна в Flash, є важливою в контексті веб безпеки. Тому що для браузерів існують флеш плагіни, якими користуються майже 100% користивувачів Інтернет (різними версіями флеш плагіна). І дану можливість можна використати для атак на сайти і веб додатки, зокрема для проведення spoofing та XSS атак.

Для відправки довільних серверних заголовків потрібно використовувати відповідні методи, зокрема метод addRequestHeader класів LoadVars та XML, що з’явилися в AS1 у Flash 6. А починаючи з AS3 для цього потрібно використовувати властивість URLRequest.requestHeaders.

При цьому зазначу, що в мене відправка заголовків працює лише в IE6 та IE7 (і так само вона має працювати в IE8 та IE9), але не в інших браузерах. Що раніше у Flash плеері 8 і 9, що зараз у Flash плеері 10.

Компанія Adobe вже багато років як намагається обмежити даний функціонал - з метою безпеки - щоб його не можна було використати для атаки (але так чи інакше його все рівно з року в рік використовують для цих цілей). Для обмеження Adobe використала два підходи: чорний список (blacklist) заголовків, які не можна використовувати (і він збільшується з роками), та запровадження правила для міждоменної політики. В даному випадку необхідно в міждоменній політиці задавати дозвіл іншим сайтам на відправку заголовків даному сайту (це стосується лише міждоменних запитів і в рамках одного домена обмежень немає).

Більш детально про те, які заголовки були заборонені в яких версіях флеш плеєра, ви можете дізнатися на сторінці ActionScript error when an HTTP send action contains certain headers (Flash Player).

На даний час для версій Flash Player 10.0.22.87 і вище заборонена відправка наступних заголовків: Accept-Charset, Accept-Encoding, Age, Allow, Allowed, CONNECT, Connection, Content-Length, Content-Location, Content-Range, Cookie, DELETE, Date, ETag, Expect, GET, HEAD, Host, Keep-Alive, Last-Modified, Location, Max-Forwards, OPTIONS, ORIGIN, POST, PUT, Proxy-Authenticate, Proxy-Authorization, Proxy-Connection, Public, Range, Referer, Request-Range, Retry-After, Server, TE, TRACE, Trailer, Transfer-Encoding, URI, Upgrade, User-Agent, Vary, Via, WWW-Authenticate, Warning, x-flash-version.

Але при цьому всі інші серверні заголовки дозволені. Що дозволяє відправляти довільні заголовки (окрім вищезгаданих), серед яких можуть бути й такі, які використовується на різних веб сайтах. І це може бути використано для проведення spoofing та XSS атак на дані сайті.

Уразливості на depositfiles.com

16:04 02.06.2011

27.09.2010

У травні, 27.05.2010, я знайшов Cross-Site Scripting та Insufficient Anti-automation уразливості на сайті http://depositfiles.com (файлообмінник). Про що найближчим часом сповіщу адміністрацію сайта.

Раніше я вже писав про уразливість на depositfiles.com.

Детальна інформація про уразливості з’явиться пізніше.

02.06.2011

XSS (вже виправлена):

POST запит на сторінці http://depositfiles.com/ru/gold/forgot.php в полях: Логин, E-mail, Код.

XSS:

Можливі й інші банери на сайті з даними уразливостями.

Insufficient Anti-automation:

http://depositfiles.com/ru/tickets/history.php?ticketId=473687
&ticketEmail=mustlive@websecurity.com.ua

Виправлена лише частина уразливостей (перші три XSS), а частина досі не виправлена. Що не є коректним підходом. А враховуючи, що за повідомлення про уразливості адміни не подякували мені і три XSS вони виправили втихаря, то це також характеризує їх виключно з негативної сторони.