Retour aux mises à jour
UpdatedAug 4, 2026

wp2shell-Hestia-Scanner — Mis à jour !

# Scanner de sécurité WordPress en lecture seule pour serveurs HestiaCP Détecte les indicateurs de compromission wp2shell (CVE-2026-63030 / CVE-2026-60137) sur tous les sites hébergés — rapports par e-mail par utilisateur, comparaison des fichiers du noyau avec un WordPress propre, analyse PHP/JS/htaccess/images, et évaluation IA facultative via l'API Claude.

Partager

🛡️ wp2shell-Hestia-Scanner

🇬🇧 English   |   🇬🇷 Ελληνικά

Bash Platform License CVE

Scanner de sécurité WordPress en lecture seule pour les serveurs HestiaCP.
Détecte les indicateurs de compromission wp2shell sur tous les sites hébergés — avec rapports email par client, diff des fichiers du noyau, détection de webshells par SHA256, score de risque et évaluation IA optionnelle.

⚠️ Versions sûres : WordPress 6.8.6 / 6.9.5 / 7.0.2 ou plus récent.
Ces scripts ne modifient jamais rien — lecture seule de bout en bout.


🇬🇧 English

Qu'est-ce que wp2shell ?

wp2shell est une chaîne d'exécution de code à distance (RCE) sans authentification dans le noyau WordPress, divulguée le 17 juillet 2026. Une seule requête HTTP anonyme contre une installation par défaut suffit pour créer un administrateur malveillant et exécuter du code arbitraire sur le serveur.

La chaîne combine :

  • CVE-2026-60137 — injection SQL dans le paramètre author__not_in de WP_Query
  • CVE-2026-63030 — confusion de route dans le point de terminaison REST API /wp-json/batch/v1

Les sites compromis présentent un administrateur malveillant avec le préfixe de connexion wp2_ et l'email @wp2shell.invalid.

Plus d'informations : https://wp2shell.com


Contenu du dépôt

FichierObjectif
wp2shell-scan.shScanner IoC rapide à l'échelle du serveur — sortie terminal colorée, score de risque par site, rapport auto-enregistré dans /root/
wp2shell-report-per-user.shScanner complet — rapports email par utilisateur HestiaCP, diff des fichiers du noyau, détection de webshells par SHA256, évaluation IA, score de risque
known_shells.sha256Base de données de hachages SHA256 de webshells connus — récupérée automatiquement à l'exécution

Ce que le scanner vérifie

Base de données / Vérifications des utilisateurs

