php2shell-scanner

PHP2Shell exposure check

Decides whether a server's PHP is affected by CVE-2026-109618 and CVE-2026-109619 from facts collected on the server itself, including distribution backports, missed restarts and interim mitigations. The verdict is computed in this tab; what you paste is not sent anywhere.

1Collect

PHP probe

or fetch it on the server

curl -fsSLO https://php2shell.sqzer.com/downloads/php2shell-selfcheck.php

  1. Set $TOKEN in the file to 12 or more random letters, digits, - or _, for example the output of openssl rand -hex 16.
  2. Give the file an unguessable name and upload it to the site's web root.
  3. Open https://<site>/<file>.php?k=<TOKEN> once. The file then tries to delete itself and says so if it cannot.
  4. Repeat per vhost and per PHP-FPM pool; each may run a different PHP.

2

3Result

No result yet. Collect facts on the server, paste the output and run the check.

Possible verdicts
PatchedAt or above the upstream fixed release, or a distribution package carrying both fixes.
VulnerableBelow the fixed release, including upstream builds of end-of-life branches.
Fix pendingThe distribution tracks the CVEs but has not shipped a fixed package.
Restart neededThe fixed package is installed; the running PHP is still the old build.
UndeterminedNot enough evidence. Never reported as safe.

Affected releases

BranchAffectedFixed
Distribution packages
DistributionSource packageFixed in
Red Hat advisories

Method

  1. A version at or above the upstream fixed release for its branch is patched.
  2. Debian and Ubuntu packages are compared with the distribution's fixed version using dpkg ordering.
  3. On the RHEL family the evidence is the CVE entries in the package changelog, collected by the server script.
  4. A running version older than the installed package, or a PHP process mapping a deleted file, means restart needed.
  5. deb.sury.org builds, official Docker images and self-built PHP are judged against upstream releases.
  6. Interim mitigations are reported but never change a verdict.
  7. Missing evidence gives Undetermined, never safe.

Scope

No request is sent to your server. The probe reads versions, packages and settings. The server script also reads package changelogs, the process list with command lines, the files each PHP process has mapped and PHP and web server configuration files. With --logs and --webroot it also reads logs, session file sizes and the names and dates of PHP files. Its terminal output can show command lines and log lines; the page needs only the block between the BEGIN and END lines.

A verdict is not proof that an attack would fail. Read the upstream advisories and your distribution's notices as well.