緊急PHPに致命的な脆弱性(CVSS 9.2)。エックスサーバーが告知を更新。利用者のサーバーに緩和策を順次適用、修正版の公開後は各PHPバージョンに適用予定最新情報 ›
無料で相談する

Webサイトが乗っ取られていないか確かめる方法|パッチ適用後にやる侵害チェック

公開:10/21 21:23更新 10/21 21:23(日本時間)Webセキュリティ診断センター 編集部
#php2shell#PHP#WordPress#不正アクセス
この記事の要点
  • PHP を修正版に更新しても、更新前に入り込まれていた場合、その跡は残ったままです。更新のあとに、乗っ取られていないかを確かめます。
  • 見る場所は、Web の公開フォルダの見覚えのないファイル、WordPress の管理者、cron(定期実行)、PHP から起動されたコマンド、アクセスログの5つです。
  • 確認は「見るだけ」で行います。ネットに出回る攻撃コード(PoC)や出どころの分からない検査スクリプトは実行しません。
  • 怪しいものを見つけたら、消す前に切り離し・ログの保全・記録を行い、そのあとでパスワードなどを変えます。相談先は IPA・JPCERT/CC・警察です。

なぜパッチのあとに確認が必要なのか

PHP の脆弱性「php2shell」(CVE-2026-109618 / CVE-2026-109619)の修正版は、2026年10月21日 23:00(日本時間)に公開される予定です[php.net]。この記事は公開前の 21日夜に書いています。脆弱性の概要はphp2shell の解説記事をご覧ください。

修正版に更新すると、その脆弱性を使ったこれからの攻撃は防げます。ただし、更新より前に攻撃を受けて、サーバーに裏口のファイルを置かれていた場合、そのファイルは更新後も残ります。海外の一部のセキュリティ企業は、修正版の公開前から攻撃の報告があったとしています[Patchstack]。一方で IPA は「悪用は確認していない」としており、情報は分かれています。

実際に入り込まれたかどうかは、サイトごとに確かめるしかありません。重点的に見るのは、情報が漏れた 10月20日ごろから、修正版に更新するまでの期間です。

パッチ適用後の侵害チェックの流れ。修正版に更新、実際の版を確認、痕跡を探す、結果で分ける、の4段階
図1 パッチ適用後の侵害チェックの流れ

公式の手引きと、セキュリティ企業の情報の違い

この記事では、出典を次の2つに分けて書いています。

区分出典この記事での使い方
公式・公的機関IPA、JPCERT/CC、個人情報保護委員会、警察庁、WordPress.org の公式ドキュメント改ざん・不正アクセス全般の確認と初動、届出の手順
セキュリティ企業(二次情報)Huntress、SOCRadar、abgeo.devphp2shell に特有の痕跡(PHP から起動されるコマンドなど)

21日夜の時点で、php2shell の公式の痕跡情報(IoC:攻撃に使われたファイル名や通信先などの目印)は出ていません。Huntress も IoC の欄を「未定」としています[Huntress]。JPCERT/CC のサイトにも、PHP についての注意喚起はまだ出ていません。以下の確認ポイントのうち php2shell に特有のものは、セキュリティ企業の見立てにもとづいています。

確認を始める前に

  1. 修正版が実際に動いているか確かめる:ファイルを更新しても、古い PHP-FPM(PHP を動かし続けるプロセス)が残っていると修正は効きません。更新後は PHP-FPM か Web サーバーを再起動し、Web 側で動いている PHP のバージョンを確認します。コマンドの php -v と Web 側の PHP は別のことがあるため、php -v だけでは判断しません[abgeo.dev・SOCRadar]。
  2. 確認は「見るだけ」にする:ファイルを消したり直したりするのは、全体を見終わってからにします。先に消すと、いつ・どこから入られたかを調べる手がかりもなくなります。
  3. 出どころの分からないコードは実行しない:「php2shell の検査ツール」「PoC」を名乗るものがネット上にありますが、偽物やマルウェア入りの可能性があります[abgeo.dev・Patchstack]。

以下のコマンド例は、どれも中身を表示するだけで、サーバーの状態を変えません。パス(/var/www/html など)はサーバーによって違うので、自社の環境に合わせて読み替えてください。レンタルサーバーでコマンドが使えない場合は、管理画面のファイルマネージャーや FTP ソフトで、更新日時の新しい順に並べて確認できます。

見覚えのないファイル(Webシェル)を探す

