ホームページ バックエンド開発 Python チュートリアル ImageMagick コマンド実行の脆弱性の詳細な分析

ImageMagick コマンド実行の脆弱性の詳細な分析

Dec 05, 2016 pm 01:27 PM
imagemagick 注文 抜け穴

00 はじめに

ImageMagickとは何ですか?

ImageMagick は、一般的な JPEG、GIF、PNG、PDF、PhotoCD 形式を含む 90 種類以上の画像ファイルの読み取り、書き込み、処理に使用できる強力なオープンソース グラフィックス処理ソフトウェアです。写真を切り取ったり、回転させたり、合成したり、さまざまな特殊効果を加えて加工することができます。

その強力な機能、優れたパフォーマンス、および多くの言語の拡張サポートにより、プログラム開発で広く使用されています。多くの Web サイト開発者は、ユーザー アバターの生成や画像編集など、Web 上で画像処理作業を行うために ImageMagick 拡張機能を使用することを好みます。

01 脆弱性の説明

ImageMagick は、PHP、Ruby、NodeJS、Python などの複数の言語をサポートするオープンソースの画像処理ライブラリであり、広く使用されています。 PHP imagick、Ruby rmagick と Paperclip、NodeJS imagemagick などの多くの画像処理プラグインは、すべてこれに依存して実行されます。攻撃者が悪意のあるコードを含むイメージを作成すると、ImageMagick ライブラリは HTTPPS ファイルを不適切に処理し、フィルタリングを実行せず、リモートでリモート コマンドを実行し、場合によってはサーバーを制御する可能性があります。

02 インパクト

攻撃コスト: 低い

危険レベル: 高

影響を受ける範囲: ImageMagick 6.9.3-9 より前のすべてのバージョン

03 脆弱性分析

コマンド実行の脆弱性は、ImageMagickがhttps形式のファイルを処理する過程で発生します。

ImageMagick がこれほど多くのファイル形式をサポートしている理由は、ImageMagick がこれらの画像処理ライブラリを「Delegate」(デリゲート) と名付け、各 Delegate が 1 つの形式ファイルに対応しているためです。次に、システムの system() コマンドを通じて処理するために外部ライブラリを呼び出します。外部ライブラリを呼び出すプロセスはシステムのシステム コマンドを使用して実行され、コードがコマンドを実行します。

ImageMagick デリゲートのデフォルト設定ファイル: /etc/ImageMagick/delegates.xml

具体的なコードについては、Github-ImageMagickを参照してください

https 委任行を見つけます:

リーリー
ご覧のとおり、command は https ファイルの処理時に system() 関数に取り込まれるコマンドを定義します: "wget" -q -O "%o" "https:%M"。

wget はネットワークからファイルをダウンロードするコマンドです。%M はプレースホルダーであり、次のように構成ファイルで具体的に定義する必要があります:

