Ein leichtgewichtiger, nicht-invasiver Bash-Triage-Scanner zur schnellen Erkennung von Angriffsspuren, Exploit-Artefakten und unvollständigen Patch-Ständen rund um die PHP2Shell-Schwachstellen (CVE-2026-109618 und CVE-2026-109619).
Entwickelt für den automatisierten Rollout über RMM-Systeme (Tactical RMM, Datto, NinjaOne) sowie für Ad-hoc-Prüfungen auf Single- und Multi-Tenant-Linux-Servern.
Das Skript führt in Sekundenbruchteilen eine mehrstufige Vorfall- und Härtungsanalyse durch, ohne laufende Dienste zu beeinträchtigen:
-
Runtime- & Patch-Audit (In-Memory vs. Disk):
- Erkennt CLI-Binaries und laufende
php-fpm-Master- und Worker-Prozesse über/proc/<pid>/exe. - In-Memory-Erkennung: Schlägt Alarm, wenn Pakete zwar aktualisiert wurden, der FPM-Worker im RAM aber noch den alten Code ausführt (
(deleted)-Marker). - Sury-Backport-Validierung: Erkennt offizielle Minimal-Backports für EOL-Versionen (PHP 7.4, 8.0, 8.1) anhand des Release-Datums (
>= 20261021) viadpkg-queryund Build-Header. - Container-Auditing: Iteriert Docker-Container (Mailcow, Nextcloud, WordPress etc.) und prüft PHP-Stände direkt in den Containern (ohne Fehlalarme bei PHP-freien Containern wie Redis oder Postfix).
- Erkennt CLI-Binaries und laufende
-
Härtungs-Check (Advisory Alignment):
- Liest aktive INI-Direktiven aus (
session.upload_progress.enabled,memory_limit,post_max_size,fatal_error_backtraces). - Bewertet Konfigurationen gegen die offiziellen Empfehlungen des PHP-Security-Teams.
- Liest aktive INI-Direktiven aus (
-
Session-Storage & Injection-Scan:
- Rekursive Durchsuchung aktiver Session-Pfade (
/var/lib/php/sessions, PHP-Save-Paths,/tmp, Docker-Session-Volumes). - Gezielte Payload-Suche nach PHP-Tags (
<?php,<?=), serialisierten Objekten und manipuliertenupload_progress-Feldern insess_*-Dateien.
- Rekursive Durchsuchung aktiver Session-Pfade (
-
Dateisystem- & Executable-Audit:
- Identifiziert neu erstellte/modifizierte PHP-Dateien in Web-Roots (
/var/www,/home, Mailcow-Webroot, Piler) unter Ausschluss legitimer Cache- und Log-Pfade. - Scannt flüchtige Pfade (
/tmp,/dev/shm,/var/tmp) nach unerwarteten Executables, Shared Objects (.so) und Skripten.
- Identifiziert neu erstellte/modifizierte PHP-Dateien in Web-Roots (
-
Prozessbaum-Analyse:
- Filtert nach interaktiven Shells (
sh,bash,dash) und Netzwerk-Tools (curl,wget,nc,socat), die von Webserver-/FPM-Benutzern (www-data,nginx, ISPConfig-Web-Usern,clp, Plesk-Systemkonten) gespawnt wurden.
- Filtert nach interaktiven Shells (
-
I/O-geschützte Log-Analyse:
- Durchsucht Access- und Error-Logs der letzten 7 Tage.
- Erkennt FPM-Worker-Crashes, Segmentation Faults und OOM-Abbrüche (Indikatoren für Heap-Korruption bei CVE-2026-109618).
- Identifiziert extreme POST-Anfragefluten auf PHP-Endpunkte (ASLR-Brute-Force-Muster) unter Ausschluss bekannter Tracking-/Cron-Endpunkte.
-
Docker Rootfs Diffs:
- Überprüft aktive Container via
docker diffauf Dateisystem-Mutationen im Container-Layer außerhalb persistierter Volumes.
- Überprüft aktive Container via
- Betriebssysteme: Debian 11 / 12 / 13, Ubuntu 20.04 / 22.04 / 24.04 (Baremetal, KVM & Proxmox LXC).
- Control Panels & Host-Umgebungen:
- ISPConfig: Berücksichtigt dynamische User (
web[0-9]+), Web-Roots (/var/www/clients/...) und CLI-Cronjobs. - Plesk: Unterstützt
psacln/psaserv-User und blendet APT-GPG-Hooks (/tmp/apt-key-gpghome.*) aus. - CloudPanel: Audit der Host-PHP-Pools bei gleichzeitiger Möglichkeit zur Isolation des internen Panel-Backends.
- ISPConfig: Berücksichtigt dynamische User (
- Container-Stacks:
- Mailcow (dockerized): Scannt gezielt den
php-fpm-mailcow-Container; toleriert IAM-Sync-Locks und interne Pipes. - Nextcloud & Moodle: Whitelisting für CLI-Cronjobs (
admin/cli/cron.php,occ) und Daemon-Prozesse (notify_push). - Piler (Mailarchiv): Erfasst Web-UI-Roots und vermeidet Kollisionen mit Manticore-/Sphinx-Daemons.
- Mailcow (dockerized): Scannt gezielt den
Um "Alert Fatigue" in Monitoring-Dashboards zu verhindern, enthält der Scanner präzise Ausnahmen für legitime Dienste:
- Daemons & Hintergrunddienste:
notify_push(Nextcloud),olefy.py(Mailcow ClamAV-Bridge),coolwsd/ Collabora Office AppImages, Dovecot/Postfix-Binaries. - Cron- & Wartungs-Runner:
admin/cli/cron.php(Moodle),wp-cron.php(WordPress), Nextcloudocc, Laravelartisan, Symfonybin/console. - Lock-Dateien & Caches: Matomo
climulti-Caches, Mailcowiam-sync.lock, Systemd PrivateTmp-Verzeichnisse, Plesk/APT-Update-Artefakte. - Traffic-Ausnahmen:
matomo.phpundpiwik.phpsind von Brute-Force-POST-Spike-Alarmen ausgenommen.
# Herunterladen und Ausführungsrechte vergeben
curl -fsSL https://code.bashclub.org/bashclub/php2shell-forensic-check/raw/branch/main/php2shell-forensic-check -o php2shell-forensic-check
chmod +x php2shell-forensic-check
# Direkt ausführen (Root-Rechte erforderlich)
sudo ./php2shell-forensic-check