Про 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 атаки.