
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.
🛡️ wp2shell-Hestia-Scanner
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_indeWP_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
| Fichier | Objectif |
|---|---|
wp2shell-scan.sh | Scanner IoC rapide à l'échelle du serveur — sortie terminal colorée, score de risque par site, rapport auto-enregistré dans /root/ |
wp2shell-report-per-user.sh | Scanner complet — rapports email par utilisateur HestiaCP, diff des fichiers du noyau, détection de webshells par SHA256, évaluation IA, score de risque |
known_shells.sha256 | Base 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érification | Sévérité |
|---|---|
| Version WordPress vs. versions sûres | HIGH / OK |
Comptes avec préfixe wp2_ ou email @wp2shell.invalid | CRITICAL |
| 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 orphelines | MEDIUM |
Lignes oembed_cache / customize_changeset empoisonnées | CRITICAL |
Options WP falsifiées (upload_path, auto_prepend_file, siteurl) | CRITICAL / HIGH |
Intégrité des fichiers du noyau
| Vérification | Sévérité |
|---|---|
wp core verify-checksums vs. wp.org | HIGH |
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érification | Sé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 ligne | CRITICAL / HIGH |
| PHP avec motifs suspects mais PAS modifié récemment | LOW |
JS/HTML modifié après SINCE_DATE ET correspondant à des motifs d'obfuscation | MEDIUM |
| 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_DATE | MEDIUM |
Images polyglottes avec payload PHP (<?php dans .jpg/.png…) | CRITICAL |
Fichiers de sauvegarde/config exposés (wp-config.php.bak, *.sql…) | MEDIUM |
Persistance
| Vérification | Sévérité |
|---|---|
Entrées crontab utilisateur avec curl/wget/php/base64 | HIGH |
| Fichiers cron système référençant le chemin du site | MEDIUM |
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
| Score | Libellé |
|---|---|
| 0–20 | Probablement propre |
| 21–40 | Risque faible |
| 41–60 | Risque moyen |
| 61–80 | Risque é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
| Variable | Défaut | Description |
|---|---|---|
WEB_ROOT | /home | Racine web HestiaCP |
SINCE_DATE | 2026-07-15 | Seuil « modifié récemment » |
WP | wp | Chemin vers WP-CLI |