
# 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 |
Für mehrdeutige Diffs, die Muster allein nicht klassifizieren können, sendet der Scanner das Diff an die Claude-API (claude-sonnet-4-6) und gibt ein Urteil zurück: DANGER, SUSPICIOUS, REVIEW oder OK mit einer einzeiligen Erklärung. KI wird nur in der Grauzone verwendet – eindeutige Fälle werden sofort ohne API-Aufruf klassifiziert.
Setzen Sie Ihren Schlüssel im Skript oder exportieren Sie ihn vor der Ausführung:
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
API-Schlüssel: https://console.anthropic.com – getrennt von claude.ai-Abonnements.
Fügen Sie Ihre Scan-Ausgabe in das wp2shell Report Analyzer-Artefakt auf Claude.ai ein – es führt dieselbe KI-Auswertung direkt im Browser durch, ohne dass Sie einen eigenen Schlüssel benötigen.
| Kennzeichnung | Farbe | Bedeutung |
|---|---|---|
[CRITICAL] | 🔴 Fett rot | Aktiver Kompromittierungsindikator – sofort handeln |
[HIGH] | 🔴 Rot | Starker Indikator – dringend prüfen |
[MEDIUM] | 🟡 Gelb | Verdächtig – untersuchen |
[LOW] | 🔵 Blau | Niedrige Priorität – wahrscheinlich Fehlalarm |
[INFO] | ⚫ Grau | Informativ |
[OK] | 🟢 Grün | Sauber / erwartet |
┌─ MODIFIED: wp-includes/load.php
│ [CRITICAL] Assessment (patterns): executable/obfuscated pattern in added lines
│ +20 Core file modified with dangerous pattern
│
│ ORIGINAL: /root/wp2shell-cores/7.0.2-el/wp-includes/load.php
│ SITE: /home/user/web/example.gr/public_html/wp-includes/load.php
│ @@ -212,5 +212,6 @@
│ - $loaded = true;
│ + $loaded = true;
│ + eval(base64_decode('aGVsbG8='));
└──────────────────────────────────────
CORE_CACHE (/root/wp2shell-cores/) wird über mehrere Scans hinweg wiederverwendet. Löschen Sie es, um einen frischen Download zu erzwingen.known_shells.sha256 wird automatisch einmal täglich aktualisiert.GPL-3.0 – siehe LICENSE
Entwickelt von BytesPulse als Reaktion auf die wp2shell-Offenlegung (Juli 2026).
CVE-Informationen: https://wp2shell.com
Το wp2shell είναι μια αλυσίδα εκμετάλλευσης απομακρυσμένης εκτέλεσης κώδικα (RCE) στον πυρήνα του WordPress, που αποκαλύφθηκε στις 17 Ιουλίου 2026. Ένα μόνο ανώνυμο HTTP αίτημα σε μια προεπιλεγμένη εγκατάσταση αρκεί για τη δημιουργία διαχειριστή και την εκτέλεση αυθαίρετου κώδικα στον server.
Η αλυσίδα συνδυάζει:
author__not_in του WP_Query/wp-json/batch/v1Τα παραβιασμένα sites εμφανίζουν λογαριασμό διαχειριστή με πρόθεμα wp2_ και email @wp2shell.invalid.
Περισσότερες πληροφορίες: https://wp2shell.com
| Αρχείο | Σκοπός |
|---|---|
wp2shell-scan.sh | Γρήγορος σαρωτής IoC — έγχρωμη έξοδος στο terminal, risk score ανά site, αυτόματη αποθήκευση report στο /root/ |
wp2shell-report-per-user.sh | Πλήρης σαρωτής — email αναφορές ανά HestiaCP user, diff πυρήνα, SHA256 ανίχνευση webshells, AI αξιολόγηση, risk score |
known_shells.sha256 | Βάση δεδομένων SHA256 γνωστών webshells — κατεβαίνει αυτόματα κατά την εκτέλεση |
| Έλεγχος | Σοβαρότητα |
|---|---|
| Έκδοση WordPress vs. ασφαλείς εκδόσεις | HIGH / OK |
Λογαριασμοί με πρόθεμα wp2_ ή email @wp2shell.invalid | CRITICAL |
| Διαχειριστές που δημιουργήθηκαν μετά την αποκάλυψη (15/07/2026) | MEDIUM |
| Κενά στην ακολουθία user-ID (ίχνη διαγραμμένου rogue admin) | MEDIUM |
Orphaned wp_usermeta rows | MEDIUM |
Δηλητηριασμένα oembed_cache / customize_changeset rows | CRITICAL |
Αλλοιωμένες WP επιλογές (upload_path, auto_prepend_file, siteurl) | CRITICAL / HIGH |
| Έλεγχος | Σοβαρότητα |
|---|---|
wp core verify-checksums vs. wp.org | HIGH |
Γραμμή-γραμμή diff -U5 έναντι καθαρού πυρήνα | CRITICAL / HIGH / OK |
| Επιπλέον αρχεία που δεν υπάρχουν στον καθαρό πυρήνα | CRITICAL / HIGH |
| Έλεγχος | Σοβαρότητα |
|---|---|
PHP αρχεία στο uploads/ | CRITICAL |
Επιπλέον PHP extensions (.php7 .phtml .phar .php5) | HIGH |
| SHA256 αντιστοίχιση με γνωστά webshells (WSO, FilesMan, b374k, p0wny…) | CRITICAL |
PHP που τροποποιήθηκε μετά το SINCE_DATE ΚΑΙ περιέχει ύποπτο pattern — με την ακριβή γραμμή | CRITICAL / HIGH |
| PHP με ύποπτα patterns που ΔΕΝ τροποποιήθηκε πρόσφατα | LOW |
JS/HTML τροποποιημένα μετά το SINCE_DATE με obfuscation patterns | MEDIUM |
| Εξωτερικές C2/εξαγωγή δεδομένων URLs (pastebin, ngrok, Discord webhooks, bit.ly…) | CRITICAL |
Επικίνδυνα directives σε .htaccess | HIGH |
.htaccess τροποποιημένο μετά το SINCE_DATE | MEDIUM |
| Polyglot εικόνες με PHP payload | CRITICAL |
| Εκτεθειμένα backup/config αρχεία | MEDIUM |
| Έλεγχος | Σοβαρότητα |
|---|---|
Crontab χρήστη με curl/wget/php/base64 | HIGH |
| System cron αρχεία που αναφέρουν το path του site | MEDIUM |
Κάθε site λαμβάνει βαθμολογία 0–100 με ανάλυση κάθε ευρήματος:
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
| Βαθμολογία | Κατηγορία |
|---|---|
| 0–20 | Probably Clean |
| 21–40 | Low Risk |
| 41–60 | Medium Risk |
| 61–80 | High Risk |
| 81+ | COMPROMISED |
wprootsendmail (για αποστολή email)python3 (για AI αξιολόγηση)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
sudo bash wp2shell-scan.sh
Βρίσκει αυτόματα όλα τα WordPress installs κάτω από /home/*/web/*/public_html/, εκτελεί όλους τους ελέγχους, τυπώνει έγχρωμη έξοδο στο terminal και αποθηκεύει πλήρες report στο /root/.
sudo bash wp2shell-report-per-user.sh
Κατά την εκκίνηση ρωτά τρία πράγματα:
[AI EVALUATION] Χρήση AI αξιολόγησης για αμφίβολα αρχεία; [y/N]
[SAVE REPORT] Αποθήκευση πλήρους report σε αρχείο; [y/N]
[DATE THRESHOLD] Διαφορετική ημερομηνία; Αφήστε κενό για default [YYYY-MM-DD]:
Ξεκινήστε πάντα με DRY_RUN=1 (default) — τα emails εμφανίζονται στην οθόνη, δεν στέλνονται. Αλλάξτε σε DRY_RUN=0 μόνο αφού επιβεβαιώσετε ότι η έξοδος είναι σωστή.
| Μεταβλητή | Default | Περιγραφή |
|---|---|---|
WEB_ROOT | /home | Root φάκελος HestiaCP |
SINCE_DATE | 2026-07-15 | Κατώφλι "πρόσφατα τροποποιημένων" |
WP | wp | Διαδρομή WP-CLI |
| Μεταβλητή | Default | Περιγραφή |
|---|---|---|
DRY_RUN | 1 | 1 = μόνο preview, 0 = αποστολή emails |
SEND_ONLY_IF_ISSUES | 0 | 1 = email μόνο αν βρεθεί κάτι |
SINCE_DATE | 2026-07-15 | Κατώφλι "πρόσφατα τροποποιημένων" |
MAIL_FROM | security@<hostname> | Sender email |
CORE_CACHE | /root/wp2shell-cores | Cache καθαρών πυρήνων |
ANTHROPIC_API_KEY | (κενό) | Claude API key για AI αξιολόγηση |
Για αμφίβολα diffs που τα patterns δεν μπορούν να ταξινομήσουν, ο σαρωτής στέλνει το diff στο Claude API (claude-sonnet-4-6) και επιστρέφει ετυμηγορία: DANGER, SUSPICIOUS, REVIEW, ή OK με μία πρόταση εξήγηση. Το AI χρησιμοποιείται μόνο στη γκρίζα ζώνη.
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
API keys: https://console.anthropic.com — ξεχωριστό από τη συνδρομή claude.ai.
Κάντε paste το output του scan στο wp2shell Report Analyzer artifact στο Claude.ai — εκτελεί την ίδια AI αξιολόγηση απευθείας στον browser.
CORE_CACHE (/root/wp2shell-cores/) επαναχρησιμοποιείται μεταξύ scans. Διαγράψτε τον για αναγκαστική επαναλήψη.known_shells.sha256 ανανεώνεται αυτόματα μία φορά ανά 24 ώρες.GPL-3.0 — δείτε LICENSE
Αναπτύχθηκε από την BytesPulse σε απόκριση της αποκάλυψης wp2shell (Ιούλιος 2026).
Πληροφορίες CVE: https://wp2shell.com