ワードプレスの改ざん事例で、HTACCESSファイルとIndex.phpファイルがマルウェアを除去しても、一瞬にして再度改ざんされるやっかいなハッキングの事例がございましたのでご紹介いたします。

消しても消しても復活する改ざん

このマルウェアは、サーバーにあるほかのウェブサイトに仕込まれた、バックドアから、サイトにアクセスがある都度、改ざんしたいファイルを調べて改ざんが取り除かれたらすぐに再度改ざんを行ってくるものです。

今回の事例ではHTACCESSファイルとIndex.phpファイルに改ざんを取り除いたと後ほぼ数秒以内に再度改ざんが書き込まれるというやっかいな状態になっておりました。

改ざんを取り除くには?

根本的にこの改ざんを取り除くには、上記の再改ざんを行っているバックドアを取り除き、その後当該サイトのHTACCESSやIndex.phpの改ざんを取り除くことになります。

ただ、バックドアを発見できなかったり、サーバーそのものがハッキングされている場合バックドアであるPHPプログラムが存在しないこともございます。

応急処置として、下記のようなプログラムでHTACCESSとIndex.phpを正規のファイルと同じコードに戻したうえで、パーミッションを書き込み不可にしてしまうことで再度改ざんができないようにしてしまう方法もございます。

<?php

file_put_contents("index.php", "<?php define( 'WP_USE_THEMES', true );require __DIR__ . '/wp-blog-header.php';");
chmod("index.php", 0444);

file_put_contents(".htaccess", "
# BEGIN WordPress
# BEGIN WordPress から END WordPress までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
");

chmod(".htaccess", 0444);

?>

※上記コードを拡張子phpで保存されて、サーバーに設置しアクセスされると同一フォルダにあるワードプレスのHTACCESSとIndex.phpを正規のコードに戻したうえで書き込み不可のパーミッションに設定します。すでに両ファイルの書き込みができないパーミッションになっている場合は前もって両ファイルを書き込み可にされてみてください。

更新 2023年4月13日 
こちらでより確実にindex.phpとHTACCESSを復旧するプログラムと方法を公開しました

ワードプレスのバックドアは、ワードプレスドクター マルウェアチェックプラグインで検出と削除を行いますことが可能です。

WordPress 一瞬で再改ざんされるマルウェアの除去とセキュリティー対策の代行をワードプレスドクターでいたします。お気軽にご相談・ご依頼お送りください