Самодостатній Cross-Site Scripting

20:33 29.09.2006

Про Cross-Site Scripting я згадував чимало на своєму сайті - це взагалі одна із головних тем, які я піднімаю. І до цього часу мова йшла лише про класичний XSS, назвемо його так (причому класичний Cross-Site Scripting в свою чергу ділиться на декілька різновидів), щоб відрізняти від нового різновида XSS. Про який я зараз вам розповім, який по суті є лише ще одним підкласом XSS уразливостей. Мова йде про самодостатній XSS (self-contained XSS).

Самодостатній Cross-Site Scripting - це зовсім інша форма XSS уразливостей, яка має свої обмеження з одного боку, а з іншого - її набагато важче виявити і відфільтрувати (на даний час). Тому що старі методи, які фільтрують класичний XSS, вже не діють.

Як повідомив pdp, 22.09.2006, в своій статті Self-contained XSS Attacks, він виявив дану уразливість - нову форму XSS атак. На що потім в коментарях до статті, RSnake написав, що в нього даний вектор атаки XSS вже згадувався 2 роки тому (і приклад самодостатньої XSS атаки в нього на сайті приводиться, якщо уважно прочитати відповідні матеріали). Тобто це не є новим вектором атаки. Але справа не в цьому, бо все нове - це добре забуте старе. Зараз як раз з новими силами і більш доступно pdp, а тепер і я, розповідаємо про даний різновид XSS атак.

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

Даний ява скрипт код:

<script>alert("XSS")</script>

Має наступний вигляд:
data:text/html;base64,PHNjcmlwdD4KYWxlcnQoIlhTUyIpOwo8L3NjcmlwdD4=

Для перетворення довільного коду (для XSS) в потрібний формат для протоколу data потрібен перекодувач в Base64 формат даних (з відповідним заголовком). Для цього я пропоную для вас Онлайновий генератор самодостатніх XSS. Який і займеться генерацією потрібного XSS кода. В Генераторі XSS в формі ви можете сгенерувати html код, який можна одразу ж виконати (для перевірки).

Слід додати, що сам pdp, автор статті (а також RSnake в коментярях), заявляють, що для викрадення кукісів даний метод не придатний. Що тільки для інших векторів атаки можна застосовувати цей мотод самодостатніх XSS. На що я не можу з ними погодитися. Я провів необхідні тестування, і alert(document.cookie) працює добре. Тому при правильному підході, все буде працювати як потрібно (потрібно не просто в URL вписати, а розмістити в лінці в атибуті href). Тому даний вектор атаки є доволі небезпечним.

Лише потрібно зазначити, що його використання обмежене. Ця уразливість може бути експлуатована в Mozilla, Firefox, Opera і можливо інших браузерах. Internet Explorer 6 і 7 не дозволить зробити атаку даного типу (бо не підтримує протокол data).

P.S.

До речі, окрім статті автора, Self-contained XSS Attacks (на англійскій), також можете прочитати переклад цієї статті на секлабі Самодостаточные XSS атаки.


6 відповідей на “Самодостатній Cross-Site Scripting”

  1. halkfild каже:

    как это выглядит в документе??? :? : сколько не пробовал не выполняется.. :(
    напиши мне на почту или оставь асю нормально пообщпемся

  2. MustLive каже:

    halkfild, напишу тобі обов’язково ;-) (як раз відповім на твого листа найближчим часом). А ася моя в інтернеті доступна, на моєму домашньому сайті, а також можна пошуком по ніку знайти мою асю.

    Щодо Самодостатнього Cross-Site Scripting, то ти спробуй мій Генератор XSS. У випадку, якщо не працюють приклади, то зверни увагу на те, що для виконання потрібен відповідний браузер (Mozilla, Firefox, Opera, в IE не працює), про що я писав в статті.

  3. Prodev каже:

    На счет кражи кукисов не согласен.
    Одного алерта не достаточно, надо как то передать данные кукисов.
    А вот загрузить троян или експлоит на базе офисного документа, это да :)

  4. GS каже:

    Prodev, a AJAX для чого?

  5. MustLive каже:

    GS

    Так, і AJAX можна використовувати при XSS-атаках, особливо при просунутих XSS-атаках ;-) .

  6. MustLive каже:

    Prodev

    Ты можешь использовать самодостаточный XSS (как и другие типы XSS, такие как активный и пассивный) и для кражи кукисов, и для других атак.

    Одного алерта не достаточно, надо как то передать данные кукисов.

    Естественно при атаке нужно передать данные кукисов - и для этого нужно использовать атакующий код. В данном случае - это код для демонстрации уязвимости (для чего наиболее часто используется alert). Это PoC и в нём используется код для демонстрации (не атакующий), а если использовать код для кражи кукисов - то это уже будет эксплоит (с атакующим кодом).

    А вот загрузить троян или експлоит на базе офисного документа, это да :)

    Эти варианты атак также возможны при использовании XSS уязвимостей ;-) .

Leave a Reply

You must be logged in to post a comment.