VérificationSévérité
Version WordPress vs. versions sûresHIGH / OK
Comptes avec préfixe wp2_ ou email @wp2shell.invalidCRITICAL
Administrateurs créés après la divulgation (15/07/2026)MEDIUM
Lacunes dans la séquence des ID utilisateurs (traces d'admin malveillant supprimé)MEDIUM
Lignes wp_usermeta orphelinesMEDIUM
Lignes oembed_cache / customize_changeset empoisonnéesCRITICAL
Options WP falsifiées (upload_path, auto_prepend_file, siteurl)CRITICAL / HIGH

Intégrité des fichiers du noyau

VérificationSévérité
wp core verify-checksums vs. wp.orgHIGH
diff -U5 ligne par ligne contre le noyau propre téléchargéCRITICAL / HIGH / OK
Fichiers supplémentaires absents du noyau propre (contenu + métadonnées affichés)CRITICAL / HIGH

Analyse des fichiers

VérificationSévérité
PHP dans uploads/CRITICAL
Extensions PHP supplémentaires (.php7 .phtml .phar .php5)HIGH
Correspondance SHA256 avec la base de données de webshells connus (WSO, FilesMan, b374k, p0wny…)CRITICAL
PHP modifié après SINCE_DATE ET correspondant à des motifs suspects — avec la ligne correspondante affichée en ligneCRITICAL / HIGH
PHP avec motifs suspects mais PAS modifié récemmentLOW
JS/HTML modifié après SINCE_DATE ET correspondant à des motifs d'obfuscationMEDIUM
URLs externes C2/exfiltration (pastebin, ngrok, webhooks Discord, bit.ly…)CRITICAL
Directives dangereuses .htaccess (AddType, auto_prepend_file, RewriteRule externe)HIGH
.htaccess modifié après SINCE_DATEMEDIUM
Images polyglottes avec payload PHP (<?php dans .jpg/.png…)CRITICAL
Fichiers de sauvegarde/config exposés (wp-config.php.bak, *.sql…)MEDIUM

Persistance

VérificationSévérité
Entrées crontab utilisateur avec curl/wget/php/base64HIGH
Fichiers cron système référençant le chemin du siteMEDIUM

Score de risque

Chaque site reçoit un score de risque de 0 à 100 avec une ventilation de chaque résultat contributif :

  +------------------------------------------+
  |  RISK SCORE: 96/100  COMPROMISED         |
  +------------------------------------------+
  +40  wp2shell fingerprint account
  +30  PHP file(s) inside uploads/
  +20  Vulnerable WordPress version
  +6   Core checksum failure
ScoreLibellé
0–20Probablement propre
21–40Risque faible
41–60Risque moyen
61–80Risque élevé
81+COMPROMIS

Prérequis

  • Serveur Linux exécutant HestiaCP
  • bash 4.0+
  • WP-CLI installé globalement comme wp
  • Accès root
  • sendmail (pour les rapports email)
  • python3 (pour la gestion JSON de l'évaluation IA)
  • curl, sha256sum, file, strings, unzip

Installer WP-CLI (si absent)

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

Installation et exécution en une ligne

Scan IoC rapide

curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash

Scan complet avec rapports email par client

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

Remarque : Le scanner complet pose des questions interactives au démarrage (évaluation IA, enregistrement du rapport, seuil de date). Télécharger d'abord puis exécuter garantit que les invites fonctionnent correctement.


Utilisation

wp2shell-scan.sh — scan rapide à l'échelle du serveur

sudo bash wp2shell-scan.sh

Trouve toutes les installations WordPress sous /home/*/web/*/public_html/, exécute toutes les vérifications, affiche une sortie colorée dans le terminal et enregistre un rapport complet dans /root/wp2shell-report-YYYYMMDD-HHMMSS.txt.

Au démarrage, il demande un seuil de date personnalisé facultatif (par défaut : 2026-07-15).

wp2shell-report-per-user.sh — scan complet avec rapports email

sudo bash wp2shell-report-per-user.sh

Au démarrage, trois questions :

[AI EVALUATION]   Utiliser l'évaluation IA pour les fichiers ambigus ? [y/N]
[SAVE REPORT]     Enregistrer un rapport complet pour examen ultérieur ? [y/N]
[DATE THRESHOLD]  Utiliser une date différente ? Laisser vide pour conserver la valeur par défaut [YYYY-MM-DD] :

Commencez toujours avec DRY_RUN=1 (la valeur par défaut) — les emails sont prévisualisés à l'écran, rien n'est envoyé. Passez à DRY_RUN=0 uniquement après avoir confirmé que la sortie semble correcte.


Configuration

wp2shell-scan.sh

VariableDéfautDescription
WEB_ROOT/homeRacine web HestiaCP
SINCE_DATE2026-07-15Seuil « modifié récemment »
WPwpChemin vers WP-CLI

wp2shell-report-per-user.sh

VariableDéfautDescription
DRY_RUN11 = aperçu uniquement, 0 = envoyer les emails
SEND_ONLY_IF_ISSUES01 = ignorer l'email si le site est propre
SINCE_DATE2026-07-15Seuil « modifié récemment »
MAIL_FROMsecurity@<hostname>Expéditeur de l'enveloppe
CORE_CACHE/root/wp2shell-coresRépertoire de cache des noyaux propres
ANTHROPIC_API_KEY(vide)Clé API Claude pour l'évaluation IA

Évaluation IA (facultative)

Pour les diffs ambigus que les motifs seuls ne peuvent pas classer, le scanner envoie le diff à l'API Claude (claude-sonnet-4-6) et renvoie un verdict : DANGER, SUSPICIOUS, REVIEW ou OK avec une explication en une phrase. L'IA est utilisée uniquement dans la zone grise — les cas clairs sont classés instantanément sans aucun appel API.

Définissez votre clé dans le script ou exportez-la avant l'exécution :

export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh

Clés API : https://console.anthropic.com — séparées des abonnements claude.ai.

Pas de clé API ? Utilisez l'analyseur navigateur

Collez la sortie de votre scan dans l'artefact wp2shell Report Analyzer sur Claude.ai — il effectue la même évaluation IA directement dans le navigateur sans nécessiter votre propre clé.


Format de sortie

Niveaux de sévérité

LibelléCouleurSignification
[CRITICAL]🔴 Rouge grasIndicateur de compromission active — agir immédiatement
[HIGH]🔴 RougeIndicateur fort — examiner en urgence
[MEDIUM]🟡 JauneSuspect — enquêter
[LOW]🔵 BleuPriorité faible — probablement un faux positif
[INFO]⚫ GrisInformationnel
[OK]🟢 VertPropre / attendu

Exemple de diff du noyau

┌─ 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='));
└──────────────────────────────────────

Remarques

  • Le scanner ne modifie jamais rien. Sans danger sur les serveurs de production en direct.
  • Mettre à jour WordPress vers une version corrigée ferme la vulnérabilité mais ne nettoie pas un site déjà compromis. Si des indicateurs sont trouvés, restaurez à partir d'une sauvegarde propre.
  • Le répertoire CORE_CACHE (/root/wp2shell-cores/) est réutilisé entre les scans. Supprimez-le pour forcer un nouveau téléchargement.
  • La base de données de hachages known_shells.sha256 est actualisée automatiquement une fois par jour.

Licence

GPL-3.0 — voir LICENSE


Crédits

Développé par BytesPulse en réponse à la divulgation wp2shell (juillet 2026).
Informations CVE : 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.invalidCRITICAL
Διαχειριστές που δημιουργήθηκαν μετά την αποκάλυψη (15/07/2026)MEDIUM
Κενά στην ακολουθία user-ID (ίχνη διαγραμμένου rogue admin)MEDIUM
Orphaned wp_usermeta rowsMEDIUM
Δηλητηριασμένα oembed_cache / customize_changeset rowsCRITICAL
Αλλοιωμένες WP επιλογές (upload_path, auto_prepend_file, siteurl)CRITICAL / HIGH

Ακεραιότητα αρχείων πυρήνα

ΈλεγχοςΣοβαρότητα
wp core verify-checksums vs. wp.orgHIGH
Γραμμή-γραμμή 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 patternsMEDIUM
Εξωτερικές C2/εξαγωγή δεδομένων URLs (pastebin, ngrok, Discord webhooks, bit.ly…)CRITICAL
Επικίνδυνα directives σε .htaccessHIGH
.htaccess τροποποιημένο μετά το SINCE_DATEMEDIUM
Polyglot εικόνες με PHP payloadCRITICAL
Εκτεθειμένα backup/config αρχείαMEDIUM

Persistence

ΈλεγχοςΣοβαρότητα
Crontab χρήστη με curl/wget/php/base64HIGH
System cron αρχεία που αναφέρουν το path του siteMEDIUM

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–20Probably Clean
21–40Low Risk
41–60Medium Risk
61–80High 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/homeRoot φάκελος HestiaCP
SINCE_DATE2026-07-15Κατώφλι "πρόσφατα τροποποιημένων"
WPwpΔιαδρομή WP-CLI

wp2shell-report-per-user.sh

ΜεταβλητήDefaultΠεριγραφή
DRY_RUN11 = μόνο preview, 0 = αποστολή emails
SEND_ONLY_IF_ISSUES01 = email μόνο αν βρεθεί κάτι
SINCE_DATE2026-07-15Κατώφλι "πρόσφατα τροποποιημένων"
MAIL_FROMsecurity@<hostname>Sender email
CORE_CACHE/root/wp2shell-coresCache καθαρών πυρήνων
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

Catégories