WordPressサイトの乗っ取り、年に何件も相談されてきた話
※本記事にはプロモーション(広告リンク)が含まれています。
「サイトの様子がおかしいので見てもらえませんか」——この種の相談が、私のところには年に5件ほど来ていました。開いてみると、だいたい乗っ取られています。ほぼすべてWordPressのサイトです。
先に書いておくと、この記事はWordPressを叩くためのものではありません。WordPressは今も優れたCMSですし、私も長く使ってきました。ただ、乗っ取りの相談を受け続けてきた立場から、どう見つかるのか、直せるのか、何が共通していたのかを知っておいてもらうと、防げる被害がかなりあると思うので、まとめておきます。
乗っ取りは、こうやって見つかる
相談のきっかけで多かったのは、こういうパターンです。
- 下層ページが、勝手に別サイトへ飛ばされる。トップページは普通なのに、下層を開くと海外のオークションサイトのような偽通販ページにリダイレクトされる
- 下層ページが、まったく別のサイトになっている。自社のページだったはずのURLに、知らない商品ページが表示される
- 見た目は普通でも、中を調べるとバックドア(再侵入用の裏口ファイル)や、知らないアフィリエイトリンクが仕込まれている
厄介なのは、トップページだけは無事なことが多い点です。管理者は自分のサイトのトップしか見ないので、下層が汚染されていても気づかない。Googleの検索結果や、お客さんからの「変なページに飛ぶんだけど」という連絡で初めて発覚する、というケースがよくありました。
心当たりがある方は、検索結果で site:自社ドメイン を見てみてください。身に覚えのないページが大量に出てきたら、疑ったほうがいいです。
復旧できるのか——実際のところ
ケースによります。分かれ目は、バックアップの有無と、サーバーの中に何サイト入っているかです。
復旧しやすいケース:1サーバー1サイト+バックアップあり
サーバーにそのサイトしか入っておらず、バックアップが残っていれば、復旧は比較的スムーズです。汚染される前の時点のデータに戻して、侵入経路(後述)を塞げばいい。
たとえばエックスサーバーのように、自動で毎日バックアップを取ってくれるサーバーであれば、こちらで何もしていなくても過去のデータから戻せます。データはバックアップ時点まで巻き戻りますが、失う更新は直近の数日分。乗っ取られたサイトを前に途方に暮れる状況と比べれば、確実に立て直せます。復旧の場面を何度も見てきた身としては、この「勝手にバックアップされている」は本当に大きいです。
復旧が難しいケース:1サーバーに複数サイト+全部汚染
問題は、1つのサーバー契約の中に何サイトも同居していて、全部が汚染されている場合です。
このパターンでは、1サイトを掃除しても直りません。隣のサイトに残った汚染から再感染するからです。マルウェアの発見と削除を繰り返しても、いたちごっこになる。私が対応したケースでは、最終的にサーバー内の全データを削除して、無事な時点のバックアップから丸ごと作り直すしかありませんでした。
これは実は、セキュリティの世界では知られた話で、同居しているサイト同士は権限的に地続きなので、1つ破られると横に広がります(クロスコンタミネーションと呼ばれます)。使っていない古いWordPressをサーバーの隅に放置しているだけで、それが入口になって本命のサイトがやられる、ということが実際に起きます。
だから私の意見としては、重要なサイトはサーバー契約ごと分けるのがおすすめです。コストは増えますが、「1つやられたら全部やられる」構造を最初から断てます。少なくとも、使っていない古いサイトやテスト環境をサーバー内に放置するのは、今日やめたほうがいい。
乗っ取られたサイトに共通していたこと
相談されたサイトには、傾向がありました。
- すべてWordPressだった。静的サイト(HTMLだけのサイト)の乗っ取り相談は、私のところには一度も来たことがありません
- ログインURLがデフォルトの
/wp-adminのままだった /author/1のようなURLでログインID(ユーザー名)が外から見えてしまう状態だった
3つ目は少し補足します。WordPressは初期設定のままだと、投稿者アーカイブのURLからユーザー名が推測できてしまいます。攻撃側から見ると、ログイン画面の場所は分かっている、ユーザー名も分かっている、となれば、あとはパスワードを機械的に総当たりするだけです。パスワードの強度まではこちらでは分かりませんが、条件としてはかなり揃ってしまっていたと言えます。
逆に言えば、ログインURLの変更、ユーザー名を隠す、ログイン試行の制限、二段階認証、そして本体・プラグインの更新。この基本を揃えるだけで、狙われにくさは大きく変わります。特別な技術ではなく、設定の話です。
自分のサイトもやられた話
偉そうに書いていますが、私自身も被害に遭っています。
以前、当時使っていたレンタルサーバーが改ざんされ、中に入れていた4つのサイトがすべて壊れました。まさに上で書いた「同居サイト全滅」のパターンを、自分で食らったわけです。あのとき、WordPressのログイン通知や不正アクセスの通知が来るたびに、心臓に悪い思いをしていました。
この一件のあと、自社サイトはWordPressをやめて、Astroという仕組みで作った静的サイト+Cloudflareの構成に移行しました。管理画面もデータベースも持たない構成なので、そもそも乗っ取る入口がほぼありません。移行の詳細は別の記事に書きましたが、移行後、あの通知に怯える生活は終わりました。
ただし、これは万能の答えではありません。更新頻度の高いサイトや複雑な機能を持つサイトは、WordPressのままのほうが合理的なことも多い。その場合は、上に書いた基本の対策と、バックアップ体制をきちんと整える。サイトの性質によって、守り方を選ぶ話だと思っています。
まとめ
- 乗っ取りは下層ページから発覚することが多い。
site:自社ドメインでの検索を一度試してほしい - 復旧の分かれ目はバックアップとサーバーの同居状況。自動バックアップのあるサーバーは強く、同居サイトの全滅は最悪のパターン
- 重要なサイトはサーバーを分ける。放置サイトは削除する
- ログインURL・ユーザー名・更新、基本の設定だけで狙われにくさは変わる
- 更新が少ないサイトなら、静的化して入口ごとなくすという選択肢もある
「うちのサイト、大丈夫かな」と思った方は、まず今のサーバーのバックアップ設定を確認するところからで大丈夫です。それだけで、最悪の事態は避けられます。
納品して終わりではありません。サイト公開後も相談できる制作者をお探しの方は、まずはお話をお聞かせください。