リーリー
%m が入力画像形式として定義されていることがわかります。これは、入力した URL アドレスです。ただし、フィルタリングを行わずに単純な文字列の結合のみを実行し、それをコマンド コマンドに直接結合したため、引用符を閉じて、「|」、「`」、「&」などを使用して他のコマンドに引用符を取り込むことができます。 、すなわち、コマンドインジェクションが形成される。

たとえば、次のコードを渡します:

リーリー
システム関数によって実行される実際のコマンドは次のとおりです:

リーリー
このようにして、ls -alコマンドが正常に実行されます。

04 悪用

この脆弱性のPOCは次のように外国人によって提供されました:

リーリー
プッシュとポップはスタック操作に使用され、一方はスタックにプッシュされ、他方はスタックからポップアウトされます。

Viewbox は SVG の表示領域のサイズを表します。または、ステージ サイズやキャンバス サイズとして想像できます。簡単に理解すると、次のパラメータに従って画面の一部を選択することになります。

fill url() は画像を現在の要素に埋め込みます;

その中で、fill url() を使用して脆弱な https デリゲートを呼び出します。ImageMagick がこのファイルを処理すると、脆弱性がトリガーされます。

添付: ImageMagick は、mvg と呼ばれる画像形式をデフォルトでサポートしています。mvg は svg 形式に似ており、ベクトル画像のコンテンツがテキスト形式で書かれており、ImageMagick の他のデリゲート (脆弱なファイルなど) をロードできるようになります。 https デリゲート) 。また、グラフィック処理プロセス中に、ImageMagick はその内容に応じて自動的に処理します。つまり、ファイルを Web サイトのアップロードに許可されている png、jpg、その他の形式として任意に定義できるため、この脆弱性が悪用されるシナリオが大幅に増加します。

利用プロセス:

次の内容を含むexploit.pngファイルを作成します:

リーリー

コマンドを実行:convertexploit.png 1.png (以下はconvertのパラメータです)

05バグ修正 最新バージョンにアップグレード

/etc/ImageMagick/policy.xml を設定して https、mvg デリゲートを無効にするか、対応するデリゲートを設定ファイルで直接削除します

リーリー

上記は、編集者が紹介した ImageMagick コマンド実行の脆弱性に関する知識です。ご質問があれば、メッセージを残してください。編集者がすぐに返信します。スクリプト ハウス Web サイトをサポートしてくださった皆様にも感謝いたします。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11/10でSUDOコマンドを実行する方法 Windows 11/10でSUDOコマンドを実行する方法 Mar 09, 2024 am 09:50 AM

sudo コマンドを使用すると、ユーザーはスーパーユーザー モードに切り替えることなく、昇格された特権モードでコマンドを実行できます。この記事では、Windows システムで sudo コマンドに似た機能をシミュレートする方法を紹介します。修道コマンドとは何ですか? Sudo (「スーパーユーザー do」の略) は、Linux や MacOS などの Unix ベースのオペレーティング システムのユーザーが、通常は管理者が持つ昇格した権限でコマンドを実行できるようにするコマンド ライン ツールです。 Windows 11/10 での SUDO コマンドの実行 ただし、最新の Windows 11 Insider Preview バージョンのリリースにより、Windows ユーザーはこの機能を体験できるようになりました。この新機能により、ユーザーは次のことが可能になります。

Win11 でネットワーク カードの MAC アドレスを確認する方法 Win11 でネットワーク カードの MAC アドレスを取得するコマンドを使用する方法 Win11 でネットワーク カードの MAC アドレスを確認する方法 Win11 でネットワーク カードの MAC アドレスを取得するコマンドを使用する方法 Feb 29, 2024 pm 04:34 PM

この記事では、Win11 システムでコマンド プロンプト (CommandPrompt) を使用してネットワーク アダプターの物理アドレス (MAC アドレス) を確認する方法を読者に紹介します。 MAC アドレスは、ネットワーク通信において重要な役割を果たすネットワーク インターフェイス カード (NIC) の一意の識別子です。コマンド プロンプトを介して、ユーザーは現在のコンピュータ上のすべてのネットワーク アダプタの MAC アドレス情報を簡単に取得できます。これは、ネットワークのトラブルシューティング、ネットワーク設定の構成、その他のタスクに非常に役立ちます。方法 1: 「コマンド プロンプト」を使用する 1. [Win+X] キーの組み合わせを押すか、タスク バーの [Windows ロゴ] を [右クリック] して、表示されるメニュー項目で [ファイル名を指定して実行] を選択します。ウィンドウを実行し、[cmd]コマンドを入力して、

hyperv 拡張セッション モードはどこにありますか? Win11 でコマンドを使用して Hyper-V 拡張セッション モードを有効または無効にするためのヒント hyperv 拡張セッション モードはどこにありますか? Win11 でコマンドを使用して Hyper-V 拡張セッション モードを有効または無効にするためのヒント Feb 29, 2024 pm 05:52 PM

Win11 システムでは、コマンドを使用して Hyper-V 拡張セッション モードを有効または無効にできます。この記事では、コマンドを使用して操作する方法を紹介し、ユーザーがシステム内の Hyper-V 機能をより適切に管理および制御できるようにします。 Hyper-V は Microsoft が提供する仮想化テクノロジであり、Windows Server、Windows 10 および 11 (Home Edition を除く) に組み込まれており、ユーザーは Windows システムで仮想オペレーティング システムを実行できます。仮想マシンはホスト オペレーティング システムから分離されていますが、設定を通じてサウンド カードやストレージ デバイスなどのホストのリソースを引き続き使用できます。重要な設定の 1 つは、拡張セッション モードを有効にすることです。拡張セッションモードはハイパーです

超実用的! Linux マスターになれる Sar コマンド 超実用的! Linux マスターになれる Sar コマンド Mar 01, 2024 am 08:01 AM

1. 概要 sar コマンドは、システムアクティビティから収集されたデータを通じてシステム使用状況レポートを表示します。これらのレポートはさまざまなセクションで構成されており、各セクションにはデータの種類とデータが収集された時期が含まれます。 sar コマンドのデフォルト モードでは、CPU にアクセスするさまざまなリソース (ユーザー、システム、I/O スケジューラなど) の CPU 使用率がさまざまな時間増分で表示されます。さらに、特定の期間におけるアイドル状態の CPU の割合も表示されます。各データ ポイントの平均値はレポートの下部にリストされます。 sar レポートはデフォルトで 10 分ごとにデータを収集しますが、さまざまなオプションを使用してこれらのレポートをフィルタリングおよび調整できます。 uptime コマンドと同様に、sar コマンドも CPU 負荷の監視に役立ちます。 sarにより過負荷の発生が把握できる

Linux のアーティファクト:eventfd の原理と応用 Linux のアーティファクト:eventfd の原理と応用 Feb 13, 2024 pm 08:30 PM

Linux は、パイプ、シグナル、メッセージ キュー、共有メモリなど、多くの効率的なプロセス間通信メカニズムを提供する強力なオペレーティング システムです。しかし、よりシンプルで、より柔軟で、より効率的なコミュニケーション方法はあるのでしょうか?答えは「はい」です、それはeventfdです。 eventfd は Linux バージョン 2.6 で導入されたシステム コールで、イベント通知の実装、つまりファイル記述子を通じてイベントを配信するために使用できます。 eventsfd にはカーネルが保持する 64 ビット符号なし整数カウンタが含まれており、プロセスはこのファイル記述子を読み書きすることでカウンタ値を読み書きし、プロセス間通信を実現します。イベントFDの利点は何ですか?以下のような特徴があります

Linux でサービスを再起動する正しい方法は何ですか? Linux でサービスを再起動する正しい方法は何ですか? Mar 15, 2024 am 09:09 AM

Linux でサービスを再起動する正しい方法は何ですか? Linux システムを使用していると、特定のサービスを再起動する必要がある状況がよく発生しますが、サービスの再起動時に実際にサービスが停止しない、または開始しないなどの問題が発生することがあります。したがって、サービスを再起動する正しい方法を習得することが非常に重要です。 Linux では、通常、systemctl コマンドを使用してシステム サービスを管理できます。 systemctl コマンドは systemd システム マネージャーの一部です

win11 ウィジェットを削除する方法 Windows 11 ウィジェットをアンインストールする 1 つのコマンド機能のヒント win11 ウィジェットを削除する方法 Windows 11 ウィジェットをアンインストールする 1 つのコマンド機能のヒント Apr 11, 2024 pm 05:19 PM

ウィジェットは Win11 システムの新機能で、デフォルトでオンになっていますが、ウィジェットをあまり使用しないユーザーや、スペースを占有するためウィジェットを無効にしたいというユーザーがいることは避けられません。以下のエディターで操作方法が説明されているので、実際に試してみることができます。ウィジェットとは何ですか?ウィジェットは、Windows デスクトップ上のお気に入りのアプリやサービスの動的コンテンツを表示する小さなカードです。これらはウィジェット ボードに表示され、興味を反映するようにウィジェットの検索、固定、固定解除、配置、サイズ変更、カスタマイズを行うことができます。ウィジェット ボードは、使用状況に基づいて関連するウィジェットとパーソナライズされたコンテンツを表示するように最適化されています。タスクバーの左隅からウィジェットパネルを開くと、ライブ天気が表示されます

LSOF を使用してポートをリアルタイムで監視する方法 LSOF を使用してポートをリアルタイムで監視する方法 Mar 20, 2024 pm 02:07 PM

LSOF (ListOpenFiles) は、主に Linux/Unix オペレーティング システムと同様のシステム リソースを監視するために使用されるコマンド ライン ツールです。 LSOF コマンドを使用すると、ユーザーはシステム内のアクティブなファイルと、これらのファイルにアクセスしているプロセスに関する詳細情報を取得できます。 LSOF は、ユーザーが現在ファイル リソースを占有しているプロセスを特定するのに役立ち、それによってシステム リソースの管理が改善され、起こり得る問題のトラブルシューティングが可能になります。 LSOF は強力かつ柔軟であり、システム管理者がファイル リーク、閉じられていないファイル記述子などのファイル関連の問題を迅速に特定するのに役立ちます。 LSOF コマンド経由 LSOF コマンド ライン ツールを使用すると、システム管理者と開発者は次のことを行うことができます。 ポートの競合が発生した場合に、どのプロセスが現在特定のファイルまたはポートを使用しているかを確認する

See all articles