Всем привет!
Настало время рассказать про актуальный, мощный и легко кастомизируемый сканер уязвимостей веба Nuclei.
Я долго искал сканер уязвимостей для рабочих проектов, для багбаунти и для любых задач, требующих быстрого анализа типовых уязвимостей на большом количестве доменов. Мой выбор остановился на Nuclei, — он имеет высокую скорость работы, огромное количество модулей проверок (в данный момент их более 6000), простой интерфейс, а также возможность встраивания в процессы CI/CD.
Сканер состоит из двух компонентов:
- Сканирующее ядро, которое выполняет запросы к указанным целям.
- Независимые модули (шаблоны), в которых описывается логика и последовательность запросов, критерии для обнаружения конкретной уязвимости. Любой желающий может добавить собственные темплейты в официальный репозиторий. Однако, стандартные темплейты уже позволяют обнаруживать мисконфигурации CMS и серверного ПО (например, WordPress), SSL и DNS, выполнять OSINT, искать XSS и многое-многое другое…
Такая архитектура многократно увеличивает скорость работы сканера, а также позволяет тестировать большое количество целей одновременно, ведь каждая проверка выполняется с помощью независимого модуля.
Let’s start
Установка
Берем консоль и выполняем
- Go
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
- Docker
docker pull projectdiscovery/nuclei:latest
- Git
git clone https://github.com/projectdiscovery/nuclei.git; \
cd nuclei/v2/cmd/nuclei; \
go build; \
mv nuclei /usr/local/bin/; \
nuclei -version;
При первом запуске Nuclei автоматически выполнит скачивание стандартных темплейтов из репозитория:
Если же этого не произошло, их установку и обновление можно выполнить с помощью команды:
nuclei --ut
А обновление самого сканера выполняется через:
sudo nuclei --up
Запуск
В самом базовом случае для начала сканирования Nuclei требует лишь указание цели:
nuclei -u google.com
Nuclei выполнит сканирование и выведет результаты:
По-умолчанию Nuclei выполнит сканирование с помощью всех шаблонов, которые у него есть, но если мы хотим проверить лишь какой-то определенный тип уязвимостей, можно указать это явно:
nuclei -u <Your target host> -t <Your custom template path>
nuclei -u https://google.com -t cves/
Дополнительные модули
Сканер поддерживает возможность интеграции новых модулей. Каждый модуль детектирования узявимостей описывается в простом YAML-формате.
Благодаря низкой сложности формата YAML, можно обнаружить огромное количество неофициальных модулей, созданных сторонними разработчиками. Эти модули полезны для сбора low-hanging fruits при багбаунти, ведь мало кто запускает Nuclei не в стандартной конфигурации :)
Для агрегации таких модулей берем и используем Cent.
Cent
Cent содержит в себе список репозиториев сторонних разработчиков и позволяет автоматизированно выполнить скачивание модулей из них.
GO111MODULE=on go install -v github.com/xm1k3/cent@latest
cent
cent init
cent -p cent-nuclei-templates -k
#Благодарю @tetronis за исправление неточности :)
После установки и запуска Cent создаст директорию ./cent-nuclei-templates и выполнит в нее клонирование сторонних репозиториев.
Теперь для использования новых темплейтов достаточно указать Nuclei, где он может их найти.
nuclei -u google.com -t ./cent-nuclei-templates/
To be continued…
А в следующих материалах мы рассмотрим, как создать собственный темплейт сканирования, как Nuclei может быть использован для целей багбаунти, и как подружить Nuclei и Burp.
Еще больше полезных материалов можно найти в моем Telegram-канале