朝、会社の公式サイトを開いたらトップページがギャンブルサイトにリダイレクトされ、Baiduのスナップショットには意味不明なキーワードが並んでいる——こんなことが起きたら、経営者の第一反応はたいてい「すぐ削除しろ」ですが、技術責任者は「削除してもまた来るのではないか」という問題に直面します。サイトの改ざんは、適切に対処しないと繰り返し改ざんされ、検索エンジンでの評価が下がり、顧客からの信頼を失うことになります。この記事では、対応の順序とセキュリティテストでできることを明確に説明します。
まず慌てて再インストールしないこと、何が改ざんされたのかを把握する
改ざんは単一の問題ではなく、よくあるパターンがいくつかあります:
- ページ改ざん:トップページやカテゴリページに隠しリンクやリダイレクトスクリプトが挿入され、ユーザーがアクセスすると外部サイトに誘導される。
- バックドアファイル:攻撃者がwebshellを残し、いつでも再侵入できる状態。ページを削除しても意味がない。
- データベースインジェクション:コンテンツテーブルに大量のスパムリンクが挿入され、通常の管理画面では見えない。
- サーバーレベルのハイジャック:NginxやApacheの設定が変更されたり、cronジョブにダウンロードスクリプトが仕込まれている。
実際の事例:ある機器レンタル企業のサイトが、リニューアルから3ヶ月後に改ざんされました。技術担当者はトップページのリダイレクトコードだけを削除しましたが、1週間後に再発。調査の結果、攻撃者は古いエディタのアップロードインターフェースからバックドアを設置しており、リニューアル時に過去のディレクトリを清理していなかったことが判明しました。表面的な対処だけで入口を処理しなければ、対処したことにはなりません。
したがって、最初のステップは削除ではなく、証拠保全と特定です:まず改ざんされたファイル、ログ、データベースをバックアップし、その後入口がどこにあるかを判断します。
対応順序:隔離、証拠保全、清理、強化
改ざん後のアクションは、以下の順序で進めることを推奨します:
1. 隔離:まずサイトをオフラインにするかメンテナンスページに切り替え、検索エンジンが悪意のあるコンテンツをクロールし続けるのを防ぎ、ユーザーが被害に遭うのを防ぐ。
2. 証拠保全:アクセスログ、エラーログ、変更されたファイルのタイムスタンプを保存する。これらが後で入口を判断する根拠となる。
3. 清理:バックドアを削除し、変更されたファイルを復元し、データベース内のインジェクションコンテンツを清理する。「上書き式」の復元でログまで上書きしないよう注意。
4. 強化:すべての管理画面パスワード、データベースパスワード、サーバーSSHキーを変更し、不要なアップロードインターフェースとディレクトリの実行権限を閉じる。
5. 再検査:1〜2週間観察し、二次再発がないことを確認する。
注意点:管理画面のパスワードを変更するだけで終わらないこと。バックドアが残っていれば、パスワード変更は時間稼ぎに過ぎません。また、多くの企業サイトは外注で制作されており、リニューアル時の引き継ぎが不完全で、過去のディレクトリ、テストファイル、バックアップファイルがサーバーに残っていることがよくあります。これらはよくある侵入経路です。
セキュリティテストで何が検出できるのか
多くの人はセキュリティテストを「脆弱性をスキャンするだけ」と思っていますが、実際には改ざんされたサイトにとって、セキュリティテストの価値は入口と残留物を見つけることにあります。
通常、以下が含まれます:
- 脆弱性スキャン:SQLインジェクション、XSS、ファイルアップロード、弱いパスワードなどの一般的な問題をチェック。
- バックドア調査:ファイルハッシュの照合、異常なwebshellの検索、cronジョブと起動項目のチェック。
- 権限チェック:ディレクトリ権限、データベースアカウント権限、管理画面インターフェースの認証が適切かどうか。
- ロジックテスト:例えば予約ミニアプリで、フロントエンドをバイパスして不正なデータを直接送信できないか;管理システムで、一般アカウントが管理者インターフェースに不正アクセスできないか。
ここで説明しておきたいのは、セキュリティテストは「一度やれば永久に安全」ではないということです。サイト開発、ミニアプリ開発、App開発で新機能がリリースされるたびに、新しいリスクが生まれる可能性があります。現実的なアプローチは、リリース前に一度、大規模なリニューアル後にもう一度実施することです。
企業サイトの日常的な防御、受け身にならないために
改ざんされてから対処するよりも、日常的なアクションをしっかり行う方が良いです:
- プログラムバージョンを最新に保つ:CMS、フレームワーク、プラグインの古いバージョンは被害が集中する。
- 管理画面の入口を絞る:デフォルトパスを変更し、二段階認証を追加し、ログインIPを制限する。
- アップロードディレクトリでスクリプト実行を禁止:これだけでアップロード系バックドアのかなりの部分を防げる。
- 定期的なバックアップと別場所での保管:バックアップは復元できる必要があり、同じサーバー上にだけ置いてはいけない。
- ログの保存:問題発生時、ログがなければほぼ盲目的な調査になる。
企業サイトの場合、静的リソースとメインサイトを分離し、改ざんされた場合の影響範囲を減らすことも検討できます。
どんな場合にMIC Studioに相談すべきか
すべてのケースで外部チームに依頼する必要はありません。ページに数行のコードが挿入されただけで、自分で入口を特定でき、バックドアがないことを確認できれば、自分で対処すれば十分です。
しかし、以下のような場合は、専門チームに依頼した方が効率的です:
- 繰り返し改ざんされ、自分では入口を特定できない;
- サイトがユーザーデータ、注文、決済を扱っており、データ漏洩が心配;
- サイトリニューアルやミニアプリ開発を予定しており、リリース前にセキュリティテストを実施したい;
- 管理システムの権限が複雑で、越権やロジック脆弱性を検証したい。
MIC Studioはサイト開発、ミニアプリ開発、App開発、スクリプト開発を行い、サイトセキュリティテストやリバーステストも手がけています。私たちのアプローチは通常、まず問題を特定し、その後対処案を提示するもので、いきなりサイト全体の作り直しを求めることはありません。
まとめ:すぐにできる3つのこと
1. 今日、一度バックアップを取る:サイトファイル、データベース、ログをそれぞれ別の場所に保存する。
2. アップロードディレクトリと管理画面の入口を確認する:アップロードディレクトリでスクリプトが実行できないこと、管理画面にデフォルトの弱いパスワードがないことを確認する。
3. セキュリティテストを一度実施する:特にリニューアル直後やリリース直後の企業サイトは、問題が起きてからでは遅い。
サイトの改ざんは怖くありません。怖いのは入口がどこかわからないこと、対処してもまた来るかどうかです。順序を正しく並べることが、慌ててページを削除するよりもはるかに役立ちます。
