_ SEARCH_ARCHIVE [/]
[ CLOSE_SESSION ]
:(

SYSTEM_HALTED

Your device ran into a critical error due to an unauthorized shell command. The system was halted to prevent data leakage and kernel corruption.

SYS_SEARCH v1.0.4 // CORE_INDEX ⚠️ [!] NEVER TYPE "EXIT" OR "SHUTDOWN" [ESC] TO ABORT
>>
>> LOC: ARCHIVE_ROOT/web/burp_suite_for_pentester_-_xss_validator // SEC_LEVEL: 01 // STATUS: CONFIDENTIAL

>

#BURP SUITE#TOOLS#FUZZING
FILE_INFO_DECRYPTED
AUTHOR: Geet Madan
TRANSLATE: @exploit.com.ua

Можливо, ви вже використовували безліч онлайн-інструментів для виявлення XSS-вразливостей та ще кілька — для їх валідації, щоб зрештою, маючи всі отримані результати, спробувати експлуатувати точку ін’єкції вручну або за допомогою фаззингу в Burp Suite. Але що, якби всі ці можливості були зібрані в одному місці? Сьогодні у цій статті ми вивчимо одне з найважливіших розширень для Burp Suite — XSS Validator, яке автоматизує виявлення та валідацію XSS-вразливостей у вебдодатках.

Зміст

  • Вступ: Розширення та BApp Store
  • Про XSS Validator
  • Налаштування XSS Validator
  • Встановлення розширення з BApp Store
  • Встановлення Phantom.js як детектора XSS
  • Фаззинг за допомогою XSS Validator
  • Кастомізація списків пейлоадів (Payload lists)

Вступ: Розширення та BApp Store

Розширення Burp (Burp Extensions)

Ви напевно чули термін «Розширення» (Extensions) стосовно браузерів, як-от Chrome чи Firefox. Але що вони собою являють у контексті Burp Suite?

Розробники створюють розширення як невеликі програми для розширення функціональних можливостей основного додатка. Burp Suite надає можливість кастомізувати свою поведінку та збільшувати вбудований потенціал — чи то модифікація HTTP-запитів та відповідей, налаштування інтерфейсу користувача або додавання власних перевірок для сканера (Scanner checks). Усе це реалізується у формі Burp Extensions.

BApp Store

Але де знайти такі розширення для Burp?

У Burp Suite є спеціальна вкладка, створена виключно для керування розширеннями — Extender. Вона допомагає контролювати все, що стосується розширень, і містить підвкладку під назвою BApp Store. По суті, це хаб, який об’єднує величезну кількість різноманітних розширень для Burp.

У BApp Store ми можемо переглядати список доступних BApp-додатків, встановлювати конкретні розширення і навіть залишати рейтинги для тих інструментів, якими ми вже скористалися.

Проте трапляються випадки, коли певне розширення видалено з BApp Store або нам потрібно додати власну розробку. Для таких сценаріїв Burp надає можливість встановити розширення вручну.

Про XSS Validator

XSS Validator, який часто називають розширенням для Burp Intruder, розроблений для виявлення та валідації критичних вразливостей міжсайтового скриптингу (XSS). Він працює у тісній зв’язці з Burp Intruder, щоб зафіксувати успішне спрацювання XSS-ін’єкції.

Джон Полін (John Poulin), автор цього розширення, створив його у 2017 році з метою автоматизувати процес пошуку XSS-вразливостей у вразливих вебдодатках.

Це розширення набуло популярності завдяки мінімальній кількості хибнопозитивних результатів (false positives) та вбудованому списку пейлоадів, де кожен варіант атаки прив’язаний до тригерного значення f7sdgfjFpoG.

Попри те, що інструмент є валідатором, він також виконує функцію детектора. Проте для успішного проведення атаки XSS Validator надсилає відповіді на локальний сервер XSS-детектора, як-от Phantom.js або Slimer.js.

Давайте розглянемо процес встановлення та сценарій атаки, щоб детальніше розібратися в принципах роботи цього розширення.

Налаштування XSS Validator

Встановлення розширення з BApp Store

Як ми вже з’ясували, BApp Store містить безліч розширень, і XSS Validator, будучи одним із найпопулярніших, також доступний там.

Процес встановлення цього розширення складається з кількох простих кроків.

На панелі вкладок основного вікна Burp Suite перейдіть у вкладку Extender, а потім оберіть підвкладку BApp Store, щоб відкрити список доступних розширень.

Прокрутимо список до самого низу — саме там ми знайдемо потрібне нам розширення.

Щойно ми натиснемо кнопку Install, розпочнеться завантаження, і вже за кілька хвилин наше розширення з’явиться на панелі вкладок під назвою «xssValidator».

Давайте клікнемо по вкладці та подивимось, які можливості вона нам пропонує.

Праворуч на зображенні нижче ви бачите список із різними пейлоадами (payloads), а ліворуч — поле Grep Phrase, яке буде спрацьовувати на кожен доданий туди пейлоад. Над ними розташовані налаштування сервера PhantomJS, які ми використаємо у подальшому сценарії.

Встановлення Phantom.js як детектора XSS

Можливо, вам цікаво, що таке Phantom.js і навіщо ми його встановлюємо?

Phantom.js — це консольний інструмент, фактично headless-браузер (браузер без графічного інтерфейсу), який працює непомітно у фоновому режимі.

Іноді існують DOM-базовані XSS-вразливості, які при спробі атаки виконуються у фоні, але звичайний браузер їх не фіксує. Тому ми встановлюємо Phantom.js, щоб мінімізувати кількість пропущених вразливостей (false-negatives) і виявити всі можливі XSS. Завантажити його можна тут.

Тепер, щоб інтегрувати наш XSS Validator із Phantom.js, нам потрібно завантажити файл xss.js за цим посиланням.

Щойно ми це зробимо, нам потрібно просто перемістити виконуваний файл Phantom.js (.exe) до директорії XSS-детектора.

Тепер, коли все готово, перейдіть до цієї директорії в командному рядку та виконайте наступну команду, щоб запустити сервер:

phantomjs.exe xss.js

Давайте перевіримо, чи працює наш сервер, виконавши наступну команду:

http://127.0.0.1:8093

Чудово! На зображенні нижче ми бачимо, що наш сервер-детектор успішно налаштований і готовий до роботи.

Фаззинг за допомогою XSS Validator

Сподіваюся, з розділом інсталяції все зрозуміло, тож давайте тепер проведемо швидкий фаззинг поля пошуку на test.vulnhub за допомогою XSS Validator. 

Ми перехопимо поточний HTTP-запит і одразу передамо його в Intruder.

Настав час визначити позицію пейлоада та тип атаки. Перейдіть безпосередньо у вкладку Positions, виберіть потрібне слово та натисніть кнопку Add, щоб встановити параметр «ignite» як точку ін’єкції.

А тепер найважливіша частина: замість того, щоб просто додати файл із пейлоадами, нам потрібно спочатку встановити тип пейлоада (Payload type) на Extension-generated.

Після цього нам потрібно вибрати наш генератор — XSS Validator Payloads — у налаштуваннях пейлоадів (Payload options).

На цей раз давайте знімемо галочку з опції Payload Encoding (кодування пейлоадів).

Тепер повернемося у вкладку XSS Validator і скопіюємо Grep Phrase, яка спрацьовує на кожен наступний пейлоад.

Нам просто потрібно вставити скопійовану фразу в розділ Grep - Match у вкладці Options. Це дозволить позначити результати, у яких успішно виявлено XSS.

Нарешті, позначте галочкою пункт «Search responses for payload strings» (Шукати рядки пейлоадів у відповідях) і натисніть кнопку Start Attack.

І ось результат! На зображенні нижче видно, що майже всі наші пейлоади спрацювали та отримали прапорці успішного виконання.

Щоб переконатися в цьому остаточно, давайте перевіримо результат у браузері. Клацніть правою кнопкою миші на будь-якому успішному запиті, оберіть опцію «Show response in browser» (Показати відповідь у браузері), скопіюйте згенероване посилання та вставте його в адресний рядок браузера.

Чудово! Все працює — наш пейлоад влучив точно в ціль.

Зачекайте, а як щодо Phantom.js? Чи зафіксував він щось?

Щойно запускається атака, Phantom.js починає тестувати кожну XSS-ін’єкцію у HTTP-запитах, які йому передає XSS Validator.

Кастомізація списків пейлоадів (Payload lists)

XSS Validator постачається з великою кількістю попередньо встановлених пейлоадів, але що, якщо ми хочемо додати власні? Так, це можливо: ви можете просто вписати або вставити потрібний пейлоад (або цілий список) безпосередньо у поле Payload, яке знаходиться у правій частині вікна розширення.

Давайте перевіримо, чи активує цей щойно доданий пейлоад нашу Grep-фразу. Для цього знову запустимо процес фаззингу.

На скріншоті нижче видно, що наш власний пейлоад успішно спрацював і активував Grep-фразу в результатах.

Чудово! На зображенні нижче ми також бачимо, що пейлоад виконується саме так, як ми й очікували.

[!] SYSTEM_INCOMPATIBILITY_REPORT

FATAL_ERROR: MOBILE_DISPLAY_NOT_SUPPORTED

The requested resource "exploit.com.ua" is optimized for desktop terminal environments only.

Mobile UI decoding is currently in progress...