Téléversement de fichier arbitraire authentifié menant à l'exécution de code à distance — Analyse technique et reproduction contrôlée de CVE-2026-38526 dans Webkul Krayin CRM 2.2.x.
Téléversement arbitraire de fichier authentifié menant à l'exécution de code à distance — Analyse technique et reproduction contrôlée de CVE-2026-38526 dans Webkul Krayin CRM 2.2.x.
CVE-2026-38526 est une vulnérabilité de téléversement arbitraire de fichier authentifié affectant Webkul Krayin CRM 2.2.x.
La fonctionnalité vulnérable est exposée via le point de terminaison de téléversement TinyMCE de l'application :
POST /admin/tinymce/upload
L'application ne restreint pas suffisamment le type de fichier pouvant être téléversé. Un utilisateur authentifié peut soumettre un fichier avec une extension exécutable côté serveur, telle que .php. L'application stocke le fichier téléversé et renvoie son URL accessible.
Lorsque le déploiement autorise l'exécution de PHP depuis l'emplacement de téléversement, le fichier téléversé peut ensuite être demandé via le serveur web, entraînant une exécution de code à distance dans le contexte du processus de l'application web.
L'enregistrement CVE publié évalue la vulnérabilité à CVSS 3.1 : 9.9 (Critique).
Ce dépôt contient ma propre analyse technique et reproduction contrôlée de la vulnérabilité.
La vulnérabilité a déjà été divulguée publiquement sous CVE-2026-38526. Ce travail ne revendique pas la découverte de la vulnérabilité. L'objectif de cette recherche était de comprendre l'implémentation vulnérable, de reproduire le chemin d'exploitation dans un environnement contrôlé, et d'examiner les conditions qui transforment le problème de téléversement de fichier en exécution de code à distance.
La vulnérabilité a également été utilisée dans la , qui a fourni un environnement pratique pour étudier le problème.
Produit : Webkul Krayin CRM Versions affectées : 2.2.x Vulnérabilité : Téléversement arbitraire de fichier Impact résultant : Exécution de code à distance Authentification : Requise Vecteur d'attaque : Réseau CWE : CWE-434 — Téléversement non restreint de fichier de type dangereux CVSS : 9.9 Critique CVE : CVE-2026-38526
La fonctionnalité vulnérable est gérée par :
/admin/tinymce/upload
Le point de terminaison accepte un fichier téléversé via le paramètre file. La logique applicative concernée dérive le nom de fichier stocké à partir du nom de fichier d'origine et préserve son extension d'origine.

Ce comportement est important car l'application n'accepte pas simplement un objet téléversé ; elle conserve une extension exécutable contrôlée par l'attaquant et rend l'objet résultant accessible via le mécanisme de stockage de l'application.
Le problème principal est une validation côté serveur insuffisante des fichiers téléversés.
L'application utilise l'extension d'origine fournie par le client lors de la construction du nom de fichier stocké. Il n'existe pas de liste d'autorisation suffisamment restrictive empêchant les types de fichiers exécutables d'atteindre la couche de stockage.
Le flux concerné est

L'utilisation d'un nom de fichier généré ne résout pas le problème sous-jacent.
Par exemple, transformer shell.php en un nom de fichier généré tel que .php ne rend pas le fichier téléversé sûr si le serveur continue d'interpréter les fichiers .php comme du code PHP exécutable.
Un téléversement non restreint ne signifie pas automatiquement une exécution de code à distance.
Le chemin d'exécution dépend de la gestion par le serveur du fichier téléversé.
Dans le scénario de déploiement vulnérable, la chaîne devient
