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-38526-KrayinCRM — 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. | Kitploit
Outils/GitHubGitHub/ish3ng0m4/cve-2026-38526-krayincrm
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionArticles et RechercheApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubish3ng0m4/cve-2026-38526-krayincrm

CVE-2026-38526-KrayinCRM

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.

Voir le dépôt
28il y a 1 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-38526 KrayinCRM

Téléversement arbitraire de fichiers 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.

Vue d'ensemble

CVE-2026-38526 est une vulnérabilité de téléversement arbitraire de fichiers 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).

Contexte de la recherche

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 fichiers en exécution de code à distance.

La vulnérabilité a également été utilisée dans la machine Hack The Box GCSB 2026 Nexus, qui a fourni un environnement pratique pour étudier le problème.

Logiciel affecté

Produit : Webkul Krayin CRM Versions affectées : 2.2.x Vulnérabilité : Téléversement arbitraire de fichiers Impact résultant : Exécution de code à distance Authentification : Requise Vecteur d'attaque : Réseau CWE : CWE-434 — Téléversement sans restriction de fichier de type dangereux CVSS : 9.9 Critique CVE : CVE-2026-38526

Point de terminaison vulnérable

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 conserve 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.

Cause racine

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.

Pourquoi le téléversement peut mener à une RCE

Un téléversement sans restriction 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

Par conséquent, l'impact RCE résulte de la combinaison de :

  1. Validation de téléversement insuffisante
  2. Conservation d'une extension exécutable
  3. Stockage accessible via le web
  4. Exécution de PHP autorisée à cet emplacement

Si l'exécution de PHP est désactivée pour le répertoire de téléversement, le chemin direct vers la RCE peut être empêché, même si la faiblesse sous-jacente de téléversement arbitraire de fichiers subsiste.

Comment l'exécuter

  1. Télécharger

wget :

wget https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/upload.py
wget https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/marker.php

curl :

curl -LO https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/upload.py
curl -LO https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/marker.php

2. Placez les fichiers dans

    poc/
    ├── upload.py
    └── marker.php

3. Créez un environnement Python et installez la dépendance

    python3 -m venv .venv
    source .venv/bin/activate
    pip install requests

4. Rendez le PoC exécutable

    chmod +x poc/upload.py

6. Exécutez-le

    python3 poc/upload.py \
      --url http://[Lab_IP:PORT] \
      --email [email protected] \
      --password 'YOUR_PASSWORD'

Analyse de l'exploitation

L'exploitation nécessite un compte authentifié capable d'atteindre la fonctionnalité vulnérable.

En résumé :

  1. S'authentifier auprès de Krayin CRM
  2. Obtenir le contexte de session applicative requis
  3. Accéder à /admin/tinymce/upload
  4. Soumettre un fichier spécialement conçu
  5. L'application accepte l'extension exécutable
  6. Le fichier est écrit dans l'emplacement de stockage de TinyMCE
  7. L'application renvoie l'URL du fichier résultant
  8. Demander le fichier téléversé
  9. PHP est interprété par le serveur
  10. Les commandes s'exécutent avec les privilèges de l'application web

Le contexte d'exécution résultant est déterminé par le déploiement sous-jacent. Dans un déploiement Linux typique, il peut s'agir du compte de service du serveur web, tel que :

www-data

Cela ne fournit pas automatiquement les privilèges root du système d'exploitation. L'impact ultérieur dépend des permissions et de la configuration de l'environnement compromis.

Analyse du code source

Le comportement vulnérable peut être réduit à trois opérations importantes.

  1. Obtenir le fichier téléversé

     $file = request()->file('file');
    

L'application reçoit le fichier fourni par le client.

  1. Préserver l'extension contrôlée par le client

     $filename = md5($file->getClientOriginalName().time())
                 .'.'.$file->getClientOriginalExtension();
    

Le nom de fichier lui-même est modifié, mais l'extension d'origine est conservée. Il s'agit d'une distinction importante : la randomisation du nom de fichier ne constitue pas une validation du type de fichier.

  1. Stocker et exposer le fichier

      $path = $file->storeAs($this->storagePath, $filename);
     return [
         'file' => $path,
         'file_name' => $file->getClientOriginalName(),
         'file_url' => Storage::url($path),
     ];
    

L'application stocke le fichier et fournit son URL au client.

Impact

Une exploitation réussie peut permettre à un attaquant d'exécuter du code avec les privilèges de l'application web.

Télécharger l’outil