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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-66516-POC — 교육 목적으로만 사용되는 CVE-2025-66516 Apache Tika 취약점에 대한 PoC | Kitploit
도구/GitHubGitHub/sid6224/cve-2025-66516-poc
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubsid6224/cve-2025-66516-poc

CVE-2025-66516-POC

교육 목적으로만 사용되는 CVE-2025-66516 Apache Tika 취약점에 대한 PoC

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

⚠️ 사용 전 면책 조항 읽기 ⚠️

교육/승인된 테스트 전용 | 라이선스 | 보안 정책


CVE Tika Severity XXE License Platform Java


이 POC 소개

이 저장소는 Apache Tika 3.2.2 미만 버전의 XML External Entity (XXE) 주입 취약점인 CVE-2025-66516에 대한 개념 증명 (POC) 익스플로잇을 포함합니다. 이 취약점은 tika-parser-pdf-module 컴포넌트의 XFA (XML Forms Architecture) 파서에 영향을 미치며, 공격자가 악의적으로 조작된 PDF 문서를 통해 로컬 파일을 읽고 민감한 데이터를 유출할 수 있게 합니다.

CVE-2025-66516란 무엇인가?

CVE-2025-66516은 Apache Tika의 PDF 파싱 기능에 존재하는 심각한 보안 취약점입니다. Tika 3.2.2 이전 버전은 내장된 XFA 양식이 있는 PDF 파일을 처리할 때 XML 파서의 외부 엔터티 처리를 적절히 제한하지 못합니다. 이를 통해 공격자는 다음과 같은 작업을 수행할 수 있습니다:

  • 서버 파일 시스템에서 임의 파일 읽기 (로컬 파일 노출)
  • 외부 서버로 민감한 데이터 유출 (대역 외 XXE)
  • 내부 네트워크 리소스에 요청을 트리거하여 SSRF 공격 수행
  • Tika에 의존하는 애플리케이션의 보안 제어 우회

취약점 상세 정보

  • CVE ID: CVE-2025-66516
  • 영향받는 컴포넌트: Apache Tika tika-parser-pdf-module
  • 영향받는 버전: Apache Tika < 3.2.2
  • 패치된 버전: Apache Tika 3.2.2 이상
  • 공격 벡터: XXE 페이로드가 포함된 XFA 양식이 있는 악의적으로 제작된 PDF
  • 영향: 기밀성 침해, 데이터 유출, SSRF (Server-Side Request Forgery)
  • CVSS 심각도: 높음
  • 관련 CVE: CVE-2025-32370 (Tika의 유사한 XXE 취약점)

저장소 내용

이 저장소에는 다음이 포함됩니다:

  • gen_poc.py - 로컬 파일 읽기 XXE 공격을 위한 악성 PDF 생성 Python 스크립트
  • gen_oob_poc.py - 대역 외 데이터 유출을 위한 PDF 생성 Python 스크립트
  • http_listener.py - OOB XXE 데이터 유출을 시연하기 위한 HTTP 서버
  • DocumentProcessor.java - 취약한 Tika 통합을 보여주는 샘플 Java 애플리케이션
  • 단계별 재현 가이드 (예상 출력 포함)
  • 취약 버전과 패치 버전 비교 기술 분석
  • 공격 흐름 문서 (익스플로잇 메커니즘 설명)

키워드

Apache Tika XXE, CVE-2025-66516 exploit, Tika security vulnerability, XML External Entity attack, PDF XXE injection, Tika 3.2.1 vulnerability, out-of-band XXE, OOB XXE, security research, penetration testing, POC exploit, vulnerability disclosure, XFA parser vulnerability, tika-parser-pdf-module, file disclosure vulnerability, data exfiltration, SSRF attack, secure coding, vulnerability analysis, security testing, ethical hacking, infosec, cybersecurity research, Apache Tika exploit code, XXE payload, PDF security, document parser vulnerability


테스트 환경

참고: 이 POC는 다음 환경에서 테스트 및 검증되었습니다:

  • Apache Tika 버전: 3.2.1 (취약) 및 3.2.2 (패치)
  • 운영 체제: Linux - Ubuntu 24.04.3 LTS
  • Java 버전: OpenJDK 17.0.17

POC 디렉토리 설정

먼저 POC 전용 디렉토리를 생성하여 모든 파일을 정리합니다.

