Herramientas de detección y validación para la exposición del núcleo de WordPress a wp2shell
(CVE-2026-63030 / CVE-2026-60137). Los modos se seleccionan con una bandera, y el
objetivo es posicional. --scan toma la huella de la versión del núcleo y confirma que la
ruta REST /batch/v1 es alcanzable sin enviar una carga de exploit; los
modos --check/--read/--shell/--rce/--root-prereq son el
PoC de validación para uso autorizado en laboratorio.
wp2shell.py es un script único que solo usa la biblioteca estándar; no tiene
dependencias externas. Cada invocación imprime un banner de ZephrSec en stderr antes de
ejecutarse (permanece fuera de stdout, por lo que la salida JSON de --scan -j no se ve afectada).
Banderas de comando
Se requiere exactamente una bandera de modo; el objetivo es posicional (una URL para cada
modo, o una lista de hosts para --scan).
Opciones: -f/--file archivo de hosts (uno por línea), -j/--json salida JSON,
-t/--threads concurrencia (por defecto 10).
PoC de validación
Los modos --check/--read/--shell/--rce/--root-prereq envían cargas de exploit
reales. Ejecútalos solo contra el laboratorio local incluido u otros sistemas que sean
tuyos y sobre los que tengas autorización explícita para realizar pruebas. --shell y --rce
realizan ejecución remota de código y están pensados para el laboratorio/objetivos autorizados; --rce en un
host que no sea de loopback requiere --authorized. --root-prereq usa el mismo
plugin de diagnóstico protegido por token para comprobar los requisitos previos de shell a root, pero no
ejecuta una escalada de privilegios local.
--shell necesita una contraseña de administrador recuperada/descifrada. --rce es la
cadena pre-autenticación sin credenciales: forja su propio administrador a través de la
SQLi (oEmbed → changeset → parse_request reentrante) y luego despliega el
webshell; no se requiere contraseña.
--shell, --rce y --root-prereq solicitan autorización interactiva y/N
antes de enviar cualquier carga de ejecución de código (se abortan si
stdin no es interactivo/EOF). Pasa -y/--yes para omitir el aviso en la
automatización contra el laboratorio o un objetivo autorizado.
Los diffs de parches utilizados para fundamentar el PoC se guardan en poc/diffs/, con notas
de investigación en poc/RESEARCH.md. La SQLi es completamente reconstruible a partir de la
corrección de author__not_in. La cadena --rce sin credenciales (oEmbed → changeset →
reentrada → creación de administrador) reproduce el RCE predeterminado de stock contra el
laboratorio incluido; --shell es la ruta alternativa mediante una credencial de administrador
recuperada/descifrada para la carga autenticada de plugins y la ejecución de comandos.