
# Schreibgeschützter WordPress-Sicherheitsscanner für HestiaCP-Server Erkennt wp2shell-Kompromittierungsindikatoren (CVE-2026-63030 / CVE-2026-60137) auf allen gehosteten Websites – E-Mail-Berichte pro Benutzer, Dateidiff des Kerns gegenüber sauberem WordPress, PHP/JS/htaccess/Bildanalyse und optionale KI-Bewertung über die Claude-API.
Nur-Lese-WordPress-Sicherheitsscanner für HestiaCP-Server.
Erkennt wp2shell-Kompromittierungsindikatoren auf allen gehosteten Websites – mit E-Mail-Berichten pro Kunde, Core-Datei-Diff, SHA256-Webshell-Erkennung, Risikobewertung und optionaler KI-Auswertung.
⚠️ Sichere Versionen: WordPress 6.8.6 / 6.9.5 / 7.0.2 oder neuer.
Diese Skripte ändern niemals etwas – durchgehend nur lesend.
wp2shell ist eine Pre-Authentication-Remote-Code-Execution-Kette (RCE) im WordPress-Core, die am 17. Juli 2026 offengelegt wurde. Eine einzige anonyme HTTP-Anfrage gegen eine Standardinstallation genügt, um einen Schatten-Administrator zu erstellen und beliebigen Code auf dem Server auszuführen.
Die Kette kombiniert:
author__not_in von WP_Query/wp-json/batch/v1Kompromittierte Websites zeigen einen Schatten-Admin mit dem Login-Präfix wp2_ und der E-Mail @wp2shell.invalid.
Weitere Informationen: https://wp2shell.com
| Datei | Zweck |
|---|---|
wp2shell-scan.sh | Schneller serverweiter IoC-Scanner – farbcodierte Terminalausgabe, Risikobewertung pro Website, automatisch gespeicherter Bericht unter /root/ |
wp2shell-report-per-user.sh | Vollständiger Scanner – E-Mail-Berichte pro HestiaCP-Benutzer, Core-Datei-Diff, SHA256-Webshell-Erkennung, KI-Auswertung, Risikobewertung |
known_shells.sha256 | Datenbank bekannter Webshell-Hashes (SHA256) – wird zur Laufzeit automatisch abgerufen |
| Prüfung | Schweregrad |
|---|---|
| WordPress-Version vs. sichere Versionen | HIGH / OK |
Konten mit Präfix wp2_ oder E-Mail @wp2shell.invalid | CRITICAL |
| Administratoren, die nach der Offenlegung (15.07.2026) erstellt wurden | MEDIUM |
| Lücken in der Benutzer-ID-Sequenz (Spuren gelöschter Schatten-Admins) | MEDIUM |
Verwaiste wp_usermeta-Zeilen | MEDIUM |
Vergiftete oembed_cache / customize_changeset-Zeilen | CRITICAL |
Manipulierte WP-Optionen (upload_path, auto_prepend_file, siteurl) | CRITICAL / HIGH |
| Prüfung | Schweregrad |
|---|---|
wp core verify-checksums vs. wp.org | HIGH |
Zeilenweises diff -U5 gegen sauberen heruntergeladenen Core | CRITICAL / HIGH / OK |
| Zusätzliche Dateien, die im sauberen Core nicht vorhanden sind (Inhalt + Metadaten werden angezeigt) | CRITICAL / HIGH |
| Prüfung | Schweregrad |
|---|---|
PHP in uploads/ | CRITICAL |
Zusätzliche PHP-Erweiterungen (.php7 .phtml .phar .php5) | HIGH |
| SHA256-Abgleich mit bekannter Webshell-Datenbank (WSO, FilesMan, b374k, p0wny…) | CRITICAL |
PHP nach SINCE_DATE geändert UND mit verdächtigen Mustern – mit passender Zeile inline angezeigt | CRITICAL / HIGH |
| PHP mit verdächtigen Mustern, aber NICHT kürzlich geändert | LOW |
JS/HTML nach SINCE_DATE geändert UND mit Verschleierungsmustern | MEDIUM |
| Externe C2-/Exfiltrations-URLs (pastebin, ngrok, Discord-Webhooks, bit.ly…) | CRITICAL |
Gefährliche .htaccess-Direktiven (AddType, auto_prepend_file, externe RewriteRule) | HIGH |
.htaccess nach SINCE_DATE geändert | MEDIUM |
Polyglot-Bilder mit PHP-Payload (<?php in .jpg/.png…) | CRITICAL |
Offengelegte Backup-/Konfigurationsdateien (wp-config.php.bak, *.sql…) | MEDIUM |
| Prüfung | Schweregrad |
|---|---|
Benutzer-Crontab-Einträge mit curl/wget/php/base64 | HIGH |
| System-Cron-Dateien, die den Website-Pfad referenzieren | MEDIUM |
Jede Website erhält eine Risikobewertung von 0–100 mit einer Aufschlüsselung jedes beitragenden Befunds:
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
| Bewertung | Kennzeichnung |
|---|---|
| 0–20 | Probably Clean |
| 21–40 | Low Risk |
| 41–60 | Medium Risk |
| 61–80 | High Risk |
| 81+ | COMPROMISED |
wp installiertroot-Zugriffsendmail (für E-Mail-Berichte)python3 (für die KI-Auswertung der JSON-Verarbeitung)curl, sha256sum, file, strings, unzipcurl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-report-per-user.sh \
-o wp2shell-report-per-user.sh && sudo bash wp2shell-report-per-user.sh
Hinweis: Der vollständige Scanner stellt beim Start interaktive Fragen (KI-Auswertung, Bericht speichern, Datumsschwelle). Das Herunterladen und anschließende Ausführen stellt sicher, dass die Eingabeaufforderungen korrekt funktionieren.
sudo bash wp2shell-scan.sh
Findet alle WordPress-Installationen unter /home/*/web/*/public_html/, führt alle Prüfungen durch, gibt farbcodierte Ausgabe im Terminal aus und speichert einen vollständigen Bericht unter /root/wp2shell-report-YYYYMMDD-HHMMSS.txt.
Beim Start wird optional eine benutzerdefinierte Datumsschwelle abgefragt (Standard: 2026-07-15).
sudo bash wp2shell-report-per-user.sh
Beim Start drei Fragen:
[AI EVALUATION] Use AI evaluation for ambiguous files? [y/N]
[SAVE REPORT] Save a full report file for later review? [y/N]
[DATE THRESHOLD] Use a different date? Leave blank to keep default [YYYY-MM-DD]:
Immer mit DRY_RUN=1 starten (Standard) – E-Mails werden auf dem Bildschirm in der Vorschau angezeigt, nichts wird gesendet. Erst nach Bestätigung, dass die Ausgabe korrekt aussieht, auf DRY_RUN=0 ändern.
| Variable | Standard | Beschreibung |
|---|---|---|
WEB_ROOT | /home | HestiaCP-Web-Root |
SINCE_DATE | 2026-07-15 | Schwelle für „kürzlich geändert“ |
WP | wp | Pfad zu WP-CLI |
| Variable | Standard | Beschreibung |
|---|---|---|
DRY_RUN | 1 | 1 = nur Vorschau, 0 = E-Mails senden |
SEND_ONLY_IF_ISSUES | 0 | 1 = E-Mail überspringen, wenn Website sauber ist |
SINCE_DATE | 2026-07-15 | Schwelle für „kürzlich geändert“ |
MAIL_FROM | security@<hostname> | Umschlag-Absender |
CORE_CACHE | /root/wp2shell-cores | Cache-Verzeichnis für saubere Core-Dateien |
ANTHROPIC_API_KEY | (leer) | Claude-API-Schlüssel für KI-Auswertung |