web-dev-qa-db-ja.com

コードインジェクション、コマンドインジェクション、リモートコード実行の違い

これら3つの用語(コードインジェクション、コマンドインジェクション、リモートコード実行)の根本的な違いを説明する必要がある場合、それはどうなるでしょうか。

攻撃を実行するためのアプローチとターゲットマシンでの動作の点で、それらはどのように互いに異なりますか?

5
Khopcha

うーん、試してみましょう:

  • コードインジェクションは、実行可能ファイル/コンパイルユニット/スクリプトを変更して、意図した機能の上に悪意のあるコードが含まれるようにします。コードをローカルに挿入して、インターネット、フォーラム、ニュースサーバーなどにアップロードできます。これは、比較的簡単な悪用方法であり、トロイの木馬に似ています。初期のウイルスはこのように作成され、実行ファイルを共有するユーザーを介して拡散しました。 「キージェネレータ」やその他の違法なソフトウェア、悪名高いWindows sreensavers「.scr」などのデータファイルや、実行可能ではないが実行されるコードをロードできるその他の形式で、これが今日でもおそらく見つかるでしょう。 。

  • コマンドインジェクションは、保護されていないシステムの弱点を利用したIMHOであり、ターゲットシステムを変更または損傷する任意のコマンドの実行を許可します。これは、たとえば、Web URLを介して命令を挿入し、リモートサーバーにそれらを実行させることができます。保護されていないSQL文字列がこれで有名になりました。データベースを破壊したり、基盤となるOSでコードを実行したりする可能性もあります。

  • リモートコード実行は、実際に再び悪意のあるコードを作成することですが、今回はバイナリユニットに接続されておらず、ネットワーク経由で送信されます。コマンドインジェクションとの違いは、悪意のあるコード/スクリプトに加えて、間違った命令を送信してプロセスをクラッシュさせ、そのクラッシュを利用するような、受信プロセスの弱点または障害も必要とする点に見られます。 「クラッシュパケット」と一緒に配信されたコードを実行するハンドラ。最新の「ゼロデイ」エクスプロイトはこのように機能します。

用語はあいまいな方法で使用されていると思うので、他の人はこれが違うと思うかもしれません。

6
flohack

コードインジェクション:悪意のあるアプリケーションが脆弱性を使用して、既に実行されているアプリケーションを悪用し、悪用されたアプリケーションに悪意のあるコードを挿入した場合。実行のパスを変更します。

コマンドインジェクション:システムへのあるタイプの入力を使用してsystemコマンドを実行する場合。これは、入力が適切にサニタイズまたはチェックされていない場合に発生する可能性があります。ウィキペディアには 良い例 があります

リモートコード実行:コードがシステム上で必要な任意の命令を実行できる場合。そこには多くの脆弱性がありますが、それらのすべてがシステムで任意のコードを実行することを攻撃者に許可するわけではありません。リモートでコードが実行されることは、システムを悪用する最後のステップです。

それらをすべて組み合わせるため。 脆弱性は、リモートコード実行を得るためにコードまたはコマンドインジェクションを実行するシステムを悪用するために使用されます。しないことに注意してくださいリモートコード実行を得るためにコード/コマンドインジェクションが必要。これらは、悪意のあるコードがどのように使用されるかを示す単なる例です。

1
RoraΖ