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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-29927-PoC — Доказательство концепции эксплуатации CVE-2025-29927 — обход авторизации в промежуточном ПО Next.js. Включает уязвимую тестовую лабораторию и Python-скрипт для проверки обхода путём отправки специально сформированных заголовков x-middleware-subrequest. | Kitploit
Инструменты/GitHubGitHub/ritinify/cve-2025-29927-poc
ЭксплуатацияЭксплуатация веб-приложенийCTFТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubritinify/cve-2025-29927-poc

CVE-2025-29927-PoC

Доказательство концепции эксплуатации CVE-2025-29927 — обход авторизации в промежуточном ПО Next.js. Включает уязвимую тестовую лабораторию и Python-скрипт для проверки обхода путём отправки специально сформированных заголовков x-middleware-subrequest.

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

Популярное

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

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

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

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

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

CVE-2025-29927 — Обход авторизации в Next.js Middleware — PoC для проверки

Небольшой GitHub-проект для проверки CVE-2025-29927 (обход авторизации в Next.js Middleware) на локальном учебном полигоне (VMware: Ubuntu-цель + Kali-атакующий).

⚠️ Дисклеймер: Проект предназначен исключительно для образовательных целей, CTF и полигонов, которыми вы владеете или на которые у вас есть явное разрешение. Запрещено использовать против любых систем без авторизации. Ответственность за последствия неправомерного использования лежит на пользователе.


📋 Содержание

  • 1. Карточка уязвимости
  • 2. Принцип уязвимости (понятно за 30 секунд)
  • 3. Структура репозитория
  • 4. Топология полигона (две виртуальные машины VMware)
  • 5. Развёртывание цели (Ubuntu 24.04)
  • 6. Подготовка атакующей машины (Kali)
  • 7. Локальная проверка (ключевой этап)
  • 8. Параметры PoC
  • 9. Быстрая самопроверка без цели (опционально)
  • 10. Исправление и обнаружение
  • 11. Часто задаваемые вопросы FAQ
  • 12. Справочные материалы

1. Карточка уязвимости

ПараметрЗначение
CVECVE-2025-29927
Дата публикации2025-03-25 (официальный бюллетень безопасности Next.js)
Затронутый компонентVercel Next.js (полнофункциональный Node.js фреймворк)
Тип уязвимостиОбход авторизации / Improper Authorization (CWE-863)
Затронутые версии< 12.3.5, < 13.5.9, < 14.2.25, < 15.2.3
Исправленные версии12.3.5 / 13.5.9 / 14.2.25 / 15.2.3 и выше
Уровень опасностиCritical / Высокий (точный балл см. на странице NVD)

После появления уязвимости в большом количестве производственных сред были обойдены админ-панели, платёжные колбэки и внутренние API. Модули обнаружения включены в Metasploit и ProjectDiscovery Nuclei — это одна из самых показательных «фреймворковых» уязвимостей обхода авторизации 2025 года.


2. Принцип уязвимости (понятно за 30 секунд)

Next.js позволяет размещать «логику аутентификации» в middleware (промежуточном ПО), например:

export function middleware(request) {
  if (!isLogin(request)) return NextResponse.redirect("/login"); // Не авторизован → блокируем
  return NextResponse.next();
}

Проблема в том, что Next.js внутренне полагается на заголовок запроса, который клиент может подделать, чтобы определить, «выполнялось ли уже middleware для этого запроса»:

x-middleware-subrequest: middleware

В затронутых версиях, если внешний запрос содержит этот внутренний заголовок, Next.js ошибочно считает, что middleware уже отработало, и вся аутентифицирующая middleware пропускается. Атакующему не нужна учётная запись — достаточно добавить этот заголовок к запросу на /admin или другой защищённый маршрут, чтобы получить ответ 200 напрямую. При этом сама страница обычно доверяет middleware и не выполняет повторную проверку — проверка авторизации полностью теряет силу (ошибка границ доверия).

💡 Наиболее универсальное значение, используемое в публичных эксплойтах, — это повторяющаяся конкатенация пути middleware, например middleware:middleware:middleware:middleware:middleware; одиночное значение middleware не срабатывает в некоторых версиях/структурах каталогов (проверено на 14.2.24 в этом полигоне). Данный PoC перебирает несколько значений-кандидатов; успех при любом из них означает обход.


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

