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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-29780 — 公式のeml-parserサンプルスクリプトにおけるパストラバーサル脆弱性を実証し、細工された添付ファイル名を介して任意のファイル書き込みを可能にします。PoCと修正を含みます。 | Kitploit
ツール/GitHubGitHub/redyank/cve-2026-29780
静的分析脆弱性分析コード分析エクスプロイトウェブセキュリティ
GitHubredyank/cve-2026-29780

CVE-2026-29780

公式のeml-parserサンプルスクリプトにおけるパストラバーサル脆弱性を実証し、細工された添付ファイル名を介して任意のファイル書き込みを可能にします。PoCと修正を含みます。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

公式サンプルスクリプトにおけるパストラバーサルによる任意ファイル書き込み

概要

公式サンプルスクリプト examples/recursively_extract_attachments.py には、意図した出力ディレクトリの外部への任意ファイル書き込みを可能にするパストラバーサル脆弱性が存在します。解析されたメールから抽出された添付ファイル名は、サニタイズ処理なしで出力ファイルパスの構築に直接使用されるため、攻撃者が制御したファイル名が対象ディレクトリから脱出できる可能性があります。

詳細

ファイル: examples/recursively_extract_attachments.py 行: 61–64

root@kitploit:~
for a in m['attachment']:
    out_filepath = out_path / a['filename']  # No sanitization
    print(f'\tWriting attachment: {out_filepath}')
    with out_filepath.open('wb') as a_out:
        a_out.write(base64.b64decode(a['raw']))

a['filename'] の値は、細工されたメールの添付ヘッダーによって攻撃者が制御できます:

root@kitploit:~
Content-Disposition: attachment; filename="../outside/pwned.txt"

書き込み前にパス正規化や境界検証は実行されません。

PoC

  1. 悪意のある .eml ファイルを作成します:
root@kitploit:~
Content-Disposition: attachment; filename="../outside/pwned.txt"
  1. サンプルスクリプトを実行します:
root@kitploit:~
python recursively_extract_attachments.py -p ./emails -o ./safe
  1. 期待される結果: ./safe/pwned.txt
  2. 実際の結果: ./outside/pwned.txt ← 意図したディレクトリの外部に書き込まれる

Kali Linux 上で、仮想環境に pip でインストールした eml-parser を使用して検証済みです。

影響

この脆弱性はサンプルスクリプトのみに限定され、コアの eml-parser ライブラリには影響しません。ただし、このスクリプトは公式リポジトリの一部であり、本番環境での使用に適応される可能性が高いため、細工されたメールを供給する攻撃者は実行コンテキスト内で任意のファイル書き込みを達成できる可能性があります。

潜在的な攻撃シナリオには以下が含まれます:

  • Cron ジョブインジェクション: filename="../../etc/cron.d/backdoor"
  • Web シェルアップロード: filename="../../var/www/html/shell.php"
  • SSH キーインジェクション: filename="../../home/user/.ssh/authorized_keys"

推奨される修正

root@kitploit:~
import os.path

for a in m['attachment']:
    filename = os.path.basename(a['filename'])
    out_filepath = out_path / filename

    if not out_filepath.resolve().is_relative_to(out_path.resolve()):
        print(f'[!] Skipping suspicious filename: {a["filename"]}')
        continue

    print(f'\tWriting attachment: {out_filepath}')
    with out_filepath.open('wb') as a_out:
        a_out.write(base64.b64decode(a['raw']))
ツールをダウンロード