Click2Shell aprovecha la sesión activa de la víctima y el mecanismo integrado de instalación de temas

Un solo acceso a un enlace preparado puede terminar con la ejecución de código PHP en un servidor WordPress, si en ese momento el administrador ya ha iniciado sesión en el panel de control. Para la cadena Click2Shell se publicó una prueba de concepto completa que muestra el trayecto desde una URL corriente hasta la ejecución de código sin la cuenta del atacante.
La primera parte del ataque se localiza en el núcleo de WordPress y está relacionada con CSRF y la inyección en un selector de jQuery. El parámetro con el nombre del tema lo procesan dos componentes. La API del catálogo WordPress.org limpia el valor y lo convierte en un identificador habitual de tema, mientras que el JavaScript en el panel de administración conserva los caracteres especiales originales e inserta la cadena en el selector sin el escape adecuado.
La cadena preparada modifica la lógica del selector de modo que el JavaScript estándar de WordPress llega hasta el botón real de instalación de temas y dispara en él el evento click. El atacante no necesita nonce ni el permiso install_themes. El navegador del administrador ya autenticado proporciona los permisos necesarios en nombre de la víctima. Las cuentas de autor y editor no pueden poner en marcha este escenario.
El tema nuevo permanece sin activar, por lo que la apariencia del sitio no cambia. El problema surge durante la vista previa. El Personalizador de WordPress carga el archivo functions.php del tema aún no activado, por lo que su código del lado del servidor puede empezar a ejecutarse antes de que el propietario cambie el diseño del sitio. Una dependencia similar entre las acciones del administrador y la posterior activación del ataque se detectó recientemente en otro componente popular de WordPress.
Para la demostración, el equipo pwn.ai eligió el tema Mobile Repair Zone 2.5.4. En él existía un manejador AJAX sin verificación de nonce ni de permisos del usuario. El manejador aceptaba la URL del paquete del plugin, descargaba el archivo, descomprimía el contenido y cargaba el archivo PHP seleccionado. Tras la instalación forzada del tema y su carga mediante el Personalizador, el atacante obtiene la posibilidad de ejecutar su propio PHP con la cuenta del servidor web. Errores similares en la subida de archivos ejecutables ya habían provocado la toma de control de sitios WordPress a través de plugins de terceros.
La cadena completa no constituye un ataque remoto autónomo. El administrador debe estar autenticado y abrir la dirección especialmente preparada, por ejemplo desde un correo de phishing dirigido. Otra opción supone una vulnerabilidad XSS existente que obligue al navegador del administrador a enviar la solicitud de forma automática. Hasta ahora no hay confirmaciones públicas de explotación de Click2Shell en ataques reales.
WordPress cerró la falla original el 17 de septiembre en la versión 7.1.1. Los desarrolladores comenzaron a escapar el identificador del tema mediante $.escapeSelector() y limitaron el selector a los elementos reales div.theme. Las correcciones también se trasladaron a las ramas antiguas de WordPress que aún reciben soporte. Para los sitios donde una actualización inmediata no es posible, tener activada la constante DISALLOW_FILE_MODS impide que la cadena instale nuevos temas y complementos.
El análisis técnico completo de pwn.ai contiene un PoC funcional y muestra en detalle la transición desde la instalación forzada del tema hasta la ejecución de PHP en el servidor. En el momento de la publicación todavía no había un CVE asignado a la falla principal de Click2Shell. WordPress informó a los investigadores de que se planea asignar un identificador.
Un mes antes, la misma pwn.ai encontró en WordPress otra cadena que recibió el nombre XSS2Shell. Allí el administrador autenticado también se convertía en el eslabón clave del ataque, pero el punto de entrada inicial se encontraba en el tratamiento de datos en la página de acceso.
En julio se detectó en WordPress una cadena aún más autónoma llamada wp2shell. La combinación de dos errores en el núcleo permitía atacar versiones vulnerables sin cuenta y sin el clic del administrador, por lo que los desarrolladores activaron las actualizaciones automáticas forzadas.
Paralelamente, continúan encontrándose cadenas peligrosas en extensiones del CMS. En septiembre se detectaron en The Events Calendar dos RCE críticas con cientos de miles de instalaciones potencialmente afectadas. A diferencia de Click2Shell, ambas fallas estaban directamente en el plugin y no requerían un administrador autenticado.