Добро пожаловать обратно, мои начинающие кибервоины!
Nuclei — это передовой сканер уязвимостей с открытым исходным кодом, завоевавший значительную популярность среди специалистов по кибербезопасности, тестировщиков на проникновение и разработчиков. Он известен своей исключительной скоростью, высокой степенью настраиваемости и точностью выявления уязвимостей безопасности, ошибок конфигурации и потенциальных эксплойтов в широком спектре цифровых активов и сетей. В этой статье мы рассмотрим уникальные особенности Nuclei, его основные функции и ограничения, поможем вам установить его и расскажем, как эффективно использовать.
Если вы серьёзно относитесь к кибербезопасности, вы, вероятно, слышали о Nuclei. Это не просто сканер уязвимостей — это мощный инструмент, созданный для скорости, гибкости и точности. Nuclei быстро стал фаворитом среди тестировщиков на проникновение, специалистов по кибербезопасности и разработчиков, и не без оснований. Он имеет открытый исходный код, обладает широкими возможностями настройки и обеспечивает точность, о которой большинство сканеров могут только мечтать.
В этой статье мы расскажем, что делает Nuclei таким революционным инструментом, рассмотрим его основные функции, расскажем о процессе установки и пошагово покажем вам, как пользоваться им профессионально. Независимо от того, ищете ли вы ошибки в веб-приложениях или блокируете критически важную сетевую инфраструктуру, Nuclei — это инструмент, который вам понадобится.
Давайте начнем с определения ключевых преимуществ, которые сделали Nuclei таким популярным:
1. Архитектура на основе шаблонов для легкой настройки и совместного использования
2. Поддержка нескольких протоколов (HTTP, DNS, TCP, FILE и т. д.)
3. Обширная библиотека готовых шаблонов
4. Возможность создания пользовательских шаблонов для конкретных случаев использования.
5. Возможности интеграции с другими инструментами безопасности и конвейерами CI/CD
6. Низкий уровень ложноположительных результатов благодаря точным алгоритмам сопоставления.
Сканеры уязвимостей стали краеугольным камнем кибербезопасности с самого начала развития сетевой безопасности. Эволюция этих инструментов отражает меняющийся ландшафт киберугроз и стратегий защиты:
1990-е годы: Появились первые сетевые сканеры, такие как SATAN (инструмент администратора безопасности для анализа сетей), ориентированные на известные уязвимости в сетевых службах.
2000-е: Сканеры веб-приложений стали широко распространены по мере роста веб-угроз. Набирали популярность такие инструменты, как Nikto и Nessus.
2010-е годы: Появились облачные и распределенные решения для сканирования, отвечающие потребностям более крупных и сложных сетей.
2020: ProjectDiscovery выпустила Nuclei, представив новую парадигму сканирования уязвимостей. Подход на основе шаблонов и ориентация на разработку силами сообщества отличают его от традиционных сканеров.
• Скорость : многие старые сканеры были медленными, особенно при сканировании больших сетей.
• Точность : ложные срабатывания были распространенной проблемой, что приводило к потере времени и ресурсов.
• Гибкость : традиционные сканеры часто имели ограниченные возможности настройки.
• Частота обновлений : модель Nuclei, основанная на сообществе, позволяет быстро обновлять данные для обнаружения новых уязвимостей.
1. Скорость: возможности параллельного сканирования Nuclei позволяют ему обрабатывать несколько целей одновременно, что значительно сокращает время сканирования.
2. Настраиваемость: пользователи могут создавать, изменять и обмениваться шаблонами для обнаружения определенных уязвимостей или адаптации к уникальным средам.
3. Точность: Подход на основе шаблонов в сочетании с точными алгоритмами сопоставления снижает количество ложных срабатываний.
4. Универсальность: Nuclei поддерживает несколько протоколов, что делает его пригодным для различных сценариев сканирования.
5. Поддержка сообщества: Большое активное сообщество вносит свой вклад в постоянное расширение и обновление библиотеки шаблонов.
6. Интеграция: Nuclei можно легко интегрировать в существующие рабочие процессы безопасности и конвейеры CI/CD.
7. Расширяемость: пользователи могут расширять функциональность Nuclei с помощью пользовательских скриптов и интеграций.
1. Кривая обучения: создание эффективных пользовательских шаблонов требует понимания как целевых систем, так и синтаксиса шаблонов Nuclei.
2. Ресурсоемкость: Несмотря на свою скорость, Nuclei может потреблять много ресурсов при сканировании больших сетей или одновременном использовании множества шаблонов.
3. Требуется тщательная настройка: неправильная настройка может привести к пропуску уязвимостей или, наоборот, к ненужному сетевому шуму.
Для установки ядер сначала необходимо установить язык программирования Go от Google. Хотя Python по-прежнему остаётся самым популярным языком для инструментов кибербезопасности, язык программирования Go набирает популярность.
kali> sudo apt update
kali> sudo apt install golang-go
kali> go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
kali> echo 'export PATH=$PATH:~/go/bin' >> ~/.bashrc
kali> источник ~/.bashrc
kali> nuclei -версия
Для обеспечения корректной работы Nuclei необходимо следующее:
• Расширение .yaml — каждый шаблон должен иметь расширение файла .yaml.
• Уникальный идентификатор . Каждый шаблон должен начинаться с уникального идентификатора (ID), который не должен содержать пробелов.
• Обязательные поля : каждый шаблон должен содержать поля «автор», «имя» и «серьёзность». Также рекомендуется добавить подробное описание, ссылки и теги, чтобы прояснить назначение и функциональность шаблона.
информация:
имя: Первый шаблон
автор: Воздух
серьезность: высокая
описание: Мой первый шаблон Nuclei
ссылка: hackers-arise.net и hackers-arise.com
теги: первый,sqli,learn,nuclei
• Выполнение запросов . Для взаимодействия с веб-приложением необходимо определить хотя бы один запрос в шаблоне. Запрос определяет метод, путь, заголовки, тело и другие параметры. Запросы определяются в шаблоне с помощью поля http.
Далее необходимо определить HTTP-метод взаимодействия с сайтом. Метод запроса может быть GET, POST, PUT, DELETE и т. д., в зависимости от требований.
• Указание пути — путь указывается в поле «path». Вот пример запроса, в котором Nuclei обращается к файлу «secret_file.txt»:
http:
метод: ПОЛУЧИТЬ
путь:
– «{{BaseURL}}/secret_file.txt»
Вместо прямого URL я использовал {{BaseURL}} — это динамические переменные, которые можно вставлять в путь, чтобы изменить его поведение во время выполнения. Переменные начинаются с {{ и заканчиваются на }} и, как и всё в Linux, чувствительны к регистру.
Примеры динамических переменных:
[td]Переменная[/td]
[td]Ценить[/td] [td]{{BaseURL}}[/td]
[td] [/td] [td]{{RootURL}}[/td]
[td] [/td] [td]{{Имя хоста}}[/td]
[td]example.com:443[/td] [td]{{Хозяин}}[/td]
[td]example.com[/td] [td]{{Порт}}[/td]
[td]443[/td] [td]{{Путь}}[/td]
[td]/фу[/td] [td]{{Файл}}[/td]
[td]bar.php[/td] [td]{{Схема}}[/td]
[td]https[/td]
• Валидация (Matchers) — Matchers используются для проверки соответствия ответов на ваши запросы определённым критериям. Например, вы можете проверить наличие определённой строки в ответе сервера или определённого кода статуса HTTP.
Существует шесть типов сопоставителей:
[td]Тип сопоставления[/td]
[td]Цель[/td] [td]статус[/td]
[td]Проверяет ответ по его коду статуса.[/td] [td]размер[/td]
[td]Проверяет ответ по его размеру.[/td] [td]слово[/td]
[td]Проверяет наличие указанного слова в ответе.[/td] [td]регулярное выражение[/td]
[td]Проверяет ответ с помощью регулярных выражений.[/td] [td]двоичный[/td]
[td]Проверяет ответ, закодированный в шестнадцатеричном формате.[/td] [td]DSL[/td]
[td]Создает более сложные выражения
с использованием вспомогательных функций.[/td]
Сценарий: Кибервоин оценивает веб-приложение ( vesti.ru ) на предмет уязвимостей.
Сначала хакер собирает информацию о цели, включая поддомены:
kali> subfinder -d vesti.ru | tee subdomains.txt
Команда «tee» в Unix-подобных системах используется как для отображения вывода команды в терминале, так и для одновременной записи этого вывода в файл.
Хакер создает два специальных шаблона для дальнейшего исследования этих проблем:
Шаблон SQL-инъекции (sqli-check.yaml):
В учебных целях были добавлены только две полезные нагрузки.
Шаблон XSS (xss-check.yaml):
kali> nuclei -u https://vesti.ru -t sqli-check.yaml,xss-check.yaml -o custom_results.txt
Похоже, что этот российский сайт не уязвим для столь простых вредоносных программ, что и ожидалось, но, думаю, вы поняли.
Nuclei — это значительный шаг вперёд в технологии сканирования уязвимостей. Сочетание скорости, точности и гибкости настроек делает его незаменимым инструментом для кибервоинов.
Nuclei — это передовой сканер уязвимостей с открытым исходным кодом, завоевавший значительную популярность среди специалистов по кибербезопасности, тестировщиков на проникновение и разработчиков. Он известен своей исключительной скоростью, высокой степенью настраиваемости и точностью выявления уязвимостей безопасности, ошибок конфигурации и потенциальных эксплойтов в широком спектре цифровых активов и сетей. В этой статье мы рассмотрим уникальные особенности Nuclei, его основные функции и ограничения, поможем вам установить его и расскажем, как эффективно использовать.
Если вы серьёзно относитесь к кибербезопасности, вы, вероятно, слышали о Nuclei. Это не просто сканер уязвимостей — это мощный инструмент, созданный для скорости, гибкости и точности. Nuclei быстро стал фаворитом среди тестировщиков на проникновение, специалистов по кибербезопасности и разработчиков, и не без оснований. Он имеет открытый исходный код, обладает широкими возможностями настройки и обеспечивает точность, о которой большинство сканеров могут только мечтать.
В этой статье мы расскажем, что делает Nuclei таким революционным инструментом, рассмотрим его основные функции, расскажем о процессе установки и пошагово покажем вам, как пользоваться им профессионально. Независимо от того, ищете ли вы ошибки в веб-приложениях или блокируете критически важную сетевую инфраструктуру, Nuclei — это инструмент, который вам понадобится.
Ключевые особенности
Давайте начнем с определения ключевых преимуществ, которые сделали Nuclei таким популярным:
1. Архитектура на основе шаблонов для легкой настройки и совместного использования
2. Поддержка нескольких протоколов (HTTP, DNS, TCP, FILE и т. д.)
3. Обширная библиотека готовых шаблонов
4. Возможность создания пользовательских шаблонов для конкретных случаев использования.
5. Возможности интеграции с другими инструментами безопасности и конвейерами CI/CD
6. Низкий уровень ложноположительных результатов благодаря точным алгоритмам сопоставления.
История сканеров и ядер
Сканеры уязвимостей стали краеугольным камнем кибербезопасности с самого начала развития сетевой безопасности. Эволюция этих инструментов отражает меняющийся ландшафт киберугроз и стратегий защиты:
1990-е годы: Появились первые сетевые сканеры, такие как SATAN (инструмент администратора безопасности для анализа сетей), ориентированные на известные уязвимости в сетевых службах.
2000-е: Сканеры веб-приложений стали широко распространены по мере роста веб-угроз. Набирали популярность такие инструменты, как Nikto и Nessus.
2010-е годы: Появились облачные и распределенные решения для сканирования, отвечающие потребностям более крупных и сложных сетей.
2020: ProjectDiscovery выпустила Nuclei, представив новую парадигму сканирования уязвимостей. Подход на основе шаблонов и ориентация на разработку силами сообщества отличают его от традиционных сканеров.
Nuclei устранил ряд ограничений традиционных сканеров:
• Скорость : многие старые сканеры были медленными, особенно при сканировании больших сетей.
• Точность : ложные срабатывания были распространенной проблемой, что приводило к потере времени и ресурсов.
• Гибкость : традиционные сканеры часто имели ограниченные возможности настройки.
• Частота обновлений : модель Nuclei, основанная на сообществе, позволяет быстро обновлять данные для обнаружения новых уязвимостей.
Преимущества ядер:
1. Скорость: возможности параллельного сканирования Nuclei позволяют ему обрабатывать несколько целей одновременно, что значительно сокращает время сканирования.
2. Настраиваемость: пользователи могут создавать, изменять и обмениваться шаблонами для обнаружения определенных уязвимостей или адаптации к уникальным средам.
3. Точность: Подход на основе шаблонов в сочетании с точными алгоритмами сопоставления снижает количество ложных срабатываний.
4. Универсальность: Nuclei поддерживает несколько протоколов, что делает его пригодным для различных сценариев сканирования.
5. Поддержка сообщества: Большое активное сообщество вносит свой вклад в постоянное расширение и обновление библиотеки шаблонов.
6. Интеграция: Nuclei можно легко интегрировать в существующие рабочие процессы безопасности и конвейеры CI/CD.
7. Расширяемость: пользователи могут расширять функциональность Nuclei с помощью пользовательских скриптов и интеграций.
Недостатки ядер:
1. Кривая обучения: создание эффективных пользовательских шаблонов требует понимания как целевых систем, так и синтаксиса шаблонов Nuclei.
2. Ресурсоемкость: Несмотря на свою скорость, Nuclei может потреблять много ресурсов при сканировании больших сетей или одновременном использовании множества шаблонов.
3. Требуется тщательная настройка: неправильная настройка может привести к пропуску уязвимостей или, наоборот, к ненужному сетевому шуму.
Установка ядер
Для установки ядер сначала необходимо установить язык программирования Go от Google. Хотя Python по-прежнему остаётся самым популярным языком для инструментов кибербезопасности, язык программирования Go набирает популярность.
1. Установить Go
kali> sudo apt update
kali> sudo apt install golang-go
2. Установка ядер:
kali> go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
3. Добавьте Nuclei в ваш PATH:
kali> echo 'export PATH=$PATH:~/go/bin' >> ~/.bashrc
kali> источник ~/.bashrc
4. После установки проверьте работу Nuclei, выполнив:
kali> nuclei -версия
Базовый синтаксис конфигураций ядер
Для обеспечения корректной работы Nuclei необходимо следующее:
• Расширение .yaml — каждый шаблон должен иметь расширение файла .yaml.
• Уникальный идентификатор . Каждый шаблон должен начинаться с уникального идентификатора (ID), который не должен содержать пробелов.
Информация о шаблоне
• Обязательные поля : каждый шаблон должен содержать поля «автор», «имя» и «серьёзность». Также рекомендуется добавить подробное описание, ссылки и теги, чтобы прояснить назначение и функциональность шаблона.
информация:
имя: Первый шаблон
автор: Воздух
серьезность: высокая
описание: Мой первый шаблон Nuclei
ссылка: hackers-arise.net и hackers-arise.com
теги: первый,sqli,learn,nuclei
Запросы:
• Выполнение запросов . Для взаимодействия с веб-приложением необходимо определить хотя бы один запрос в шаблоне. Запрос определяет метод, путь, заголовки, тело и другие параметры. Запросы определяются в шаблоне с помощью поля http.
Далее необходимо определить HTTP-метод взаимодействия с сайтом. Метод запроса может быть GET, POST, PUT, DELETE и т. д., в зависимости от требований.
• Указание пути — путь указывается в поле «path». Вот пример запроса, в котором Nuclei обращается к файлу «secret_file.txt»:
http:
метод: ПОЛУЧИТЬ
путь:
– «{{BaseURL}}/secret_file.txt»
Вместо прямого URL я использовал {{BaseURL}} — это динамические переменные, которые можно вставлять в путь, чтобы изменить его поведение во время выполнения. Переменные начинаются с {{ и заканчиваются на }} и, как и всё в Linux, чувствительны к регистру.
Примеры динамических переменных:
[td]Ценить[/td] [td]{{BaseURL}}[/td]
[td] [/td] [td]{{RootURL}}[/td]
[td] [/td] [td]{{Имя хоста}}[/td]
[td]example.com:443[/td] [td]{{Хозяин}}[/td]
[td]example.com[/td] [td]{{Порт}}[/td]
[td]443[/td] [td]{{Путь}}[/td]
[td]/фу[/td] [td]{{Файл}}[/td]
[td]bar.php[/td] [td]{{Схема}}[/td]
[td]https[/td]
Сопоставители:
• Валидация (Matchers) — Matchers используются для проверки соответствия ответов на ваши запросы определённым критериям. Например, вы можете проверить наличие определённой строки в ответе сервера или определённого кода статуса HTTP.
Существует шесть типов сопоставителей:
[td]Цель[/td] [td]статус[/td]
[td]Проверяет ответ по его коду статуса.[/td] [td]размер[/td]
[td]Проверяет ответ по его размеру.[/td] [td]слово[/td]
[td]Проверяет наличие указанного слова в ответе.[/td] [td]регулярное выражение[/td]
[td]Проверяет ответ с помощью регулярных выражений.[/td] [td]двоичный[/td]
[td]Проверяет ответ, закодированный в шестнадцатеричном формате.[/td] [td]DSL[/td]
[td]Создает более сложные выражения
с использованием вспомогательных функций.[/td]
Реальный сценарий использования ядер для поиска уязвимостей
Сценарий: Кибервоин оценивает веб-приложение ( vesti.ru ) на предмет уязвимостей.
Шаг № 1: Разведка
Сначала хакер собирает информацию о цели, включая поддомены:
kali> subfinder -d vesti.ru | tee subdomains.txt
Команда «tee» в Unix-подобных системах используется как для отображения вывода команды в терминале, так и для одновременной записи этого вывода в файл.
Шаг № 2: Создайте пользовательские шаблоны для потенциальных уязвимостей SQL-инъекций и XSS
Хакер создает два специальных шаблона для дальнейшего исследования этих проблем:
Шаблон SQL-инъекции (sqli-check.yaml):
В учебных целях были добавлены только две полезные нагрузки.
Шаблон XSS (xss-check.yaml):
Шаг № 3 : Запуск пользовательских сканирований
kali> nuclei -u https://vesti.ru -t sqli-check.yaml,xss-check.yaml -o custom_results.txt
Похоже, что этот российский сайт не уязвим для столь простых вредоносных программ, что и ожидалось, но, думаю, вы поняли.
Краткое содержание
Nuclei — это значительный шаг вперёд в технологии сканирования уязвимостей. Сочетание скорости, точности и гибкости настроек делает его незаменимым инструментом для кибервоинов.