Обхід фільтрів для проведення XSS атак

23:59 14.02.2013

На початку 2008 року, 03.02.2008, я проводив дослідження власного веб додатку і намагався перевірити можливість обходу фільтрів для проведення XSS атаки. Зокрема з використанням спеціальних символів для розділення імені тега та його властивостей. Це може знадобитися як для обходу XSS фільтрів, так і в тих випадках, де теги не фільтруються, але є обмеження на символи (наприклад, пробіл), тому потрібно використати інший символ для розділення імені тега та його властивостей з метою проведення XSS атаки. Нерідко стикаюся з такими сайтами, де фільтруються деякі символи.

Приклад XSS коду, де можуть знадобитися такі символи:

<img src='1' onerror=alert(document.cookie)>

Між назвою тега “img” і властивістю “src” повинен стояти пробіл. Але якщо цей символ заборонений (в конкретному веб додатку), то потрібно використати інші.

В той день я розробив спеціальну програму для перевірки з якими символами-роздільниками працює виконання скриптів в тегах. За допомогою цієї програми я згенерував html-сторінку для перевірки 256-символів ASCII в якості роздільників. Тоді я перевірив це на своєму браузері Mozilla 1.7.x. І ось через п’ять років, на початку цього місяця, я знайшов цю програму і вирішив перевірити на ній усі наявні в мене браузери (Firefox, IE, Chrome та Opera). Результати перевірки пропоную вашій увазі.

Зазначу, що в зв’язку зі змінами в коді Firefox (які я виявив пару років тому), код який працював в Mozilla та Firefox 3.0.х, вже не працює в більш нових версіях Firefox (а також в Chrome та Opera). Тому код для тестування довелося змінити, щоб протестувати ці браузери. А в Firefox 10 і 15 взагалі не працював код з “img onerror”, тому для тестування нових версій Firefox я зробив тест з “img onload”.

Наступні символи можуть використовуватися в якості роздільників між іменем тега та його властивостями (це в десятковій системі):

Mozilla 1.7.x:

Символи: 0, 8, 9, 10, 13, 32, 34.

Mozilla Firefox 3.0.19, 3.5.19, 3.6.28:

Символи: 9, 10, 13, 32, 47.

В Mozilla Firefox 10.0.7 ESR, 15.0.1:

Символи: 9, 10, 12, 13, 32, 47.

Internet Explorer 6, 7, 8:

Символи: 9, 10, 11, 12, 13, 32, 47.

Chrome 1.0.154.48:

Символи: 9, 10, 11, 12, 13, 32.

Opera 10.62:

Символи: 9, 10, 12, 13, 32, 47.

Mobile Safari 6.0.1, 8.4.1

Символи: 9, 10, 12, 13, 32, 47.

Також я розмістив дану програму в розділі Обхід XSS фільтрів, де ви можете перевірити ваш браузер.


Одна відповідь на “Обхід фільтрів для проведення XSS атак”

  1. MustLive каже:

    You can read this article on English in The Web Security Mailing List: Bypassing filters for conducting XSS attacks and Information Leakage in local search engines.

Leave a Reply

You must be logged in to post a comment.