🛡️ wp2shell-Hestia-Scanner
🇬🇧 English
|
🇬🇷 Ελληνικά

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_in de WP_Query
- CVE-2026-63030 — confusión de rutas en el endpoint
/wp-json/batch/v1 de 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/ |
Qué comprueba el escáner
Comprobaciones de base de datos / usuarios
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
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 |
|
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
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).
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
wp2shell-report-per-user.sh
Evaluación con IA (opcional)
Para los diffs ambiguos que los patrones por sí solos no pueden clasificar, el escáner envía el diff a la API de Claude (claude-sonnet-4-6) y devuelve un veredicto: DANGER, SUSPICIOUS, REVIEW u OK, con una explicación de una frase. La IA se usa solo en la zona gris: los casos claros se clasifican al instante sin ninguna llamada a la API.
Defina su clave en el script o expórtela antes de ejecutarlo:
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
Claves de API: https://console.anthropic.com — independientes de las suscripciones de claude.ai.
¿Sin clave de API? Use el analizador en el navegador
Pegue la salida de su escaneo en el artefacto wp2shell Report Analyzer de Claude.ai — realiza la misma evaluación con IA directamente en el navegador, sin necesidad de su propia clave.
Niveles de gravedad
Ejemplo de diff del núcleo
┌─ 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='));
└──────────────────────────────────────
Notas
- El escáner nunca modifica nada. Se puede ejecutar de forma segura en servidores de producción en vivo.
- Actualizar WordPress a una versión parcheada cierra la vulnerabilidad, pero no limpia un sitio ya comprometido. Si se encuentran indicadores, restaure desde una copia de seguridad limpia.
- El directorio
CORE_CACHE (/root/wp2shell-cores/) se reutiliza entre escaneos. Elimínelo para forzar una descarga nueva.
- La base de datos de hashes
known_shells.sha256 se actualiza automáticamente una vez al día.
Licencia
GPL-3.0 — consulte LICENSE
Créditos
Desarrollado por BytesPulse en respuesta a la revelación de wp2shell (julio de 2026).
Información sobre CVE: https://wp2shell.com
🇬🇷 Ελληνικά
¿Qué es wp2shell?
wp2shell es una cadena de explotación de ejecución remota de código (RCE) en el núcleo de WordPress, revelada el 17 de julio de 2026. Una única petición HTTP anónima a una instalación por defecto basta para crear un administrador y ejecutar código arbitrario en el servidor.
La cadena combina:
- CVE-2026-60137 — inyección SQL en el parámetro
author__not_in de WP_Query
- CVE-2026-63030 — confusión de rutas en la API REST
/wp-json/batch/v1
Los sitios comprometidos muestran una cuenta de administrador con el prefijo wp2_ y el correo @wp2shell.invalid.
Más información: https://wp2shell.com
Contenido
| Archivo | Propósito |
|---|
wp2shell-scan.sh | Escáner IoC rápido: salida en color en la terminal, puntuación de riesgo por sitio, informe guardado automáticamente en /root/ |
wp2shell-report-per-user.sh |
Qué comprueba
Base de datos / Usuarios
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 un núcleo limpio | CRITICAL / HIGH / OK |
| Archivos adicionales que no existen en el núcleo limpio | CRITICAL / HIGH |
Análisis de archivos
Persistencia
| Comprobación | Gravedad |
|---|
Crontab de usuario con curl/wget/php/base64 | HIGH |
| Archivos cron del sistema que mencionan la ruta del sitio | MEDIUM |
Puntuación de riesgo
Cada sitio recibe una puntuación de 0–100 con el desglose de cada hallazgo:
+------------------------------------------+
| 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 |
|
Requisitos
- Servidor Linux con HestiaCP
- bash 4.0+
- WP-CLI instalado como
wp
- Acceso
root
sendmail (para el envío de correos)
python3 (para la evaluación con IA)
curl, sha256sum, file, strings, unzip
Instalación de 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 con 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
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
Uso
wp2shell-scan.sh
sudo bash wp2shell-scan.sh
Busca automáticamente todas las instalaciones de WordPress bajo /home/*/web/*/public_html/, ejecuta todas las comprobaciones, imprime una salida en color en la terminal y guarda un informe completo en /root/.
wp2shell-report-per-user.sh
sudo bash wp2shell-report-per-user.sh
Al inicio hace 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 (valor por defecto): los correos se muestran en pantalla, no se envían. Cambie a DRY_RUN=0 solo después de confirmar que la salida es correcta.
Configuración
wp2shell-scan.sh
wp2shell-report-per-user.sh
Evaluación con IA (opcional)
Para los diffs dudosos que los patrones no pueden clasificar, el escáner envía el diff a la API de Claude (claude-sonnet-4-6) y devuelve un veredicto: DANGER, SUSPICIOUS, REVIEW u OK, con una explicación de una frase. La IA se usa solo en la zona gris.
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
Claves de API: https://console.anthropic.com — independientes de la suscripción de claude.ai.
¿Sin clave de API? Use el analizador en el navegador
Pegue la salida del escaneo en el artefacto wp2shell Report Analyzer de Claude.ai — realiza la misma evaluación con IA directamente en el navegador.
Notas
- El escáner no modifica nada. Ejecución segura en servidores de producción en vivo.
- Actualizar WordPress a la versión parcheada cierra la vulnerabilidad, pero no limpia un sitio ya comprometido. Si se encuentran indicadores, restaure desde una copia de seguridad limpia.
- La carpeta
CORE_CACHE (/root/wp2shell-cores/) se reutiliza entre escaneos. Elimínela para forzar una nueva descarga.
- La base de datos
known_shells.sha256 se actualiza automáticamente una vez cada 24 horas.
Licencia
GPL-3.0 — consulte LICENSE
Créditos
Desarrollado por BytesPulse en respuesta a la revelación de wp2shell (julio de 2026).
Información sobre CVE: https://wp2shell.com