Webシェルとは、ブラウザからサーバーを操作できるようにするために、攻撃者が置くプログラムです。PHP のサイトなら、多くは .php のファイルとして置かれます。Huntress と SOCRadar は、侵害が疑われるときは Web の公開フォルダに Webシェルや新しいファイルがないかを探すよう勧めています。見るポイントは次の3つです。

コマンドで確認する場合の例です(表示するだけです)。

# 公開フォルダで、最近2日以内に変更された .php ファイルを一覧表示
find /var/www/html -name "*.php" -mtime -2 -ls

# アップロード用フォルダにある .php ファイルを一覧表示
find /var/www/html/wp-content/uploads -name "*.php" -ls

# 公開フォルダ直下のファイルを、更新日時の新しい順に表示
ls -lat /var/www/html | head -30

-mtime -2 の数字は「何日前まで」を表します。更新までの日数に合わせて変えてください。ただし、更新日時は攻撃者が書き換えられるため、日時が古いから安全とは言い切れません。バックアップがある場合は、10月20日より前のバックアップとファイルの一覧を比べる方法もあります。

WordPress の管理者を確かめる

WordPress の管理画面で「ユーザー」→「権限グループ:管理者」に絞り込み、見覚えのないアカウントがないかを見ます。IPA の「安全なウェブサイトの運用管理に向けての20ヶ条」も、不要なアカウントが登録されていないかを確認項目にしています。

WordPress.org の公式ドキュメントは、新しいユーザーが勝手に作られることを、乗っ取りのはっきりした兆候の1つとして挙げています。サーバーのアカウント(SSH で入れるユーザー)や、レンタルサーバーの FTP アカウントも、あわせて確認します。

cron(定期実行)を確かめる

cron は、決まった時刻にコマンドを自動で実行する仕組みです。攻撃者は、裏口を消されても再び入れるように、cron に命令を登録することがあります。Huntress・SOCRadar・abgeo.dev はいずれも、新しく登録された cron を確認項目に挙げています。

# 自分のユーザーの cron を表示
crontab -l

# Web サーバーのユーザー(例:www-data)の cron を表示(管理者権限が必要)
sudo crontab -l -u www-data

# システム全体の cron の設定ファイルを一覧表示
ls -la /etc/cron.d /etc/cron.daily /etc/cron.hourly

見覚えのない登録や、外部のサーバーから何かを取ってきて実行するような命令(curl や wget を含むもの)があれば要注意です。レンタルサーバーでは、管理画面の「cron 設定」などの画面で確認できます。

PHP から不審なコマンドが動いていないか

ここは php2shell に特有の確認ポイントで、出典はセキュリティ企業です。Huntress は、悪用は「PHP が起動した不審な子プロセス」として現れる可能性が高いとしています。

abgeo.dev は、ふつうの PHP アプリが bash や curl を子プロセスとして起動することはほとんどない、と書いています。今動いているプロセスは、次のように表示できます。

# プロセスを親子関係つきで表示し、PHP・Web サーバーの周辺を見る
ps -ef --forest | grep -E -A3 "php-fpm|apache2|httpd"

ただし、ps で見えるのは「今」動いているものだけです。過去に実行されたコマンドを追うには、EDR(サーバーの動きを記録するセキュリティ製品)や監査ログが必要になります。レンタルサーバーではこの確認はできないことが多いので、サーバー会社の告知を確かめてください。

アクセスログの見方

アクセスログは、誰がいつどのページにアクセスしたかの記録です。JPCERT/CC は Web サイト改ざんの注意喚起で、ログを見てアクセス元の IP アドレスや日時に不審な点がないかを確認するよう求めています。IPA も、Web サーバーのログを保管して定期的に確認することを勧めています。

中小企業の Web 担当者でも見つけやすいのは、次のようなアクセスです。

# 見つけたファイル名(例:xxx.php)へのアクセスを探す
grep "xxx.php" /var/log/apache2/access.log

# POST のアクセスだけを表示(最後の50行)
grep '"POST ' /var/log/nginx/access.log | tail -50

IPA はアクセスログから攻撃の痕跡を探すツール「iLogScanner」を公開しています。ただし、php2shell 向けの検出に対応しているかは、21日夜の時点では確認できていません。ログの場所はサーバーによって違い、レンタルサーバーでは管理画面からダウンロードする形が一般的です。ログは一定期間で消えることがあるので、10月20日以降の分は早めに手元に保存しておきます。

