1. ホーム
  2. ブログ
  3. PHP2Shell

PHP2Shell で攻撃されたか確かめる|ログで見る所(JPCERT/CC の注意喚起より)

公開
著者
編集部

修正版に上げても、それより前に入り込まれていたら何も直らない。JPCERT/CC の注意喚起と各社の分析をもとに、アクセスログ・エラーログ・サーバーの中で確かめる所をまとめた。

この記事の流れ約25秒
この記事で分かること

PHP2Shell で攻撃されたか確かめる|ログで見る所(JPCERT/CC の注意喚起より)

  • 見る所は4つ。アクセスログ・PHP のエラーログ・Web サーバーのログ・サーバーの中
  • いちばん強い証拠は、Web のワーカーがシェルを起動していること
  • HTTP 200(成功)が返っていても、無害とは限らない
  • 何も見つからなくても「攻撃されていない」とは言い切れない
1 / 4

まず、上げたあとでも確かめる理由

修正版で入口はふさがる

ここを読む
PHP を上げて直ること・直らないこと
2 / 4

ログで見る所

ここを読む
攻撃されたか確かめるとき、ログで見る所
3 / 4

レンタルサーバーの場合

レンタルサーバーでは、サーバーのログを自分で全部見られないことが多い

  • アクセスログ・エラーログ:サーバーの管理画面(ログの保存を有効にしていれば)
  • 知らないファイル:ファイルマネージャーや FTP で、更新日時の新しいもの
  • WordPress の管理者・プラグイン:WordPress の管理画面
ここを読む
4 / 4

見つかったら

  • 証拠を残す:ログやファイルを、消す前に別の場所にコピーする
  • 広げない:サイトを一時的に止める、外への通信を絞るなど、影響が広がらないようにする
  • 範囲を調べる:いつから、どこまで入られたか
ここを読む

PHP2Shell は、修正版が出る前に中身が漏れていた。修正版に上げれば、これからの攻撃は防げる。しかし、上げる前に入り込まれていたら、上げただけでは何も直らない。

JPCERT/CC は注意喚起の中で、更新とあわせて「侵害の調査」を求めている。何を見ればよいのかを、JPCERT/CC の注意喚起と、セキュリティ会社の分析をもとにまとめた。

この記事の要点
  • 見る所は4つ。アクセスログ・PHP のエラーログ・Web サーバーのログ・サーバーの中
  • いちばん強い証拠は、Web のワーカーがシェルを起動していること
  • HTTP 200(成功)が返っていても、無害とは限らない
  • 何も見つからなくても「攻撃されていない」とは言い切れない

まず、上げたあとでも確かめる理由

PHP を上げて直ること・直らないこと
PHP を上げて直ること・直らないこと

修正版で入口はふさがる。ただし、入口から入って置いていかれたもの(不正なファイル・追加された管理者・書き換え)は残る。だから、更新とは別に「中を確かめる」作業が要る。

ログで見る所

攻撃されたか確かめるとき、ログで見る所
攻撃されたか確かめるとき、ログで見る所

1. アクセスログ

  • 異常に大きい送信:フォームの項目の名前だけで数 MB あるような送信(CVE-2026-109618 の手口)
  • 不審な multipart/form-data の送信:ファイルを送る形式で、中身が意味をなさないもの(CVE-2026-109619 の手口)
  • 変な PHPSESSID:サーバーが返した Cookie の PHPSESSID が、異常に長い・変な形をしている
  • 前後の HTTP 500:上の送信の前後に、サーバーのエラーが続いていないか
「200 が返っている」は安心材料にならない

Datadog の分析によると、攻撃は HTTP 200(成功)を返したまま、ワーカーを動かし続けることがある。返事の番号だけで判断しない。

2. PHP のエラーログ

  • Allowed memory size of ... bytes exhausted という、メモリ不足のエラー
  • そのエラーの場所が「Unknown on line 0」になっているもの。これは、サイトのプログラムが動く前にエラーが起きたことを意味する
  • PHP 8.5 では、致命的なエラーのときの経過の表示(バックトレース)にも注意する

3. Web サーバーのログ

  • PHP のワーカーの異常終了(Apache なら AH00052)
  • ワーカーの再起動が、ふだんよりやけに多い
  • タイムアウトが続く

4. サーバーの中

  • Web のワーカーがシェルを起動している:いちばん直接の証拠
  • 知らないファイルが増えていないか(特に、アップロードの場所や一時ファイルの場所の .php)
  • 外への不審な通信
  • 知らない定期実行(cron)や、知らない管理者

レンタルサーバーの場合

レンタルサーバーでは、サーバーのログを自分で全部見られないことが多い。見られる範囲で次を確かめる。

確かめることどこで
アクセスログ・エラーログサーバーの管理画面(ログの保存を有効にしていれば)
知らないファイルファイルマネージャーや FTP で、更新日時の新しいもの
WordPress の管理者・プラグインWordPress の管理画面
サーバー会社の調査サポートに「PHP2Shell の痕跡の調査をしたか」を聞く

見つかったら

  1. 証拠を残す:ログやファイルを、消す前に別の場所にコピーする
  2. 広げない:サイトを一時的に止める、外への通信を絞るなど、影響が広がらないようにする
  3. 範囲を調べる:いつから、どこまで入られたか
  4. 専門家に相談する:個人情報が関わるなら、報告の義務が出ることもある
  5. パスワードと鍵を変える:サーバー・データベース・管理画面・API の鍵
見つからなくても、安心しきらない

JPCERT/CC は、痕跡が見つからなくても攻撃を受けていないとは断定できない、としている。ログの残し方によっては、痕跡が残らないこともある。少しでも心配なら、パスワードと鍵の変更までやっておく。

よくある質問

レンタルサーバーでもログは見られますか?

多くのサーバー会社で、管理画面からアクセスログとエラーログを見られます。
ただし、ログの保存を有効にしていないと残っていないことがあります。
分からなければサポートに聞いてください。

何も見つからなければ安心ですか?

安心しきらないでください。
ログに残らない攻撃もあります。
少しでも心配なら、パスワードと鍵の変更までやっておくと安心です。

見つかったら、まず何をすればいいですか?

ログやファイルを消す前に、別の場所にコピーしてください。
そのうえで、サイトを一時的に止めるなど、影響が広がらないようにしてから、専門家に相談してください。

無料ツールPHP2Shell の無料診断PHP のバージョンとサーバー会社を選ぶだけで、危険度と今やることが分かります。

参考にした情報

この記事の情報

2026年10月22日時点の公開情報にもとづく。PHP2Shell の状況は日々変わるので、最新は php.net・IPA・JPCERT/CC と、利用中のサービスの公式の告知を確認すること。

ログの見方が分からない、見つかったかもしれない、というときは、状況を聞いてから進め方を伝える。相談は無料。

無料で相談する

この記事の著者

編集部