
wp2shell-Hestia-Scanner — Actualizado!
Escáner de seguridad de WordPress de solo lectura para servidores HestiaCP. Detecta indicadores de compromiso de wp2shell (CVE-2026-63030 / CVE-2026-60137) en todos los sitios alojados — informes por correo electrónico por usuario, diff de archivos principales contra una instalación limpia de WordPress, análisis de PHP/JS/htaccess/imágenes y evaluación opcional de IA mediante la API de Claude.
🛡️ wp2shell-Hestia-Scanner
Escáner de seguridad de WordPress de solo lectura para servidores HestiaCP.
Detecta indicadores de compromiso de wp2shell en todos los sitios alojados — con informes por correo por cliente, diff de archivos del núcleo, detección de webshells por SHA256, puntuación de riesgo y evaluación opcional con IA.
⚠️ Versiones seguras: WordPress 6.8.6 / 6.9.5 / 7.0.2 o posteriores.
Estos scripts nunca modifican nada: solo lectura en todo momento.
🇬🇧 English
¿Qué es wp2shell?
wp2shell es una cadena de ejecución remota de código (RCE) previa a la autenticación en el núcleo de WordPress, revelada el 17 de julio de 2026. Una única petición HTTP anónima contra una instalación por defecto basta para crear un administrador fraudulento y ejecutar código arbitrario en el servidor.
La cadena combina:
- CVE-2026-60137 — inyección SQL en el parámetro
author__not_indeWP_Query - CVE-2026-63030 — confusión de rutas en el endpoint
/wp-json/batch/v1de la API REST
Los sitios comprometidos muestran un administrador fraudulento con el prefijo de acceso wp2_ y el correo @wp2shell.invalid.
Más información: https://wp2shell.com
Contenido del repositorio
| Archivo | Propósito |
|---|---|
wp2shell-scan.sh | Escáner IoC rápido para todo el servidor: salida en terminal con códigos de color, puntuación de riesgo por sitio, informe guardado automáticamente en /root/ |
wp2shell-report-per-user.sh | Escáner completo: informes por correo por usuario de HestiaCP, diff del núcleo, detección de webshells por SHA256, evaluación con IA y puntuación de riesgo |
known_shells.sha256 | Base de datos de hashes SHA256 de webshells conocidos: se descarga automáticamente en tiempo de ejecución |
Qué comprueba el escáner
Comprobaciones de base de datos / usuarios
| Comprobación | Gravedad |
|---|---|
| Versión de WordPress frente a versiones seguras | HIGH / OK |
Cuentas con prefijo wp2_ o correo @wp2shell.invalid | CRITICAL |
| Administradores creados después de la revelación (15/07/2026) | MEDIUM |
| Huecos en la secuencia de ID de usuario (rastros de administrador fraudulento eliminado) | MEDIUM |
Filas huérfanas de wp_usermeta | MEDIUM |
Filas envenenadas de oembed_cache / customize_changeset | CRITICAL |
Opciones de WP alteradas (upload_path, auto_prepend_file, siteurl) | CRITICAL / HIGH |
Integridad de los archivos del núcleo
| Comprobación | Gravedad |
|---|---|
wp core verify-checksums frente a wp.org | HIGH |
diff -U5 línea por línea contra el núcleo limpio descargado | CRITICAL / HIGH / OK |
| Archivos adicionales que no existen en el núcleo limpio (se muestra contenido y metadatos) | CRITICAL / HIGH |
Análisis de archivos
| Comprobación | Gravedad |
|---|---|
PHP en uploads/ | CRITICAL |
Extensiones PHP adicionales (.php7 .phtml .phar .php5) | HIGH |
| Coincidencia SHA256 con la base de datos de webshells conocidos (WSO, FilesMan, b374k, p0wny…) | CRITICAL |
PHP modificado después de SINCE_DATE Y que coincide con patrones sospechosos, con la línea coincidente mostrada en línea | CRITICAL / HIGH |
| PHP con patrones sospechosos pero NO modificado recientemente | LOW |
JS/HTML modificados después de SINCE_DATE y que coinciden con patrones de ofuscación | MEDIUM |
| URLs externas de C2/exfiltración (pastebin, ngrok, Discord webhooks, bit.ly…) | CRITICAL |
Directivas peligrosas de .htaccess (AddType, auto_prepend_file, RewriteRule externa) | HIGH |
.htaccess modificado después de SINCE_DATE | MEDIUM |
Imágenes poliglotas con payload PHP (<?php en .jpg/.png…) | CRITICAL |
Archivos de copia de seguridad/configuración expuestos (wp-config.php.bak, *.sql…) | MEDIUM |
Persistencia
| Comprobación | Gravedad |
|---|---|
Entradas de crontab de usuario con curl/wget/php/base64 | HIGH |
| Archivos cron del sistema que hacen referencia a la ruta del sitio | MEDIUM |
Puntuación de riesgo
Cada sitio recibe una puntuación de riesgo de 0–100 con el desglose de cada hallazgo que contribuye:
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
| Puntuación | Etiqueta |
|---|---|
| 0–20 | Probably Clean |
| 21–40 | Low Risk |
| 41–60 | Medium Risk |
| 61–80 | High Risk |
| 81+ | COMPROMISED |
Requisitos
- Servidor Linux con HestiaCP
- bash 4.0+
- WP-CLI instalado globalmente como
wp - Acceso
root sendmail(para los informes por correo)python3(para el manejo de JSON de la evaluación con IA)curl,sha256sum,file,strings,unzip
Instalar WP-CLI (si falta)
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
Instalación y ejecución en una sola línea
Escaneo IoC rápido
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
Escaneo completo con informes por correo por cliente
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
Nota: el escáner completo formula preguntas interactivas al inicio (evaluación con IA, guardar informe, umbral de fecha). Descargarlo primero y ejecutarlo después garantiza que las indicaciones funcionen correctamente.
Uso
wp2shell-scan.sh — escaneo rápido en todo el servidor
sudo bash wp2shell-scan.sh
Busca todas las instalaciones de WordPress bajo /home/*/web/*/public_html/, ejecuta todas las comprobaciones, imprime en la terminal una salida con códigos de color y guarda un informe completo en /root/wp2shell-report-YYYYMMDD-HHMMSS.txt.
Al inicio pregunta por un umbral de fecha personalizado opcional (por defecto: 2026-07-15).
wp2shell-report-per-user.sh — escaneo completo con informes por correo
sudo bash wp2shell-report-per-user.sh
Al inicio, tres preguntas:
[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]:
Empiece siempre con DRY_RUN=1 (el valor por defecto): los correos se previsualizan en pantalla y no se envía nada. Cambie a DRY_RUN=0 solo después de confirmar que la salida es correcta.
Configuración
wp2shell-scan.sh
| Variable | Valor por defecto | Descripción |
|---|---|---|
WEB_ROOT | /home | Raíz web de HestiaCP |
SINCE_DATE | 2026-07-15 | Umbral de "modificado recientemente" |
WP | wp | Ruta a WP-CLI |