mkdir apache_tika_poc
cd apache_tika_poc

환경 확인

POC를 진행하기 전에 환경에 필요한 종속성이 있는지 확인합니다. 다음 명령은 Java 컴파일러/런타임 버전과 OS 세부 정보를 표시하며, 이는 취약점 재현에 중요합니다.

# Java 버전 확인
java -version
javac -version

# OS 버전 확인
lsb_release -a

예상 출력: Java 버전 정보 (예: OpenJDK 17.x.x) 및 Ubuntu 버전 세부 정보 (24.04.3 LTS)가 표시되어야 합니다.

Apache Tika JAR 다운로드

취약 버전 (3.2.1)과 패치 버전 (3.2.2)을 각각 다운로드합니다. 두 버전이 모두 필요하며, XXE 취약점이 3.2.1에 존재하고 3.2.2에서 수정되었음을 입증해야 합니다. tika-app JAR은 모든 Tika 파서와 종속성을 포함하는 올인원 실행 파일입니다.

# 취약한 Tika 버전 다운로드
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.1/tika-app-3.2.1.jar

# 패치된 Tika 버전 다운로드  
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.2/tika-app-3.2.2.jar

예상 출력: 두 개의 JAR 파일 (tika-app-3.2.1.jar ~75MB, tika-app-3.2.2.jar ~75MB)이 다운로드됩니다.

컴포넌트 버전 확인

JAR 매니페스트 파일을 검사하여 정확한 버전을 확인합니다. 이는 테스트 전 올바른 취약/패치 버전을 확인하는 절차입니다.

# 취약 버전 매니페스트 확인
unzip -p tika-app-3.2.1.jar META-INF/MANIFEST.MF

# 패치 버전 매니페스트 확인
unzip -p tika-app-3.2.2.jar META-INF/MANIFEST.MF

예상 출력: 각각 Implementation-Version: 3.2.1 및 3.2.2를 보여주는 매니페스트 파일과 빌드 타임스탬프 등 기타 메타데이터가 표시됩니다.

컴포넌트 POM 속성 나열

프로젝트 오브젝트 모델 (Maven의 POM 속성은 프로젝트의 종속성, 빌드 구성 및 메타데이터를 정의)을 살펴보면 보안 권고에서 언급된 별도의 tika-parsers가 없음을 알 수 있습니다. 이는 버전 관련 사항일 수 있으며, POC의 대상인 3.2.1 및 3.2.2 버전에서는 tika-parsers 모듈이 개별 파서 모듈로 대체된 것으로 추정됩니다.

# 두 버전의 모든 pom.properties 파일 나열
unzip -l tika-app-3.2.1.jar | grep pom.properties | grep tika
unzip -l tika-app-3.2.2.jar | grep pom.properties | grep tika

예상 출력: tika-core, tika-parser-pdf-module, tika-xmp 등 모든 Tika 컴포넌트 모듈 목록이 표시됩니다. 단일 tika-parsers 모듈 대신 개별 파서 모듈이 있음을 확인할 수 있습니다.

Tika 컴포넌트 버전 확인

핵심 Tika 컴포넌트의 버전 정보를 추출하여 표시합니다. 이는 내부 모듈 구조를 이해하고 핵심 라이브러리와 PDF 파서 모듈이 모두 예상 버전인지 확인하는 데 도움이 됩니다.

# 3.2.1의 tika-core, tika-parser-pdf-module, tika-app 버전 확인
unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-app/pom.properties

# 3.2.2의 tika-core, tika-parser-pdf-module, tika-app 버전 확인
unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-app/pom.properties

예상 출력: 각 컴포넌트에 대해 version=3.2.1 또는 version=3.2.2를 보여주는 POM 속성이 ---로 구분되어 표시됩니다. 세 컴포넌트(tika-core, tika-parser-pdf-module, tika-app) 모두 전체 버전과 일치해야 합니다.

XXE 익스플로잇 대상 파일 생성

XXE 공격의 대상이 될 가상의 시크릿 파일을 생성합니다. 이 파일은 공격자가 XXE 취약점을 통해 유출하려고 시도할 수 있는 민감한 데이터 (예: API 키 또는 자격 증명)를 시뮬레이션합니다.

# 대상 시크릿 파일 생성
echo "INTERNAL_SERVER_KEY=EXPOSED" > fake-secrets.txt

