З появою технологій розробки багатофункціональних веб-додатків і збільшення числа веб-сервісів зросла кількість вразливостей в цих додатках. Міжсайтовий скриптинг (Cross Site Scripting, CSS або частіше використовується абревіатура XSS) один з найбільш поширених типів атак за допомогою впровадження коду.
Адвітія Агравал (Adwiteeya Agrawal), Критика Собті (Kritika Sobti), обидва студенти, кафедра Інформаційних Технологій, Технологічний інститут Махараджа Сураджмал Нью-Делі, Індія, [email protected], [email protected];
Анотація - XSS (міжсайтовий скриптинг) - вразливість в веб-додатку, коли кінцевий користувач може передавати прості скрипти як корисні навантаження (payloads) через необроблювані вхідні параметри. Подібний тип вразливостей існує вже досить давно, проте наша поточна задача - подальше використання виявлених вразливостей. Ця концепція відома як «Пост-експлуатація XSS», і саме на ній сфокусовано увагу в цій статті. В даному документі представлено поглиблене дослідження загроз XSS-вразливостей і спрощене їх застосування. Також показані варіанти захисних дій від XSS-атак, які можуть бути застосовані в якості запобіжних заходів. Далі ми використовуємо одну з вразливостей і розробимо новий модуль на базі однієї з популярних утиліт для XSS-атак. Цей модуль можна використовувати для виклику через SIP-протокол (Session Initiation Protocol, протокол встановлення сеансу). Модуль був розроблений для нового релізу фреймворка XSSF.
Ключові слова: XSS, Post-XSS, Атаки, Засоби захисту.
2. Популярні утиліти для знаходження та експлуатації XSS-вразливостей
У цьому розділі ми коротко розглянемо кілька популярних фреймворків для знаходження XSS-вразливостей в веб-додатках і їх подальшого використання. Вони инжектируются корисні навантаження (payloads) і виконують скрипти на вразливою сторінці.
Незважаючи простоту Xenotix, утиліта має кілька обмежень. Наприклад, дані по натиснутих клавіш можуть збиратися тільки на інфікованої сторінці, а при завантаженні файлів на комп'ютер користувача можуть запускатися тільки 16-бітові виконувані файли. До того ж, у користувача кожного разу при завантаженні файлу або атаці через зворотний оболонку спливають повідомлення, оскільки додаток використовує самоподпісанного аплети.
З одного боку XSSF пропонує безліч методів для XSS-атак, проте не надає великої кількості методів для знаходження XSS-вразливостей. Також для роботи з XSSF попередньо необхідно ознайомитися з Metasploit.
BeFF підчіплює (hook) один або кілька браузерів для запуску певних модулів управління і наступних атак проти системи зсередини контексту браузера (browser context). У різних браузерів, мабуть, є різні контексти безпеки, до кожного з яких можна застосувати свій унікальний набір атак. Фреймворк дозволяє тестувальника безпеки вибрати певні модулі (в режимі реального часу) для кожного браузера і, відповідно, кожного контексту.
BeFF - потужна утиліта для виконання різних атак, що експлуатують XSS-уразливість, наприклад, browser fingerprinting (збір інформації про браузер), утримування захопленого браузера (persistence), збір інформації про мережу, робота з DNS (DNS enumeration), сканування портів і IRC NAT Pinning і т. д.
Існує три види XSS-атак:
- Непостійні (відображені).
- Постійні (збережені).
- Локальні (засновані на DOM-моделі);
Всі уразливості веб-сторінок і веб-додатків можуть бути віднесені до одного з трьох видів, згаданих вище. Кожен з видів атак описується нижче за допомогою діаграм, які наочно показують процес детектування і реалізації XSS-атаки.
Малюнок 1: Типовий сценарій непостійній (відображеної) XSS-атаки
Малюнок 2. Типовий сценарій постійної (збереженої) XSS-атаки
Постійні (збережені) атаки (див. Рис. 2) мають найбільший потенціал. При таких атаках шкідливих код зберігається на сайті (в базі даних, файлової системи або в іншому місці), а потім відображаються відвідувачеві веб-сторінки без кодування з використанням спеціальних символів HTML. Наприклад, на форумах користувачі можуть публікувати повідомлення форматі HTML.
Малюнок 3. Типовий сценарій атаки, заснованої на DOM
Локальні XSS-атаки або атаки, засновані на DOM, полягають в тому, що зловмисник змінює дані на стороні клієнта під час запиту сторінки з сервера.
4. Пост-експлуатація XSS-вразливостей
4.1 Крадіжка даних в Android
4.2 Некоректна URI-схема і вбудований Webkit-браузер Скайпу в iOS
4.3 Використання HTML5 API для междоменной викликів
4.4 Управління Ajax-історією в HTML5
4.5 Доступ до елементу управління WScript ActiveX в Internet Explorer
4.6 File API в HTML5
4.7 Використання XSS-уразливість для визначення координат
4.8 NAT PINNING - IRC через HTTP
4.9 Використання експлойтів для браузерів
При таких атаках можна, наприклад, експлуатувати стек браузера і запускати шкідливий шелл-код або відкривати meterpreter-сесію, використовуючи експлоїти, що порушують цілісність інформації в пам'яті в зв'язці з XSS. Решта експлоїти можуть повертати meterpreter-сесію без безпосереднього впливу на стек браузера. Наприклад, самоподпісанний java-аплет можна використовувати для завантаження і виконання шкідливих виконуваних файлів.
5. Новий модуль для реалізації XSS-атаки
У цьому розділі ми представимо новий модуль на базі XSSF (cross site scripting framework).
5.1 Концепт модуля
Тут ми розповімо про концепцію нового модуля, який буде створений на базі XSSF і буде експлуатувати XSS-уразливість для здійснення дзвінка по протоколу VoIP.
Згідно з його інформацією, вразливість міститься в файлі www / html / recordings / misc / callme_page.php. За допомогою цієї уразливості SIP-клієнт може викликати певне розширення. Ми розробили модуль, який експлуатує дану уразливість і викликає розширення, для фреймворка XSSF на мові Ruby. Під час запуску модуля жертва бачить підказку з викликом.
Коли користувач відвідує сторінку, яка вже скомпрометована зловмисником, воно відображатиметься в списку на панелі в XSSF-фреймворку. Якщо у жертви встановлено з'єднання з сервером за допомогою SIP-клієнта, зловмисник може запустити цей модуль і реалізувати атаку.
Малюнок 4. Скріншот після виконання модуля
5.2.1 Ініціалізація модуля
Малюнок 5. Ініціалізація модуля
5.2.2 Скрипт, що посилається жертві
Малюнок 6. Скрипт, що посилається жертві
5.3 Етапи виконання атаки
Загальна схема атаки виглядає так:
6. Способи захисту від XSS-вразливостей
6.1 Захист на стороні сервера
6.2 Захист на стороні клієнта
7. Висновки та ідеї для подальшої роботи
У 21 столітті веб-додатки стали невід'ємною частиною нашого життя. Однак часто вони є вразливими до певних атакам. В даному документі ми розглянули один з видів вразливостей і способи їх подальшої експлуатації. XSS-атаки є переважаючими серед атак, коли відбувається впровадження коду, і уразливості, що дозволяють здійснювати подібні дії, можуть стати основою потужних експлойтів. У більш серйозних атаках XSS може поєднуватися з використанням інших типів вразливостей. У даній статті ми розглянули деякі найбільш поширені атаки. Ми привели список утиліт для знаходження XSS-вразливостей і їх подальшої експлуатації, а також познайомили вас з основними функціями цих утиліт. Потім ми розглянули різні види XSS-атак разом з концепцією кожної з них. Ми розробили новий модуль на основі XSSF, який здійснює VoIP-дзвінки. Код самого модуля разом з базовою концепцією і алгоритмом роботи також представлений в цій статті. У передостанньому розділі ми розглянули деякі способи захисту від XSS, які можуть бути реалізовані як на стороні сервера, так і на стороні клієнта. У міру появи нових додатків і функцій, будуть з'являтися нові уразливості і види атак. Ми маємо намір продовжити цю роботу, комбінуючи критичні уразливості разом XSS і створюючи нові модулі, які можуть бути використані іншим програмним забезпеченням і фреймворками.