16

Привет, хакеры! 💻 Устал тратить 8 часов на ручное тестирование одной цели? Сегодня расскажу, как я запустил скрипт перед сном и проснулся с 50 найденными багами.
Спойлер: Это не магия. Это Nuclei + правильные templates + автоматизация. 🤖
Мои результаты за 1 ночь (реальный кейс):
Время моей работы: 2 часа setup + 8 часов сна = профит! 💰
Погнали разбирать! 🚀
🔍 Что такое Nuclei и почему это game-changer?
Nuclei — это fast and customizable vulnerability scanner на YAML templates.
Простыми словами:
Почему это мощно:
✅ Масштабируемость: 1000+ целей одновременно
✅ Скорость: Сканирует 500 поддоменов за 30 минут
✅ Community: 8000+ готовых templates
✅ Кастомизация: Пишешь свои templates для уникальных багов
✅ CI/CD integration: Автоматический мониторинг новых целей
Vs ручное тестирование:
Ручками: 1 сайт за 4 часа = 6 сайтов за день
Nuclei: 100 сайтов за час = 2400 сайтов за день
Разница в 400 раз! 🚀
🛠️ Setup: готовим боевую машину
Шаг 1: Установка Nuclei
# Go installation (если нет)
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Проверка
nuclei -version
# Nuclei 3.1.5
# Обновление templates (8000+ шаблонов!)
nuclei -update-templates
Шаг 2: Установка зависимостей
# Subfinder (для сбора поддоменов)
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# Httpx (проверка живых хостов)
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
# Notify (уведомления в Telegram/Discord)
go install -v github.com/projectdiscovery/notify/cmd/notify@latest
# Структура папок
mkdir -p ~/bug-hunting/{targets,results,templates,configs}
cd ~/bug-hunting
Шаг 3: Конфигурация Nuclei
# ~/.config/nuclei/config.yaml
templates:
- /root/nuclei-templates/
- /root/bug-hunting/templates/ # Мои кастомные
rate-limit: 150 # запросов в секунду
bulk-size: 25 # параллельных targets
concurrency: 25 # параллельных templates
# Exclude шаблоны (чтоб не спамить)
exclude-tags:
- dos
- fuzz
# Severity filtering
severity: critical,high,medium
# Notifications (настрою позже)
notify:
telegram:
enabled: true
chat-id: "YOUR_CHAT_ID"
token: "YOUR_BOT_TOKEN"
🎯 Мой workflow: от reconnaissance до bounty
Pipeline на одну ночь:
#!/bin/bash
# bug-hunting-night.sh - запускаю перед сном
TARGET_DOMAIN="target.com"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
RESULTS_DIR="results/${TARGET_DOMAIN}_${DATE}"
mkdir -p $RESULTS_DIR
echo "[📡] Starting automated bug hunting on ${TARGET_DOMAIN}"
echo "[⏰] Started at: $(date)"
# === PHASE 1: RECONNAISSANCE ===
echo "[1/5] Subdomain enumeration..."
# Собираем поддомены (3 источника)
subfinder -d $TARGET_DOMAIN -o $RESULTS_DIR/subdomains_raw.txt -silent
amass enum -d $TARGET_DOMAIN -o $RESULTS_DIR/amass.txt -passive -silent
# Объединяем и убираем дубли
cat $RESULTS_DIR/subdomains_raw.txt $RESULTS_DIR/amass.txt | sort -u > $RESULTS_DIR/all_subdomains.txt
echo "[✓] Found $(wc -l < $RESULTS_DIR/all_subdomains.txt) subdomains"
# === PHASE 2: ACTIVE HOSTS ===
echo "[2/5] Checking alive hosts..."
cat $RESULTS_DIR/all_subdomains.txt | httpx -silent -threads 100 -o $RESULTS_DIR/alive.txt
echo "[✓] Alive hosts: $(wc -l < $RESULTS_DIR/alive.txt)"
# === PHASE 3: NUCLEI SCANNING ===
echo "[3/5] Running Nuclei scan..."
nuclei -l $RESULTS_DIR/alive.txt \
-t ~/nuclei-templates/ \
-t ~/bug-hunting/templates/custom/ \
-severity critical,high,medium \
-c 50 \
-rl 150 \
-stats \
-json -o $RESULTS_DIR/nuclei_results.json \
-me $RESULTS_DIR/nuclei_results.md
# === PHASE 4: FILTERING & DEDUPLICATION ===
echo "[4/5] Processing results..."
# Фильтруем ложные срабатывания
cat $RESULTS_DIR/nuclei_results.json | jq -r 'select(.info.severity != "info")' > $RESULTS_DIR/filtered.json
# Статистика
CRITICAL=$(cat $RESULTS_DIR/filtered.json | jq -r 'select(.info.severity == "critical")' | wc -l)
HIGH=$(cat $RESULTS_DIR/filtered.json | jq -r 'select(.info.severity == "high")' | wc -l)
MEDIUM=$(cat $RESULTS_DIR/filtered.json | jq -r 'select(.info.severity == "medium")' | wc -l)
echo "[✓] Found vulnerabilities:"
echo " - Critical: $CRITICAL"
echo " - High: $HIGH"
echo " - Medium: $MEDIUM"
# === PHASE 5: NOTIFICATIONS ===
echo "[5/5] Sending notifications..."
if [ $CRITICAL -gt 0 ] || [ $HIGH -gt 0 ]; then
# Отправляем в Telegram
MESSAGE="🚨 Bug Hunting Results for ${TARGET_DOMAIN}
Critical: $CRITICAL
High: $HIGH
Medium: $MEDIUM
Time: $(date)
Results: $RESULTS_DIR"
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d text="${MESSAGE}"
fi
echo "[🎉] Scan completed at: $(date)"
echo "[📊] Results saved to: $RESULTS_DIR"
Запуск перед сном:
# Запускаю на VPS (чтоб комп не жужжал)
chmod +x bug-hunting-night.sh
# Screen session (чтоб не отвалилось при отключении SSH)
screen -S bug-hunting
# Запуск
./bug-hunting-night.sh target1.com
# Detach (Ctrl+A, D)
# Иду спать 😴
# Утром проверяю:
screen -r bug-hunting
# Profit! 💰
🤖 Автоматизация на максимум
Cron job для ежедневного сканирования:
# crontab -e
# Каждый день в 2:00 ночи
0 2 * * * /home/user/bug-hunting/bug-hunting-night.sh target1.com
0 3 * * * /home/user/bug-hunting/bug-hunting-night.sh target2.com
0 4 * * * /home/user/bug-hunting/bug-hunting-night.sh target3.com
GitHub Actions для мониторинга:
# .github/workflows/nuclei-scan.yml
name: Automated Bug Hunting
on:
schedule:
- cron: '0 2 * * *' # Каждый день в 2 AM
workflow_dispatch:
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Nuclei
run: |
GO111MODULE=on go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -update-templates
- name: Run Scan
run: |
nuclei -l targets.txt \
-t nuclei-templates/ \
-severity critical,high \
-json -o results.json
- name: Send Notification
if: success()
run: |
curl -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_TOKEN }}/sendMessage" \
-d chat_id="${{ secrets.TELEGRAM_CHAT_ID }}" \
-d text="Scan completed! Check results."
- name: Upload Results
uses: actions/upload-artifact@v3
with:
name: nuclei-results
path: results.json
Benefit: GitHub бесплатно запускает, не нужен свой VPS!
Docker container для портативности:
# Dockerfile
FROM golang:1.21-alpine
RUN apk add --no-cache git
RUN go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest && \
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest && \
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
RUN nuclei -update-templates
WORKDIR /scans
COPY bug-hunting-night.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/bug-hunting-night.sh
ENTRYPOINT ["bug-hunting-night.sh"]
Использование:
# Build
docker build -t nuclei-scanner .
# Run
docker run -v $(pwd)/results:/scans/results nuclei-scanner target.com
📊 Реальный кейс: одна ночь, 50 багов
Цель: Крупная российская e-commerce компания
Setup (18:00):
# Собрал 847 поддоменов
subfinder -d target.ru > subs.txt
httpx -l subs.txt -o alive.txt
# 412 живых хостов
# Запустил Nuclei
nuclei -l alive.txt \
-t ~/nuclei-templates/ \
-t ~/custom-templates/ \
-c 50 -rl 150 \
-json -o results.json
# Пошёл спать (22:00)
Результаты (утро, 06:00):
Critical (3 findings):
1. SSRF в image proxy
• Template: `ssrf-via-redirect`
• PoC: `https://cdn.target.ru/proxy?url=http://169.254.169.254/`
• Impact: AWS metadata leak
• Potential bounty: ₽1,200,000
2. SQL Injection в search
• Template: `sql-injection-detection`
• PoC: `https://shop.target.ru/search?q=test’`
• Impact: Database dump
• Potential bounty: ₽950,000
3. Exposed .git repository
• Template: `git-config-exposure`
• URL: `https://legacy.target.ru/.git/`
• Impact: Source code + secrets
• Potential bounty: ₽800,000
High (12 findings):
4-15. XSS, Admin panels, API keys в JS, etc.
Potential bounty: ₽150,000-₽400,000 каждый
Total: ₽2,800,000
Medium (35 findings):
16-50. CORS, Info disclosure, Misconfigurations
Potential bounty: ₽30,000-₽100,000 каждый
Total: ₽2,100,000
Total potential bounty: ₽7,850,000 ($84k) 🤯
Моё время:
• Setup: 2 часа
• Сон: 8 часов (не считается 😴)
• Верификация утром: 3 часа
• Total work time: 5 часов
ROI: ₽1,570,000 за час работы! 💰💰💰
🎓 Итоговый чеклист
Перед запуском:
• Обновил Nuclei и templates
• Проверил scope программы
• Настроил rate-limiting (не ддосить!)
• Подготовил VPS/VPN
• Настроил уведомления (Telegram/Discord)
Во время сканирования:
• Мониторю прогресс (`nuclei -stats`)
• Проверяю живые результаты в real-time
• Фильтрую false positives на лету
После сканирования:
• Верифицирую все Critical/High находки
• Пишу качественные PoC
• Отправляю репорты по priority
• Документирую для следующих раз
Удачной охоты, автоматизируйте рутину! 📡🤖💰