February 13, 2025

Bug Bounty 2025: Реальный подход к поиску уязвимостей

🎯 Правда о современном Bug Bounty

Эффект Santiago Lopez

  • $1M+ на HackerOne
  • 20-50 репортов в месяц
  • В основном Low/Medium баги
  • $250-500 за баг
  • До $25k в месяц

Главный принцип: количество > сложность.

🔍 Как выбрать что тестировать:

1. Правильные цели
// High Priority: - Enterprise SaaS (Salesforce, Atlassian)
- Платежные системы
- Админ панели
- OAuth/SSO
- File Upload функционал

// Medium Priority: - User Management
- Личные кабинеты
- Поиск/Фильтры
- API эндпоинты

// Low Priority: - Статические страницы
- Документация
- Marketing сайты

2. "Чувствуем" продукт

  • Если находите маленькую ошибку в UI = копайте глубже
  • Если документация не совпадает с реальностью = gold mine
  • Если видите legacy код = stay here

💡 Практическая методология

1. Тестируем с разных сторон

ВСЕГДА используем минимум 2 аккаунта: account1 -> делаем действие -> смотрим как видит account2

# Проверяем с разных ролей: - free vs premium
- user vs admin
- banned vs active

# Тестируем с разных клиентов: - Web App
- Mobile App
- Desktop Client

2. Фокусируемся на одной функции

// Пример: File Upload
1. До загрузки:
- Проверка типов файлов
- Валидация размера
- Frontend проверки

2. Во время загрузки:
- Путь сохранения
- Обработка имени
- Metadata

3. После загрузки:
- Права доступа
- Превью
- Sharing функционал

3. Проверяем новые фичи

// Признаки нового функционала:
"beta"
"new"
"coming soon"
"preview"

// Почему это важно:
- Меньше тестировщиков
- Быстрая разработка
- Меньше проверок
- Часто без валидации

🛠 Техники тестирования

1. "Спящий баг"

// Ищем параметры типа:
{
"debug": false,
"beta": false,
"admin": false
}

// Пробуем:
- Менять на true
- Добавлять новые флаги
- Следить за поведением

2. Permission Testing

# 1. Читаем документацию:
"Нужны права admin для X"

# 2. Тестируем как user:
Если работает = баг на $500

# 3. Проверяем похожий функционал:
/api/v1/admin/action1
/api/v1/admin/action2
/api/v1/admin/action3

3. Mobile API Abuse

// Мобильное API часто:
- Имеет другой бэкенд
- Меньше проверок
- Больше параметров
- Legacy эндпоинты

// Ищем:
- Разные endpoint URLs
- Дополнительные параметры
- Отсутствие валидации

🎯 Реальный пример:

Как это работает на практике:

1) Исследователи нашли админку:

codeportal.prod.subarucs.com/login.html

2) Вместо сложного тестирования - просто смотрим JS:

 code$.ajax({
    url: "/forgotPassword/resetPassword.json",
     {
        email: email,
        password: $('#new_password').val()
    }
})

3) Заметили отсутствие валидации токена:

POST /forgotPassword/resetPassword.json
{
  "email": "employee@subaru.com", 
  "password": "new"
}

Результат = $

💎 Главные принципы успеха

  1. Регулярность > Сложность
  • 2-3 часа каждый день
  • Один функционал за раз
  • Документируем всё
  1. Фокус на low hanging fruits
  • Permission issues
  • XSS через обход фильтров
  • Простые IDOR
  • Basic file upload issues
  1. Правильный выбор целей
  • Enterprise системы
  • Новый функционал
  • Сложные интеграции
  • User management

🎬 Важные советы

  1. Делаем перерывы:
 2 часа тестирования
- 30 минут перерыв
- Смена функционала каждый день
  1. Ведем статистику:
- Какие типы багов находятся чаще
- Где самый высокий ROI
- Сколько времени на каждый функционал
  1. Не усложняем:
- Минимум автоматизации
- Простые инструменты
- Фокус на одной цели

Помните: Santiago Lopez стал миллионером не находя RCE, а методично тестируя простые вещи каждый день.

Всем спасибо :D