Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
CVE-2025-14855-POC — SureForms <= 2.2.0 - Cross-Site Scripting Armazenado Não Autenticado | Kitploit
Ferramentas/GitHubGitHub/ch4r0nn/cve-2025-14855-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoDesenvolvimento de Payloads
GitHubch4r0nn/cve-2025-14855-poc

CVE-2025-14855-POC

SureForms <= 2.2.0 - Cross-Site Scripting Armazenado Não Autenticado

Ver Repositório
213há 8 mesesAinda 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-2025-14855: Prova de Conceito de XSS Armazenado no Plugin SureForms WordPress

  • Alvo: Plugin WordPress "SureForms"
  • Plugin Wordpress: https://wordpress.org/plugins/sureforms/
  • Tipo de Vulnerabilidade: Cross-Site Scripting Armazenado (XSS)
  • CVE: CVE-2025-14855
  • Referência: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/sureforms/sureforms-220-unauthenticated-stored-cross-site-scripting
  • Autenticação: Não autenticado (Visitante/Público)
  • Impacto: Execução Remota de Código (RCE) via Sequestro de Sessão de Administrador
  • Descoberto por: https://nguyentiendung1006.wixsite.com/tiendung

1. Resumo

Existe uma vulnerabilidade Stored XSS crítica no plugin SureForms. A vulnerabilidade decorre de uma implementação insegura no lado do cliente em entries.js, onde a entrada do usuário é decodificada programaticamente (revertendo a sanitização do lado do servidor) e depois renderizada usando dangerouslySetInnerHTML sem sanitização adequada no lado do cliente. Isso permite que atacantes não autenticados injetem payloads JavaScript maliciosos por meio de campos de formulário padrão, contornando os filtros padrão wp_kses do WordPress.

2. Identificação da Versão

Para verificar se um site alvo está executando o SureForms, inspecione o cabeçalho do arquivo de tradução, que normalmente contém o número da versão.

URL Alvo: http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot

Comando de Verificação:

curl -s "http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot" | grep "Project-Id-Version"

3. Engenharia Reversa e Análise da Causa Raiz

A vulnerabilidade reside na interface de administração baseada em React responsável pela visualização de entradas do formulário (entries.js).

3.1. A Lógica de "Auto-Decodificador" (A Burlada)

No arquivo minificado entries.js, há uma função auxiliar (identificada como Xv na build analisada) projetada para lidar com entidades HTML.

Lógica do Código (Reconstruída):

// Função Xv: Pré-processamento de valores de campo
var Xv = function(input) {
    var value = input.value;
    
    // CAUSA RAIZ DA VULNERABILIDADE:
    // Se a string contiver entidades HTML (ex.: &lt;), crie uma textarea,
    // injete o conteúdo e extraia o valor.
    // Isso efetivamente DECODIFICA entidades HTML de volta para tags HTML brutas.
    // Exemplo: "&lt;img ...&gt;" torna-se ""
    
    if (typeof value === "string" && value.match(/&[a-zA-Z0-9#]+;/)) {
        var textarea = document.createElement("textarea");
        textarea.innerHTML = value;
        
        // Lógica para reverter a sanitização
        if (textarea.value.includes("&lt;") || textarea.value.includes("&gt;")) {
             value = textarea.value; // Agora 'value' contém HTML BRUTO
        }
    }
    return { ...input, value: value };
}

Análise: Esta função anula a segurança do backend. Mesmo que o WordPress armazene corretamente <script> como &lt;script&gt; no banco de dados, esta função o converte de volta para <script> imediatamente após obtê-lo da API.

3.2. O Sink Perigoso

Após a decodificação, os dados são passados para o componente de renderização (identificado como Jv).

Lógica do Código (Reconstruída):

// Função Jv: Renderização do campo
var Jv = function(props) {
    var field = props.field;
    var val = field.value; // Este valor agora é HTML bruto (pós-decodificação)

    // O GATILHO: Verifica se a string parece HTML
    if (typeof val === "string" && val.match(/<[^>]+>/g)) {
        // O SINK: Renderiza usando dangerouslySetInnerHTML SEM sanitização do lado do cliente (ex.: DOMPurify)
        return React.createElement("span", {
            dangerouslySetInnerHTML: { __html: val }
        });
    }
    
    // Renderização segura para texto não HTML
    return React.createElement("span", null, val);
}

4. Fluxo do Ataque

  1. Injeção: Um atacante não autenticado envia um formulário no front-end. Em vez de usar tags HTML brutas (que seriam removidas/sanitizadas pelo backend do WordPress), o atacante envia Entidades HTML.

  2. Armazenamento: O WordPress vê a entrada (ex.: &lt;img...) como texto seguro e a armazena no banco de dados.

  3. Execução (A Armadilha):

    • O Administrador navega para SureForms > Entries.
    • O navegador busca os detalhes da entrada via API JSON.
    • A função Xv detecta as entidades e decodifica &lt;img... de volta para ` Entries.
  4. Clique na entrada enviada no Passo 1 para visualizar os detalhes.

  5. Resultado: O navegador executará o payload JavaScript (alert('XSS_SUREFORMS')).

Baixar ferramenta