WordPress
改竄

[wordpress]index.phpが改ざんされて無関係のページにリダイレクトされる

友人が運営するwordpressサイトがハッキングされていました。

ざっと調べたところよくある問題のようです。どのサイトでも発生する可能性があると思われるので、そのサイトの情報は伏せた上で、症状と対処を共有しておきます。

security - My site is infected with obfuscated PHP malware - what is it doing + how do I get rid of it? - Stack Overflow

どういう経路で改ざんされたか未特定なので対症療法的な対処です。(なんらかの脆弱性を突かれたとした場合、そこを塞ぐのが根本対応となります)


環境


  • PHP 5.6.40

  • WORDPRESS 4.9.10

  • さくらレンタルサーバ


症状

そのサイトにアクセスすると「時々」、無関係なページ(多くはショッピングサイト)にリダイレクトされる。


原因

index.phpwp-settings.phpが改ざんされて、不正なコードが実行されるようになっていました。

具体的には、以下のようなコードがファイルの先頭(<?phpの後)に挿入されています。(include命令のハイフンは実際には存在しません)


index.php

/*5cadc*/

@i-nclude "\057ho\155e/\...中略.../.\0671b\143bc\1452.\151co";

/*5cadc*/



wp-settings.php

@include "\057h\157m\145/\...中略...\157r\057.\0671\142c\142d\1453\056i\143o";


このコードをデコードすると、以下のようになります。

@i-nclude /home/...中略.../.71bcbce2.ico

@i-nclude /home/...中略.../.45f02abd.ico

この .71bcbce2.ico ファイルは実際はPHPファイルでevalを含むコードが記載されていて、これによりリダイレクトしているようです。

phpタグではじまる難読化されたコード 

e-val(rawurldecode($_b6zpgi5) ^ substr(str_repeat($_tzdfh, (strlen($_b6zpgi5)/strlen($_tzdfh)) + 1), 0, strlen($_b6zpgi5)));

続く


対処

index.phpに挿入されたコードを削除すればリダイレクトされてしまう問題は解消されます。

icoファイルも削除します。

サイトの最上位ディレクトリで以下のコマンドを実行して、他にも同様の改ざんがないか確認します。

find . -name '*.php' | xargs grep 151co

find . -name '*.php' | xargs grep 143o

繰り返しになりますが、これは対症療法であり根本的には脆弱性をふさぐ必要があります。


追記

改ざん・生成されたファイルの多くはWordfenceプラグインのScanで検出されますが、icoファイルは検索対象外のようで検出されませんでした。

icoファイルを探して、一つづつ確認したほうがよさそうです。

find . -name '*.ico'