
wp2shell-Hestia-Scanner — Updated!
# 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.
🛡️ wp2shell-Hestia-Scanner
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.
🇬🇧 English
Was ist wp2shell?
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:
- CVE-2026-60137 – SQL-Injection im Parameter
author__not_invonWP_Query - CVE-2026-63030 – Route-Confusion im REST-API-Endpunkt
/wp-json/batch/v1
Kompromittierte Websites zeigen einen Schatten-Admin mit dem Login-Präfix wp2_ und der E-Mail @wp2shell.invalid.
Weitere Informationen: https://wp2shell.com
Repository-Inhalt
| 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 |
Was der Scanner prüft
Datenbank-/Benutzerprüfungen
| 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 |
Core-Datei-Integrität
| 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 |
Dateianalyse
| 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 |
Persistenz
| Prüfung | Schweregrad |
|---|---|
Benutzer-Crontab-Einträge mit curl/wget/php/base64 | HIGH |
| System-Cron-Dateien, die den Website-Pfad referenzieren | MEDIUM |
Risikobewertung
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 |
Anforderungen
- Linux-Server mit HestiaCP
- bash 4.0+
- WP-CLI global als
wpinstalliert root-Zugriffsendmail(für E-Mail-Berichte)python3(für die KI-Auswertung der JSON-Verarbeitung)curl,sha256sum,file,strings,unzip
WP-CLI installieren (falls fehlend)
curl -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
Einzeiler-Installation und Ausführung
Schneller IoC-Scan
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
Vollständiger Scan mit E-Mail-Berichten pro Kunde
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.
Verwendung
wp2shell-scan.sh – schneller serverweiter Scan
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).
wp2shell-report-per-user.sh – vollständiger Scan mit E-Mail-Berichten
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.
Konfiguration
wp2shell-scan.sh
| 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 |
wp2shell-report-per-user.sh
| 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 |
KI-Auswertung (optional)
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.
Kein API-Schlüssel? Verwenden Sie den Browser-Analyzer
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.
Ausgabeformat
Schweregrade
| 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 |
Core-Diff-Beispiel
┌─ 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='));
└──────────────────────────────────────
Hinweise
- Der Scanner ändert niemals etwas. Sicher für den Einsatz auf Live-Produktionsservern.
- Die Aktualisierung von WordPress auf eine gepatchte Version schließt die Schwachstelle, bereinigt aber nicht eine bereits kompromittierte Website. Wenn Indikatoren gefunden werden, stellen Sie aus einem sauberen Backup wieder her.
- Das Verzeichnis
CORE_CACHE(/root/wp2shell-cores/) wird über mehrere Scans hinweg wiederverwendet. Löschen Sie es, um einen frischen Download zu erzwingen. - Die Hash-Datenbank
known_shells.sha256wird automatisch einmal täglich aktualisiert.
Lizenz
GPL-3.0 – siehe LICENSE
Credits
Entwickelt von BytesPulse als Reaktion auf die wp2shell-Offenlegung (Juli 2026).
CVE-Informationen: https://wp2shell.com
🇬🇷 Ελληνικά
Τι είναι το wp2shell;
Το wp2shell είναι μια αλυσίδα εκμετάλλευσης απομακρυσμένης εκτέλεσης κώδικα (RCE) στον πυρήνα του WordPress, που αποκαλύφθηκε στις 17 Ιουλίου 2026. Ένα μόνο ανώνυμο HTTP αίτημα σε μια προεπιλεγμένη εγκατάσταση αρκεί για τη δημιουργία διαχειριστή και την εκτέλεση αυθαίρετου κώδικα στον server.
Η αλυσίδα συνδυάζει:
- CVE-2026-60137 — SQL injection στην παράμετρο
author__not_inτουWP_Query - CVE-2026-63030 — Route confusion στο REST API
/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 |
Persistence
| Έλεγχος | Σοβαρότητα |
|---|---|
Crontab χρήστη με curl/wget/php/base64 | HIGH |
| System cron αρχεία που αναφέρουν το path του site | MEDIUM |
Risk Score
Κάθε 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 |
Απαιτήσεις
- Linux server με HestiaCP
- bash 4.0+
- WP-CLI εγκατεστημένο ως
wp - Πρόσβαση
root sendmail(για αποστολή email)python3(για AI αξιολόγηση)curl,sha256sum,file,strings,unzip
Εγκατάσταση WP-CLI (αν λείπει)
curl -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
Εγκατάσταση με μία εντολή
Γρήγορος σαρωτής IoC
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
Πλήρης σαρωτής με email αναφορές
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
Χρήση
wp2shell-scan.sh
sudo bash wp2shell-scan.sh
Βρίσκει αυτόματα όλα τα WordPress installs κάτω από /home/*/web/*/public_html/, εκτελεί όλους τους ελέγχους, τυπώνει έγχρωμη έξοδο στο terminal και αποθηκεύει πλήρες report στο /root/.
wp2shell-report-per-user.sh
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 μόνο αφού επιβεβαιώσετε ότι η έξοδος είναι σωστή.
Ρυθμίσεις
wp2shell-scan.sh
| Μεταβλητή | Default | Περιγραφή |
|---|---|---|
WEB_ROOT | /home | Root φάκελος HestiaCP |
SINCE_DATE | 2026-07-15 | Κατώφλι "πρόσφατα τροποποιημένων" |
WP | wp | Διαδρομή WP-CLI |
wp2shell-report-per-user.sh
| Μεταβλητή | 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 αξιολόγηση |
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.
Χωρίς API key; Χρησιμοποιήστε τον browser analyzer
Κάντε paste το output του scan στο wp2shell Report Analyzer artifact στο Claude.ai — εκτελεί την ίδια AI αξιολόγηση απευθείας στον browser.
Σημειώσεις
- Ο σαρωτής δεν τροποποιεί τίποτα. Ασφαλής εκτέλεση σε live production servers.
- Η ενημέρωση του WordPress στην patched έκδοση κλείνει την ευπάθεια αλλά δεν καθαρίζει ένα ήδη παραβιασμένο site. Αν βρεθούν indicators, επαναφέρετε από καθαρό backup.
- Ο φάκελος
CORE_CACHE(/root/wp2shell-cores/) επαναχρησιμοποιείται μεταξύ scans. Διαγράψτε τον για αναγκαστική επαναλήψη. - Η βάση
known_shells.sha256ανανεώνεται αυτόματα μία φορά ανά 24 ώρες.
Άδεια
GPL-3.0 — δείτε LICENSE
Credits
Αναπτύχθηκε από την BytesPulse σε απόκριση της αποκάλυψης wp2shell (Ιούλιος 2026).
Πληροφορίες CVE: https://wp2shell.com