Nuclei: как собрать свой сканер уязвимостей из YAML-шаблонов

Разбираем open-source сканер Nuclei от ProjectDiscovery: как работают YAML-шаблоны, где брать готовые проверки и как встроить security-тесты в CI/CD.

1. Проблема классических сканеров

Запускаете проверку, ждёте отчёт, надеетесь, что встроенные правила знают о нужной уязвимости. Если не знают — добавить свою логику нельзя: движок закрыт, шаблоны зашиты внутри, а лицензия стоит как отдельная статья бюджета.

В итоге безопасность зависит от того, насколько вендор успевает за реальными угрозами. А ваша инфраструктура — уникальна: внутренние API, самописные панели, специфичные конфигурации. Готовые правила их не видят.

2. Что такое Nuclei и почему он другой

Nuclei — быстрый open-source движок от ProjectDiscovery. Логика проверок описывается человекочитаемыми YAML-шаблонами. Вы не просто запускаете сканер — вы собираете собственную систему обнаружения под конкретную инфраструктуру, которая, как и локальные AI-модели, оставляет данные внутри периметра.

flowchart LR
    A["Цели (URL, IP, Swagger)"] --> B["Nuclei-движок"]
    B --> C["YAML-шаблоны"]
    C --> D["Отчёт / алерт"]

Движок умеет:

  • проверять сайты, API, IP-адреса, подсети и сетевые сервисы;
  • работать с HTTP, DNS, TCP, SSL и другими протоколами;
  • принимать Swagger, OpenAPI и экспортированные данные Burp Suite;
  • искать известные CVE, неправильные конфигурации, открытые панели и утечки;
  • объединять проверки в последовательные workflows;
  • встраиваться в CI/CD и автоматически проверять каждую сборку.

3. Экосистема шаблонов

Главная сила проекта — публичный репозиторий nuclei-templates. Сообщество поддерживает тысячи готовых сценариев: от проверки свежих CVE до детекции открытых .git-папок.

Каждый шаблон содержит:

  • запросы — что отправить цели;
  • matchers — условия, когда считать проверку успешной;
  • severity — уровень критичности;
  • метаданные — описание, ссылки, remediation.

Официальные шаблоны подписываются цифровой подписью и верифицируются при загрузке — это снижает риск подмены.

Быстрый старт

# Проверить один сайт
nuclei -u https://example.com

# Проверить список целей
nuclei -l targets.txt

# Только критические и высокие уровни
nuclei -l targets.txt -severity critical,high

# Обновить шаблоны
nuclei -update-templates

Нужна собственная проверка внутреннего сервиса? Пишете YAML-шаблон, задаёте запросы и признаки успешного обнаружения — получаете воспроизводимый security-тест, который живёт рядом с кодом.

4. Flow и многошаговая логика

В Nuclei v3 появился механизм Flow: через JavaScript можно условно выполнять запросы и выстраивать цепочки.

Пример сценария:

  1. Определить технологию (fingerprint).
  2. Получить токен авторизации.
  3. Проверить конкретный endpoint.
  4. Подтвердить уязвимость.

Это превращает Nuclei из «пачки независимых проверок» в полноценный автоматизированный пентест-фреймворк.

Осторожно с Code Protocol. Выполнение произвольного кода в шаблонах по умолчанию отключено и активируется флагом -code. Не запускайте неизвестные пользовательские шаблоны без ревью.

5. Где это пригодится

Сценарий Польза
Регулярный аудит внешнего периметра Находит забытые сервисы и открытые панели
Проверка новых доменов Быстрый baseline до запуска в прод
Bug bounty и разрешённый пентест Автоматизация рутинных проверок
Контроль типовых ошибок конфигурации Единый стандарт для всей команды
Security-gate в CI/CD Блокировка релиза при критических находках
Проверка свежих CVE на инфраструктуре Шаблон появляется в репозитории — сразу тестируете

6. С чего начать

  1. Установите Nuclei. Бинарник доступен для Linux, macOS и Windows. Можно через go install или скачать релиз.
  2. Обновите шаблоны: nuclei -update-templates.
  3. Запустите базовую проверку на тестовом домене, чтобы понять формат отчёта.
  4. Выберите severity. Для первого прогона ограничьтесь critical,high — иначе утонете в информационных срабатываниях.
  5. Напишите первый собственный шаблон. Возьмите за основу существующий, измените запрос и matcher под внутренний сервис.
  6. Встройте в CI/CD. Добавьте шаг nuclei после деплоя в staging — пусть каждая сборка проходит security-gate.
  7. Версионируйте шаблоны. Храните их в репозитории проекта: так знания одного специалиста превращаются в повторяемый процесс для всей команды.

Сканер проверяет то, что вы ему указали. Но у периметра есть и другая половина — то, что о компании видно снаружи без всякого сканирования: почты сотрудников, забытые файлы в открытых каталогах, устройства с проброшенными портами. Это разбираю в статье про открытую разведку и пять её инструментов — начинать аудит логичнее именно оттуда.

Nuclei — не волшебная кнопка «найти всё». Это конструктор автоматизированных проверок: быстрый движок, понятный DSL, огромная база шаблонов и возможность масштабировать экспертизу. Как и в случае с собственным AI-видеонаблюдением без облака, весь стек остаётся у вас — от движка до данных.

Следующий шаг: хотите интегрировать security-сканирование в ваш CI/CD или настроить регулярный аудит периметра — напишите мне в Telegram.

Комментарии

Войдите через Telegram, чтобы оставить комментарий:

Пока нет комментариев. Будьте первым.