예상 출력: INTERNAL_SERVER_KEY=EXPOSED 문자열이 포함된 fake-secrets.txt 파일이 생성됩니다. 이 파일은 XXE 익스플로잇에 의해 읽힙니다.

코드 분석: 취약 버전과 패치 버전 비교

수정 사항을 이해하려면 두 버전의 XMLReaderUtils 클래스를 디컴파일하여 비교해야 합니다. 이 클래스는 XML 파서를 생성하는 역할을 하며, 취약점은 XML 엔터티 처리 구성 방식에서 비롯됩니다.

# 분석을 위해 취약 JAR 추출
mkdir tika-3.2.1-extract && cd tika-3.2.1-extract && unzip -q ../tika-app-3.2.1.jar && cd ..

# 분석을 위해 패치 JAR 추출
mkdir tika-3.2.2-extract && cd tika-3.2.2-extract && unzip -q ../tika-app-3.2.2.jar && cd ..

# 취약 클래스 디컴파일
cd tika-3.2.1-extract && javap -c org/apache/tika/utils/XMLReaderUtils.class > ../XMLReaderUtils-3.2.1.txt && cd ..

# 패치 클래스 디컴파일
cd tika-3.2.2-extract && javap -c org/apache/tika/utils/XMLReaderUtils.class > ../XMLReaderUtils-3.2.2.txt && cd ..

# 버전 비교
diff -u XMLReaderUtils-3.2.1.txt XMLReaderUtils-3.2.2.txt

예상 출력: 추출 시 디컴파일된 클래스 파일이 포함된 두 개의 디렉토리가 생성됩니다. javap 명령은 XMLReaderUtils 클래스의 바이트코드 디스어셈블리를 생성합니다. diff 명령은 버전 간 XML 파서 구성의 차이점을 보여줍니다.

수정 사항 식별

신중하게 비교하면 3.2.2에서 Doctype 정의(DTD) 및 외부 엔터티 지원이 비활성화되었음을 알 수 있습니다. 이것이 수정의 핵심입니다:

diff -u XMLReaderUtils-3.2.1.txt XMLReaderUtils-3.2.2.txt | grep -A2 -B2 "accessExternalDTD\|supportDTD\|isSupportingExternalEntities"

예상 출력: 3.2.2에서 DTD 처리 및 외부 엔터티 해석을 비활성화하는 호출이 추가되었음을 보여주는 diff 출력이 표시됩니다. accessExternalDTD를 빈 문자열로 설정하고 supportDTD를 false로 설정하는 줄을 찾으십시오.

POC #1: 로컬 파일 읽기 XXE

이는 악성 PDF가 서버 파일 시스템의 로컬 파일을 읽는 고전적인 XXE 공격을 보여줍니다. Python 스크립트는 XXE 페이로드 ( file:///fake-secrets.txt 참조)가 포함된 XML이 포함된 XFA 양식이 포함된 PDF를 생성합니다.

# 악성 PDF 생성
python3 ./gen_poc.py

# 취약한 Tika 3.2.1로 테스트
java -jar tika-app-3.2.1.jar -t cve_2025_66516_poc.pdf

# 패치된 Tika 3.2.2로 테스트
java -jar tika-app-3.2.2.jar -t cve_2025_66516_poc.pdf

예상 출력:

  • gen_poc.py가 XXE 페이로드가 포함된 cve_2025_66516_poc.pdf를 생성합니다.
  • 취약 버전 (3.2.1): Tika의 출력에 INTERNAL_SERVER_KEY=EXPOSED (시크릿 파일의 내용!)가 포함됩니다.
  • 패치 버전 (3.2.2): Tika의 출력에 시크릿 데이터가 포함되지 않습니다. XXE 공격이 차단됩니다.

POC #2: 대역 외 XXE

이는 대역 외 (OOB) 데이터 유출을 사용하는 보다 정교한 XXE 공격을 보여줍니다. 악성 PDF는 응답에 파일 내용을 반영하는 대신 Tika가 데이터를 공격자가 제어하는 외부 서버로 보내도록 강제합니다. 이 기술은 애플리케이션이 파싱된 콘텐츠를 반환하지 않는 경우에도 작동합니다.

# 대역 외 XXE PDF 생성
python3 ./gen_oob_poc.py
도구 다운로드