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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2017-8291 — CVE-2017-8291(GhostButt)のエクスプロイトを、Python PIL/PillowのEPS画像処理を介して実演するDockerベースのラボ。脆弱なWebアプリケーションと概念実証のエクスプロイトを含みます。 | Kitploit
ツール/GitHubGitHub/shun1403/cve-2017-8291
脆弱性分析エクスプロイトウェブアプリケーション悪用CTF学習と教育ラボと実践
GitHubshun1403/cve-2017-8291

CVE-2017-8291

CVE-2017-8291(GhostButt)のエクスプロイトを、Python PIL/PillowのEPS画像処理を介して実演するDockerベースのラボ。脆弱なWebアプリケーションと概念実証のエクスプロイトを含みます。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Python PIL/Pillow リモートコマンド実行 (GhostButt / CVE-2017-8291)

中文版本(Chinese version)

Python PIL (Pillow) は、Python 用の一般的な画像処理ライブラリです。さまざまな画像形式をサポートし、強力な画像操作機能を提供します。

Python 画像処理モジュール PIL (Pillow) は、内部で GhostScript を呼び出して EPS 画像を処理するため、GhostButt 脆弱性 (CVE-2017-8291) の影響を受けます。この脆弱性により、攻撃者はターゲットシステム上で任意のコマンドを実行できます。

PIL が画像を処理するとき、ファイルヘッダー(マジックバイト)に基づいて画像タイプを判別します。EPS ファイル(%!PS で始まるヘッダー)を識別すると、ファイルを PIL/EpsImagePlugin.py に渡して処理します。

このモジュールでは、PIL はシステムの GhostScript コマンド (gs) を呼び出して画像ファイルを処理します:

root@kitploit:~
command = ["gs",
            "-q",                         # quiet mode
            "-g%dx%d" % size,             # set output geometry (pixels)
            "-r%fx%f" % res,              # set input DPI (dots per inch)
            "-dBATCH",                    # exit after processing
            "-dNOPAUSE",                  # don't pause between pages,
            "-dSAFER",                    # safe mode
            "-sDEVICE=ppmraw",            # ppm driver
            "-sOutputFile=%s" % outfile,  # output file
            "-c", "%d %d translate" % (-bbox[0], -bbox[1]),
                                            # adjust for image origin
            "-f", infile,                 # input file
            ]

# Code to check if GhostScript is installed is omitted
try:
    with open(os.devnull, 'w+b') as devnull:
        subprocess.check_call(command, stdin=devnull, stdout=devnull)
    im = Image.open(outfile)

-dSAFER フラグが設定されている(セーフモード)にもかかわらず、GhostScript のサンドボックスバイパス脆弱性 (GhostButt CVE-2017-8291) により、この安全機構が回避され、任意のコマンド実行が可能になります。

本稿執筆時点では、最新の公式 GhostScript バージョン 9.21 でさえ、この脆弱性の影響を受けます。そのため、オペレーティングシステムに GhostScript がインストールされている限り、PIL はコマンド実行に対して脆弱です。

参考文献:

  • Python PIL モジュールのコマンド実行脆弱性の悪用
  • CVE-2017-8291 の詳細
  • GhostScript セキュリティアドバイザリ

環境構築

以下のコマンドを実行して、CVE-2017-8291 脆弱性に対して脆弱な Web アプリケーションを起動します:

root@kitploit:~
docker compose up -d

起動後、http://your-ip:8000/ にアクセスしてアップロードページにアクセスします。

脆弱性の悪用

このアプリケーションの通常機能では、ユーザーは PNG ファイルをアップロードできます。バックエンドは PIL を使用して画像を読み込み、その寸法を出力します。しかし、実行可能な EPS ファイルの拡張子を PNG に変更してアップロードすることで、これを悪用できます。バックエンドは拡張子ではなくファイルヘッダーに基づいて画像タイプを判別するため、ファイル拡張子チェックをバイパスできます。

例えば、poc.png をアップロードすると、サーバー上で touch /tmp/aaaaa コマンドが実行されます。POC 内のコマンドをリバースシェルコマンドに変更することで、サーバーへのシェルアクセスを取得できます:

脆弱性の悪用

ツールをダウンロード