Обхід фільтрів для проведення 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 фільтрів, де ви можете перевірити ваш браузер.
П'ятниця, 03:10 01.03.2013
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.