確かめる場所と見るポイントのチェックリスト。Webの公開フォルダ、WordPressのユーザー、cron、PHPのプロセス、アクセスログ
図2 確かめる場所と見るポイント

見つけたときの初動

怪しいものを見つけても、すぐには消さないでください。先に消すと「いつ・どこから・何をされたか」が分からなくなり、情報が漏れたかどうかも判断できなくなります。IPA の「中小企業のためのセキュリティインシデント対応の手引き」は、対応を「検知・初動対応」「報告・公表」「復旧・再発防止」の3段階に分け、初動対応のなかで証拠保全を挙げています。

  1. 切り離す:サイトの公開を止める、またはサーバーをネットワークから切り離します。侵害の兆候があればまずサーバーを隔離する、というのは Huntress と SOCRadar の勧めでもあります。レンタルサーバーなら、サーバー会社に連絡して相談します。
  2. ログを残す:Web サーバーと PHP のログを、サーバーとは別の場所にコピーします[Huntress・SOCRadar]。見つけたファイルも消さずに残します。
  3. 記録する:気づいた日時、何を見てそう思ったか、誰が何をしたかをメモします。WordPress.org の公式ドキュメントでも、最初の手順は記録です。
  4. パスワードや鍵を変える:データベース、FTP / SFTP、WordPress の管理画面、サーバーの管理画面のパスワードを変えます。サーバーに置いていた API キーやクラウドの認証情報も変えます。WordPress は、wp-config.php の秘密鍵を新しくすると、ログイン中のユーザーを全員ログアウトさせられます[WordPress.org]。
  5. きれいにしたあと、もう一度パスワードを変える:WordPress.org の公式ドキュメントは、発見時に変えた場合でも、裏口を取り除いたあとに再度変えるよう求めています。

パスワードの変更は、なるべくサーバーとは別の、安全な端末から行います。JPCERT/CC の注意喚起では、サイトの更新に使っている PC がマルウェアに感染していないかも確認項目に入っています。

やってはいけないこと
  • 見つけたファイルを確認せずに消す、サーバーを初期化する(証拠がなくなります)
  • 「php2shell 検査ツール」などの、出どころの分からないコードを実行する
  • 侵害が疑われるサーバーの上で、そのままパスワードを変える
怪しいものを見つけたときの初動。切り離す、ログを残す、記録する、パスワード等を変更。相談・届出先はIPA、JPCERT/CC、警察、個人情報保護委員会
図3 見つけたときの初動と相談・届出先

相談・届出先

IPA の手引きは、ウイルスや不正アクセスの被害、個人情報の漏えいは関係機関への届け出が必要になるとしています。主な窓口は次のとおりです。

窓口どんなときに
IPA「不正アクセス特別相談窓口(事業者向け)」不正アクセスの被害を受けている、またはその可能性がある企業・組織の相談。状況を聞いたうえで、応急処置の案を助言してくれます
IPA「コンピュータ不正アクセス届出」不正アクセスの被害の届出。分かっている範囲でよく、未遂で実害がなかった場合も受け付けています
JPCERT/CC「インシデント対応依頼」技術的なインシデント対応の依頼。Web フォームかメールで受け付け、電話は原則受け付けていません
警察(各都道府県警察のサイバー犯罪相談窓口)被害届を出すとき。オンラインの受付窓口もあります
個人情報保護委員会個人データが漏えいした、またはそのおそれがあるとき

個人情報保護委員会は、不正の目的で行われたおそれがある漏えい等(そのおそれを含む)を報告の対象にしています。不正アクセスによるものは、これに当たる可能性があります。報告は、まず発覚から3〜5日以内に速報、そのあと確報です。確報の期限は通常30日以内で、不正の目的によるおそれがある場合は60日以内です[個人情報保護委員会]。お問い合わせフォームの送信内容や会員情報をサーバーに保存していた場合は、早めに確認してください。

異常がなかった場合

確認した日時と、見た場所・結果を記録しておきます。後で別の情報が出たときに、どこまで確認済みかがすぐに分かります。公式の IoC が出たら、それをもとにもう一度確認してください。

確認や復旧をWebセキュリティ診断センターに頼むこともできます
サーバーのファイルやログの確認、WordPress の管理者・cron の点検、侵害が見つかったときの切り離しと復旧の段取りまでお手伝いします。無料相談はこちら

参考にした情報

貴社のサイトに合った対応をご案内します!
まずは、お気軽にご相談ください。

お問い合わせ・お見積りはこちら
無料で相談する最新情報を見る