CVE-2025-29927-PoC/
├── README.md                 # Этот документ (описание уязвимости + руководство по полигону VMware)
├── LICENSE                   # MIT
├── .gitignore
├── exploit.py                # ★ PoC на Python3 только со стандартной библиотекой (запуск на Kali/любой машине)
├── target/                   # ★ Самодельный уязвимый полигон (скопировать на Ubuntu-цель)
│   ├── package.json          #   Фиксация [email protected] (затронутая версия)
│   ├── middleware.js         #   Имитация реального производственного «аутентифицирующего middleware»
│   ├── pages/
│   │   ├── index.js          #   Главная страница
│   │   ├── login.js          #   Страница входа (демонстрация перенаправления сюда)
│   │   └── admin.js          #   ★ Защищённая админ-панель, на сервере читает flag.txt
│   ├── flag.txt              #   Флаг полигона: FLAG{...}
│   ├── setup.sh              #   Одношаговая установка Node 20 + npm install + build на цели
│   └── start.sh              #   Запуск в production-режиме, прослушивание 0.0.0.0:3000
└── tests/
    └── mock_target.py        #   Имитация цели без Node (только для разработки/самопроверки)

4. Топология полигона (две виртуальные машины VMware)

┌───────────────────────────────────────────────────────────┐
│ VMware Workstation Pro 17 (хост: Windows)                 │
│ Сеть: NAT (по умолчанию VMnet8), обе ВМ в одной подсети,  │
│ пингуют друг друга                                        │
│                                                           │
│   ┌──────────────────┐        ┌─────────────────────┐     │
│   │ Цель Ubuntu 24.04 │        │ Атакующий Kali Linux│     │
│   │                  │  http   │                     │     │
│   │  Node 20 + Next  │◄───────│  python3 exploit.py  │     │
│   │  14.2.24 :3000   │  GET    │                     │     │
│   └──────────────────┘        └─────────────────────┘     │
│   IP: <TARGET_IP>              IP: <ATTACKER_IP>          │
└───────────────────────────────────────────────────────────┘

4.1 Что необходимо скачать

НазначениеОбраз/ПОРекомендуемая версия
ПО для виртуализацииVMware Workstation Pro 17 (бесплатно для личного использования)17.x
Образ целиUbuntu Server LTS ISO24.04.x
Атакующая машинаKali Linux (официальный предустановленный образ VMware или установка с ISO)2025.x
(Опционально)Хост: от 8 ГБ ОЗУ, от 50 ГБ диска—

4.2 Общая конфигурация виртуальных машин

  1. Обеим ВМ выделить 2 vCPU / 4 ГБ ОЗУ / 40 ГБ диска;
  2. Сетевой адаптер обеих ВМ — NAT (гарантирует связь в одной подсети); для обучения мост можно не включать;
  3. При установке Ubuntu отметить OpenSSH server (удобно для копирования файлов по SSH с хоста);
  4. После установки системы и проверки доступа в интернет сделайте чистый снапшот, чтобы удобно было многократно перезапускать полигон.

5. Развёртывание цели (Ubuntu 24.04)

Все следующие шаги выполняются на Ubuntu-цели.

5.1 Перенос кода проекта на цель (на выбор)

# Способ A: запушить проект в свой GitHub и склонировать (рекомендуется; используйте этот способ, если планируете публиковать на GitHub)
git clone https://github.com/<ваш_username>/CVE-2025-29927-PoC.git
cd CVE-2025-29927-PoC

# Способ B: скопировать с хоста по scp
# scp -r CVE-2025-29927-PoC  ubuntu@<TARGET_IP>:~/

5.2 Одношаговая установка зависимостей и сборка уязвимого приложения

cd CVE-2025-29927-PoC/target
sudo bash setup.sh        # Установка Node 20(LTS) + npm install + next build

Что делает setup.sh: обновление apt → установка curl/CA/инструментов сборки → установка Node.js 20 LTS через NodeSource → npm install (загрузка зависимостей, включая [email protected]) → npm run build.

5.3 Запуск уязвимого приложения (production-режим, порт 3000)

bash start.sh
# Успех, если видно "▲ Next.js 14.2.24" и "Local: http://0.0.0.0:3000"

В отдельном терминале сначала выполните локальный смоук-тест:

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