こんにちは、ラウンドナップ・コンサルティングの中山です。今回は、AMに突然やってきたお客さまからのWordPress異常相談、具体的にはクラッキング(いわゆるハッキング)について、注意喚起という意味も込めて、今回問題ない範囲での紹介をしたいと思います。
おかしな大量のバックリンクからわかった、乗っ取り
AMに、顧問契約のお客さまからchatworkでご連絡がありました。
SearchConsoleで自社サイトの外部リンクを見たところ、自社の他のとあるサイトから大量のバックリンクがある。しかも、リンク元ページを見ると知らない海外のサイトが表示される──
嫌な予感がしたので確認した所、やはりといってはなんですがWordPressがクラッキングされて乗っ取られ、ある海外サイトの紹介ページが2,000記事程度生成されていました。
HTMLを見ると、Body部分にiframeを入れて、それ以外の要素を全部覆い隠すようにCSSでセッティングしているようで、そのせいでHTML上では従来のサイドバーが残っていました。
そのサイドバーの中に、自社サイトへのリンクがあったので爆発的にバックリンクが発生していたんですね。
普段触らないサイトだったようで、SearchConsoleの外部リンクから偶然見つけられて幸いでした。純粋に運がよいと思います。
ワードプレスのクラッキング(ハッキング)に至る手口
一体どんな手口で侵入し、大量にページを生成したのか。あまり深く書くと危ないので簡単に書きたいと思います。
- 恐らくBruteForceアタック(総当たり攻撃)でAdminアカウントのパスワードを突き止め、ログイン
- 複数の管理者権限ユーザーを作成
- 管理者権限で適用注テーマファイルの一部、使用していないテーマファイルの一部(デフォルトテーマ)へのコード書き換えとファイルアップロード、及び/wp-include/の中のあるファイルの数行を書き換え
- 書き換えた内容は、何重にもbase64エンコードなどで難読化されている。
- また、もしサーバがセキュリティホールが放置されているサーバであれば、共有サーバ全体のコントロールも奪おうとする(幸い今回は至らなかったようです)ファイルのアップロードやダウンロード、シェルコマンドも外部からうとうとした痕跡
- その上で、大量のページ生成と外部サイトをiframeで呼ぶスクリプトが。管理画面からはわからない形で大量のページが作られていたため、気づけず、また物理ファイルではなくDBを使っているため、手動で消せばいいというものでもない
iframe内で表示されていたサイトは北米のそこそこ中堅サイトで、本当にこの会社が依頼したのか、それとも貶める目的でやっているのか不明のため、名前は伏せます。
問題解決のために行ったこと
そもそもこの時点では、3で書いた問題のファイルが分かりませんでした。発見する際に役立ったのは
- Theme Check プラグイン(これ最高ですね!)
- 生成されたページ内の特徴的なワードでGoogleで検索(なぜかポルトガル語が多かった)
- DreamWeaver(マルチファイル検索ができればなんでも良い)
でした。
取り急ぎテーマを変更。テーマを変えると生成ページが真っ白になり404になるので、テーマ内の問題と判断。
今回問題だったのは、お客さまがどなたかに作ってもらったオリジナルテーマだったたことと、バックアップがなかったため差分が取れなかったことです。必ず皆さんバックアップを取りましょう。
該当テーマファイル内を虱潰しにチェック(地味で長いので省略します)
新規に追加されているファイルは、非常に自然に溶け込むようなファイルでした。しかもWordPressの適用中のテーマではなく、デフォルトテーマ内に本体を置いていたりと、見つからない工夫が満載です。
コードも以下の様な難読化がされています。
Theme Check プラグインは、インストールされているThemeやWordPressコアファイルについて、オリジナルとのDiffを出してくれるのですが、これは最初にやってみることをおすすめします。
オリジナルテーマには使えないのですが、これによって、
- コアファイル内で書き換えられている部分の特定と確認
- オリジナルファイルへの上書き
が簡単に行なえます。素晴らしいです。いつもプラグイン新規追加でトップページに載っているだけあります。
これでオリジナルテーマ以外の問題をFIXし、オリジナルテーマ内の異常部分も手を入れた所、無事全ての生成ページは消えてなくなりました。404を出させておいたので次のクロールでインデックスからも削除されると思います。
※本来はクリーンインストールを推奨します、これが全てではない可能性が高いからです。今回は短期的な対処法についてです。
セキュリティ強化策
この後、セキュリティ強化策としてセキュリティ系プラグインを入れました。また、Adminアカウントを権限なしにし、別のユーザーを作成しそちらを管理者アカウントとして使います。
また、セキュリティ系プラグインによって
- ログインミス時のロックダウン処置
- ログインURLの変更
- CAPTCHA導入(今回ポルトガル語圏の情報が多かったため、日本語を選択)
- その他2プラグインで標準とされているものを導入
- アラートメール実装
また、使っているテーマファイル以外のテーマを削除しました。クリーンインストールの計画も立てます。デフォルトテーマは、セキュリティプラグインによっては入れることを推奨されているのですが、今回のように隠れ蓑にされることもあります。
第一にはブルートフォースアタックで突破されるようなID/PASSWORDにしないことが大事ですが、Wordpressやプラグインに脆弱性があればどうしようもありません、
必ずアップデートは早期に対応、定期的なbackupと、すぐにクリーンインストールの後書き戻せるスタンバイ体制の構築をお勧めします。DBも汚染されていることが多いので、注意です。
ということで、交通事故と同じで「自分は大丈夫」と思ってしまいたちですが、危険は目の前にあると思ったほうが良いです。ビジネス上の損害はもちろんですが、対応費用もやはり相当にかかってしまいます。
弊社では、コンサル対応の一環として追加費用でできるだけすぐの対応を行っています。何かしら皆様も、すぐに頼める業者の宛を探しておくなどをお勧めいたします。
中小企業・小規模事業者の方々に向けて、ウェブの活用やホームページの戦略などについてWebコンサルティング、施策代行実施などを行っている、株式会社ラウンドナップ代表取締役の中山陽平です。中小企業のWeb活用をサポートし、そこからの反響獲得を実現させています。→プロフィール詳細はこちらから