Nuclei #1

W0lFreaK
3 min readMay 17, 2023

--

Всем привет!
Настало время рассказать про актуальный, мощный и легко кастомизируемый сканер уязвимостей веба Nuclei.

Я долго искал сканер уязвимостей для рабочих проектов, для багбаунти и для любых задач, требующих быстрого анализа типовых уязвимостей на большом количестве доменов. Мой выбор остановился на Nuclei, — он имеет высокую скорость работы, огромное количество модулей проверок (в данный момент их более 6000), простой интерфейс, а также возможность встраивания в процессы CI/CD.

Сканер состоит из двух компонентов:

  1. Сканирующее ядро, которое выполняет запросы к указанным целям.
  2. Независимые модули (шаблоны), в которых описывается логика и последовательность запросов, критерии для обнаружения конкретной уязвимости. Любой желающий может добавить собственные темплейты в официальный репозиторий. Однако, стандартные темплейты уже позволяют обнаруживать мисконфигурации 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-формате.

Шаблон детектирования панелей авторизации WordPress

Благодаря низкой сложности формата 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-канале

--

--