改ざんで挿入されたPHPコードをDreamWeaverと正規表現で削除
目次
ホームページのメンテをしていたら見覚えのないPHPのコードを発見。
$wp_salt,$wp_addfilter,$wp_saltと$wp_が付く変数からしてWordPress絡みで改ざんされたっぽいです。一体どうやって改ざんするのかスゴイなと感心しながら、DreamWeaverで $wp_addfilter = create_function( を検索してみました。
するとWordPressとは関係のない約130個のPHPファイルがヒットしました。
WordPressはたまにアップデートをするくらいで設置してからほとんど使うことはなく放置状態で、挿入されたコードの目的もよくわかりませんが、放置する訳にはいかないので削除することにしました。約130ファイルを手作業で削除することもできますが面倒なので、正規表現で削除することにしました。
ところが正規表現が超苦手で自力で条件を書くことができないのでヒントが無いか検索して以下のコードにたどり着いたのでメモ。たどり着くのに時間がかかったので手作業で削除したほうが早かったかもしれません...。
検索条件(正規表現)
以下の"$md5 = "と数回ある改行を含む一番最初の<?php ~ ; ?>という条件で改ざんコードを削除できました。
うまくいった検索条件
<\?php\r\n\$md5 \= \"(.*\r\n){0,10000}.*?\'\);\r\n\?>\r\n
もっと効率のいい条件があると思いますが、自分にはこの条件を作るのが精いっぱいで、これ以上の説明もうまくできません。
もともと参考にした条件
いろいろ検索して拾ってたき正規表現を使った検索条件です。これは複数回の改行を含む<?php ~ ?>を全部検索対象にするものです。これを元に上記に変更しました。
<\?php(.*\r\n){0,10000}.*?\?>
検索および置換の実行
「正規表現を使用」にチェックを入れて「すべて置換」を押します。
実行した結果、以下のように約130ファイルから改ざんコードをスッキリ削除できました。
置き換え前
改ざんされて先頭行にPHPのコードが挿入されたもの。
置き換え後
挿入されていたコードをすっきり削除できました。