Якщо не брати до уваги той факт, що кінцевою метою XSS-атаки завжди є запуск шкідливого JS-файлу у веб-браузері потенційної жертви, то способи її досягнення кардинально відрізняються один від одного.
Отже, давайте розглянемо найпопулярніші типи XSS-атак.
Якими бувають XSS-атаки?
- Безперервна атака - коли шкідливий код знаходиться всередині бази даних сайту.
- Відображена атака - коли шкідлива частина коду знаходиться всередині запиту жертви.
- DOM-атака - коли потенційна вразливість знаходиться в програмному коді клієнта, а не на сервері.
А тепер на прикладі відбитих та DOM-атак розглянемо, як можна протистояти таким хакерським атакам.
Відбиті XSS-атаки
У процесі відбиття XSS-атаки будь-який шкідливий рядок коду стає частиною запиту до сайту. Далі сайт включає цей рядок у відповідь, що надсилається клієнту.
Структурно це виглядає так:
- Хакер розробляє спеціальний URL зі шкідливим рядком і надсилає його потенційній жертві;
- Жертва вже обманута хакером і робить URL-запит з сайту;
- Сайт автоматично включає небезпечний рядок в тіло відповіді;
- Веб-браузер користувача виконує шкідливий скрипт з тіла відповіді, пересилаючи файли cookie жертви на сервер, вказаний хакером.
Коли відбита XSS-атака буде успішною?
Спочатку може здатися, що відбита XSS-атака не є небезпечною. Щоб план зловмисника спрацював, потенційним жертвам потрібно самим відправити шкідливий запит. Оскільки ніхто не буде робити це добровільно, здається, що реалізація такої атаки малоймовірна в реальності.
Але не все так просто, і є 2 варіанти, як змусити жертву виконати шкідливу атаку:
- Якщо метою хакера є конкретний користувач, він надсилає йому шкідливу URL-адресу, яка змушує цього користувача відвідати шкідливий ресурс;
- Якщо метою зловмисника є група користувачів, хакер може опублікувати посилання на шкідливу URL-адресу.
Обидва методи дещо схожі і є надзвичайно успішними при використанні сервісів, які скорочують URL-адреси. Вони можуть легко замаскувати шкідливий рядок від користувачів, які за інших обставин змогли б його ідентифікувати.
Чому небезпечні XSS-атаки на основі DOM
У сучасних веб-програмах HTML генерується з JS на стороні клієнта, а не на стороні сервера. Якщо серверний код не містить вразливостей, сайт буде захищений від XSS.
Це означає, що XSS-уразливості можуть бути не лише на стороні сервера, але й у клієнтському JS-коді. З цього випливає, що навіть із захищеним серверним кодом, клієнтський код може небезпечно ініціювати введення клієнтом даних в оновленні DOM одразу після завантаження веб-сторінки. Якщо це станеться на практиці, користувацький код дозволить провести XSS-атаку, а серверний код залишиться поза увагою.
На закінчення
Звичайно, XSS-атаки - це дуже погано, але з такими діями веб-зловмисників можна і потрібно боротися! При розробці та тестуванні сайтів необхідно ретельно перевіряти програмне забезпечення на вразливості, щоб структура веб-ресурсу не містила “дірок”, куди може просочитися шкідливий JS. Адже якщо якісні консалтингові компанії не будуть тримати руку на пульсі, то хакери можуть отримати повний доступ до тимчасових файлів користувача, які можуть включати як особисті паролі та ідентифікатори сесій, так і поточні транзакції.










0 коментарів