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
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubsid6224/cve-2025-66516-poc

CVE-2025-66516-POC

CVE-2025-66516 Apache Tika 脆弱性の教育目的のみの POC

リポジトリを見る
61469ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

⚠️ 使用前に免責事項をお読みください ⚠️

教育/許可されたテストのみ | ライセンス | セキュリティポリシー


CVE Tika Severity XXE License Platform Java


このPOCについて

このリポジトリは、CVE-2025-66516(Apache Tika 3.2.2より前のバージョンにおけるXML External Entity(XXE)注入脆弱性)の概念実証(POC)エクスプロイトを含んでいます。この脆弱性は、tika-parser-pdf-moduleコンポーネントのXFA(XML Forms Architecture)パーサーに影響を与え、攻撃者が悪意を持って細工されたPDFドキュメントを通じてローカルファイルを読み取り、機密データを外部に流出させることを可能にします。

CVE-2025-66516とは?

CVE-2025-66516は、Apache TikaのPDF解析機能における重大なセキュリティ脆弱性です。埋め込まれたXFAフォームを含むPDFファイルを処理する際、Tika 3.2.2より前のバージョンでは、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 External Entity 攻撃, 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用の専用ディレクトリを作成し、すべてのファイルを整理します。

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

期待される出力: 2つの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パーサーモジュールの両方が期待されるバージョンであることを確認できます。

# tika-core, tika-parser-pdf-module, tika-app のバージョンを 3.2.1 で確認
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

# tika-core, tika-parser-pdf-module, tika-app のバージョンを 3.2.2 で確認
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プロパティが --- で区切られて表示されます。3つのコンポーネント(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

期待される出力: 展開により、逆コンパイルされたクラスファイルを含む2つのディレクトリが作成されます。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スクリプトは、file:///fake-secrets.txt を参照するXXEペイロードを含む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

# 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
ツールをダウンロード