🛠 Nuclei: open-source DAST с использованием YAML-шаблонов
Салют,
Давай сегодня посмотрим с тобой в сторону динамического тестирования DAST, который применяет шаблонизатор YAML. Я хочу поделиться с тобой удобным инструментом, который обычно используется в дополнении к Burp Suite.
Описание
Поддерживает веб-приложения, API, сетевые сервисы и облачные инфраструктуры. Вот тут можешь посмотреть официальный репозиторий и детали по используемым флагам вот тут. Поддерживает параллельную обработку для массового сканирования. Работает в связке с subfinder, httpx, naabu. Не имеет собственных настроек политик. Управление политиками Quality Gate осуществляется на уровне конвейера при его вызове. Лицензия MIT.
У инструмента есть особенности, давай отметим некоторые из них:
- Шаблоны с протоколами code/javascript требуют цифровой подписи и явного указания флага -code для запуска
- Следует использовать режим -disable-unsigned-templates, который разрешает выполнение только подписанных шаблонов и запускайте только в изолированной среде
- Запуск не проверенных шаблонов от третьих лиц опасен из-за риска внедрения вредоносного кода.
- Перед запуском анализируйте id, info, payloads и fuzzing на предмет подозрительных операций
- Используйте флаги ограничения скорости -rl и количества параллельных запросов -c
Применение
nuclei -u https://example.ru # Сканирование одиночной цели
nuclei -l targets.txt # Сканирование списка целей
nuclei -u https://example.ru -t cves/2021/CVE-2021-12345.yaml # Запуск конкретного шаблона
nuclei -u https://example.ru -tags jira -s critical,high # Фильтрация по тегам и серьезности
nuclei -u https://example.ru -as # Автоматическое определение технологий
subfinder -d example.ru | httpx | nuclei # Интеграция с инструментами разведки
nuclei -l openapi.json -im openapi # Сканирование OpenAPI
nuclei -t template_with_code.yaml -code -c 50 -rl 100 # Безопасный запуск шаблонов с кодом
docker run projectdiscovery/nuclei:latest -u https://example.ru # Запуск сканирования c docker
GitLab CI
security_scan:
stage: test
image: golang:latest
before_script:
- go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
script:
- nuclei -u $URL -t /templates -json -o nuclei-report.json
artifacts:
paths:
- nuclei-report.json
Jenkins
stages {
stage('Security Scan') {
steps {
sh '''
# Установка Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Запуск сканирования
$HOME/go/bin/nuclei -u $URL -t $NUCLEI_TEMPLATES -json -o nuclei-report.json
'''
}
}
}
post {
always {
archiveArtifacts artifacts: 'nuclei-report.json', fingerprint: true
}
}
}
Итого: инструмент является полезным для использования, но требует дополнительной подготовки, что позволит тебе натыкаться на прорблемные зоны, где ты увидишь именно свой потенциал для роста. Отметим, что:
- Следует использовать environment с указанием тестируемого URL = 'https://example.com' и используемым NUCLEI_TEMPLATES = '/templates'
- Имеет огромную базу актуальных шаблонов и низкий уровень ложных срабатываний
- Поддерживает множества протоколов (HTTP, TCP, DNS, SSL)
- Имеет риски выполнения вредоносных шаблонов из-за отсутствия опыта
- Имеет последующий потенциальный DoS-эффект на продакшн-системы
- Необходима экспертиза для написания собственных шаблонов
- Тестирует кроме web, также API, облачную инфраструктуру (AWS S3, Azure, etc.), сетевые устройства, включая сторонних поставщиков
#toolchain #dast
