私はいくつかのLinuxサーバーを持っています。これらのサーバーからは、Shellshock攻撃のベクトルに対して脆弱ではありませんが、ログで攻撃がどのように見えるのか知りたいです。成功した攻撃は、appache2ログでどのように見えますか?成功した攻撃はシステムログでどのように見えますか?
失敗した試行はどのように見えますか?シェルショックタイプの攻撃のブラックリストを拡張したいと思います。
これは私の同僚が私のテストマシンに対して何をしたかの私のaccess_logからのエントリです...:
10.11.12.13 - - [25/Sep/2014:16:00:00 -0400] "GET /cgi-bin/testing.cgi HTTP/1.0" 200 1 "-" "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/rm -rf /var/www/"
私のエラーログで、私はこれの多くを見ました:
[Thu Sep 25 16:00:00 2014] [error] [client 10.11.12.13] /bin/rm: cannot remove `/var/www/icons/pie0.png': Permission denied
クソ野郎 :-)
適切に構成されたWebサーバーはログを上書きできません。また、ごくわずかな環境以外では、集中ログを使用して、これらの種類のログエントリが失われないようにする必要があります。
悪用に成功すると、error_logに多数のエラーが表示され、リソースへのアクセス、プログラムの実行、またはファイルの削除に失敗したことが示される場合があります。権限の昇格が成功し、オフサイトのログがない場合は、証拠が表示されない可能性があります。
標準構成のApache Webサーバーと、bashを使用するcgiスクリプトがある場合、リクエストのログエントリは、次の3つのケースで同一に見える可能性があります。
bash
バージョンにアップグレードしたため、攻撃の試みは失敗します。正当な要求を攻撃に変えるために必要な唯一の違いは、環境変数に入れられる要求ヘッダーの1つの変更です。
User-agent
ヘッダーは攻撃を実行するために使用されます。そのヘッダーがログに記録されるため、ログアクセスログに非常によく表示されます。ただし、攻撃を実行するために使用できる他のヘッダーがあり、デフォルトではログに記録されません。
bash
がバグを修正した中間バージョンに更新されたにもかかわらず攻撃の試みが失敗した場合でも、環境から関数を指定できるようにすると、エラーログに警告が表示されます。それらは次のようになります。
[Thu Sep 25 20:46:51.483207 2014] [cgi:error] [pid 26424] [client 10.82.90.125:55631] AH01215: /bin/bash: warning: HTTP_ACCEPT_LANGUAGE: ignoring function definition attempt
[Thu Sep 25 20:46:51.483316 2014] [cgi:error] [pid 26424] [client 10.82.90.125:55631] AH01215: /bin/bash: error importing function definition for `HTTP_ACCEPT_LANGUAGE'
現時点で気づくことができるほとんどのことはプローブであり、ランダムなサーバーをスキャンして攻撃の可能性があるかどうかを調べるため、パッチを適用することをお勧めします。
可能な「攻撃」または少なくともチェックは、次のようになります。
egrep "};|}\s*;" /var/www/logs/access* xxx.xxx.xxx.xxx - -
[25/Sep/2014:12:12:12 +0100] "GET /cgi-sys/defaultwebpage.cgi
HTTP/1.0" 404 168 "-" "() { :;}; /bin/ping -c 1 xxx.xxx.xxx.xxx"
どこ xxx.xxx.xxx.xxx
はIPアドレスです。