2

システムの Shellshock 脆弱性を悪用しようとして、興味深い問題に遭遇しました。この脆弱性を悪用するために「wget」を使用しています。私が使用しているコマンドは次のとおりです。

wget -U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd" http://somesite.com/some-script.cgi

上記のコマンドを使用すると、脆弱性が予想どおりに表示されます。ただし、.cgi ファイルではないファイルを wget しようとすると、脆弱性は表示されず、ファイルのみがダウンロードされます。

私が理解していることから、 wget は User-Agent 文字列を、コードを実行するコマンドで渡された値に設定する必要があり、/bin/cat /etc/passwdこれがダウンロードされるファイルの性質とどのように関係しているのかわかりません。

前もって感謝します。

4

1 に答える 1

2

シェルショック バグを悪用するには、次の手順を実行する必要があります。

  1. 特定の文字列を環境変数に挿入するには、ターゲット サーバーを取得する必要があります。

  2. 環境変数を設定した後、ターゲットは (脆弱なバージョンの) bashシェルを (直接的または間接的に) 起動する必要があります。

これが発生する 1 つの方法は、Web サーバーがCommon Gateway Interface (CGI)を介して外部プログラムを実行し、その外部プログラムが bash シェル スクリプトであるか、bash を呼び出す場合です。これは、CGI プロトコルが、元の HTTP 要求からのヘッダーがプレフィックスHTTP_( HTTP_USER_AGENTUser-Agent ヘッダーなど) を持つ環境変数で外部プログラムに渡されることを指定しているためです。攻撃者はこれらのヘッダーを制御できるため、これらの環境変数の値を直接制御することもできます。

ただし、Web サーバーがこれらの環境変数を設定する必要があるのは、CGI を介して外部プログラムを呼び出す場合のみです。静的ファイルを配信する場合、サーバーはそのファイルをディスクから読み取ってクライアントに送り返すだけで済みます。環境変数を設定したり、bash などの外部ツールを呼び出したりする必要はありません。

于 2015-11-16T00:19:40.677 に答える