Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-89274-wp-recipe-maker-poc — Lab de validation Docker et PoC Python pour CVE-2026-89274, prouvant l'exécution arbitraire de shortcode dans WP Recipe Maker <= 10.8.1 via rating-comment reviewBody. | Kitploit
Outils/GitHubGitHub/hassham1/cve-2026-89274-wp-recipe-maker-poc
Scanners de VulnérabilitésAnalyse des VulnérabilitésExploitationExploitation d'Applications WebVirtualisation de SécuritéSécurité WebTests d'IntrusionLabs et Pratique
GitHubhassham1/cve-2026-89274-wp-recipe-maker-poc

CVE-2026-89274-wp-recipe-maker-poc

Lab de validation Docker et PoC Python pour CVE-2026-89274, prouvant l'exécution arbitraire de shortcode dans WP Recipe Maker <= 10.8.1 via rating-comment reviewBody.

Voir le dépôt
30il y a 25 joursPas 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-89274 - WP Recipe Maker Arbitrary Shortcode Execution Validation Lab

Matériel de recherche de sécurité pour reproduire et valider CVE-2026-89274 : WP Recipe Maker <= 10.8.1 exécute des shortcodes WordPress enregistrés arbitraires à l'intérieur des métadonnées JSON-LD de recette, injectés via un commentaire de notation approuvé.

  • Affecté : WP Recipe Maker <= 10.8.1
  • Corrigé : 10.8.2 (do_shortcode remplacé par un do_shortcode_safe de suppression uniquement)
  • CVSS 3.1 : 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) - CWE-94
  • Auth : aucune, mais le commentaire de notation de l'attaquant doit franchir le seuil d'approbation des commentaires du site (auto-approbation ou action d'un modérateur) avant que le shortcode injecté ne commence à s'exécuter lors des chargements de page

À utiliser uniquement sur des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester. Le PoC publie un commentaire de notation contenant un shortcode marqueur enregistré dans le lab. Aucun shortcode destructeur n'est utilisé et rien n'est écrit sur le disque.

Verdict

Statut : prouvé dans le lab fourni.

WP Recipe Maker 10.8.1 (WordPress 7.1.2, modèle de carte de recette par défaut) :

comment posted : "[cve89274]" + wprm-comment-rating=5 on the recipe's parent post
result         : JSON-LD on the rendered page contains
                 "reviewBody":"CVE89274-SHORTCODE-FIRED"
                 (marker shortcode executed server-side at render time)
10.8.2         : shortcode stripped, marker absent (patched negative control)

Cela démontre l'exécution côté serveur d'un shortcode enregistré arbitraire avec la sortie intégrée dans les métadonnées de la page, divulguée à chaque visiteur. Cela ne démontre pas de RCE ; l'impact dépend des shortcodes enregistrés sur la cible (exposition de post/meta, shortcodes fournis par des plugins avec effets de bord).

Cause racine (vérifiée par rapport au correctif 10.8.2)

WPRM_Metadata::sanitize_metadata() assainit récursivement chaque champ scalaire du tableau de métadonnées structurées de la recette :

// includes/public/class-wprm-metadata.php:553, WP Recipe Maker 10.8.1
$sanitized = strip_shortcodes( wp_strip_all_tags( do_shortcode( $metadata ) ) );

// 10.8.2
$sanitized = strip_shortcodes( wp_strip_all_tags( WPRM_Instacart::do_shortcode_safe( $metadata ) ) );

do_shortcode() exécute le shortcode en premier ; l'enveloppe strip_shortcodes() ne fait que supprimer les balises de la sortie déjà exécutée. L'un des champs, reviewBody, est rempli verbatim à partir de comment_content des commentaires approuvés portant une valeur meta wprm-comment-rating (class-wprm-metadata.php:1016), interrogés par rapport au post parent de la recette (post_id => $recipe->parent_post_id(), ligne 973) - le post ou la page où la carte de recette est intégrée.

Le remplacement en 10.8.2, WPRM_Instacart::do_shortcode_safe() (class-wprm-instacart.php:501), ne conserve que le contenu interne et n'exécute rien.

Flux d'exploitation (tel que validé)

  1. Cibler le post parent d'une recette (le post/la page intégrant [wprm-recipe]).
  2. POSTer un commentaire sur /wp-comments-post.php avec le shortcode dans le corps et wprm-comment-rating=5.
  3. Le commentaire franchit le seuil d'approbation du site (le lab auto-approuve ; sur des cibles réelles : auto-approbation ou un modérateur).
  4. Lors du rendu suivant et de chaque rendu ultérieur de la page parente, le constructeur de métadonnées inclut le commentaire dans le tableau review du JSON-LD, et sanitize_metadata() exécute le shortcode. Sa sortie remplace le texte du commentaire à l'intérieur de reviewBody, visible par chaque visiteur.

Démarrage rapide

Prérequis : Docker avec Compose v2, Python 3.10+ sur l'hôte.

./lab verify

Construit le lab 10.8.1, exige que le marqueur se déclenche, puis construit le lab 10.8.2 et exige son absence. Tout supprimer avec ./lab reset.

Preuves attendues

Contrôle vulnérable :

[!!!] SHORTCODE EXECUTION CONFIRMED
  evidence: 'CVE89274-SHORTCODE-FIRED' present in the rendered recipe page
  context : ..."reviewBody":"CVE89274-SHORTCODE-FIRED","author":...
RESULT: VULNERABLE CONTROL CONFIRMED

Contrôle corrigé :

[=] shortcode text present but NOT executed: output was stripped
RESULT: PATCHED CONTROL CONFIRMED

Un marqueur dans la page uniquement à l'intérieur du commentaire affiché (texte brut) n'est pas accepté comme preuve ; le marqueur doit apparaître comme sortie exécutée dans les métadonnées.

Cycle de vie manuel du lab

./lab start vulnerable   # 10.8.1 lab on http://127.0.0.1:9482
./lab test               # assert marker fires
./lab start patched      # 10.8.2 lab
./lab test               # assert absence
./lab status
./lab reset

Exécuter le PoC à la main (loopback par défaut ; les cibles externes autorisées nécessitent la surcharge explicite) :

python3 poc/poc_cve_2026_89274.py --url http://127.0.0.1:9482 --post-id 5
python3 poc/poc_cve_2026_89274.py --url https://target.example \
  --allow-authorized-non-loopback [--insecure]

Le template nuclei (nuclei/cve-2026-89274.yaml) n'est qu'un contrôle de version (readme.txt stable tag <= 10.8.1). La chaîne comportementale nécessite la soumission d'un commentaire plus une transition d'approbation, ce qui n'est pas pratique à exprimer dans nuclei ; le PoC Python effectue le flux complet.

Versions affectées et testées

VersionÉvaluation
WP Recipe Maker 10.8.1Exécution de shortcode reproduite de bout en bout
WP Recipe Maker 10.8.2Contrôle négatif corrigé reproduit
WP Recipe Maker <= 10.8.0Affecté selon l'avis ; non testé individuellement

Arborescence du dépôt

.
├── .github/workflows/validate.yml
├── .gitignore
├── LICENSE
├── README.md
├── SECURITY.md
├── docker-compose.yml
├── lab
├── nuclei/
│   └── cve-2026-89274.yaml
└── poc/
    └── poc_cve_2026_89274.py

Non versionné : assets/ (zips de plugins), .lab-state, __pycache__/.

Limites de validation

AffirmationStatut
Exécution de shortcode via reviewBody d'un commentaire de notationProuvé (10.8.1)
Sortie d'exécution divulguée dans le JSON-LD renduProuvé
Contrôle négatif corrigé (10.8.2)Prouvé
Configuration par défaut (CPT recette privée + post parent)Prouvé (c'est la topologie du lab)
Configuration du type de post de recette publiqueNon testé
Le propre endpoint REST de notation de WPRM comme entrée alternativeNon testé
Impact au-delà de la sortie de shortcode enregistré (RCE)Non revendiqué

Références

  • Wordfence : CVE-2026-89274
  • Entrée NVD
  • Plugin WP Recipe Maker

Limite de sécurité

N'exécutez ce dépôt que sur des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester. Le pilote du lab refuse les variantes autres que vulnerable/patched, le PoC refuse les cibles non-loopback sauf si --allow-authorized-non-loopback est fourni, et le port Compose est lié à 127.0.0.1.

Voir SECURITY.md pour la gestion de la divulgation. Ce dépôt n'inclut pas de cibles de production, de données clients, de jetons d'accès ou de preuves provenant de systèmes réels.

Licence

MIT - voir LICENSE.

Télécharger l’outil