cd ~/blog

~/vulns/wordpress-theme-editor-rce.md

WordPress Theme Editor RCE

rceautor: Jordy Pérez Osorio aviso legal
WordPressRCE

~2 min de lectura


1. Descripción técnica

WordPress incluye un editor administrativo que permite modificar desde el navegador los archivos de plugins y temas. Si una cuenta con la capacidad edit_themes controla un archivo PHP escribible de un tema que el servidor ejecuta, puede convertir esa capacidad de edición en Remote Code Execution (RCE) con la identidad del proceso web.

Este comportamiento no demuestra por sí solo una vulnerabilidad de WordPress. Es una técnica posterior a la autenticación cuyo riesgo aparece cuando una cuenta administrativa es comprometida, el editor permanece habilitado y los archivos PHP son modificables desde la aplicación.

1.1 Mecanismo

// renderizando diagrama…

El editor actúa como una primitiva de escritura limitada a archivos admitidos. La ejecución aparece cuando el archivo modificado forma parte de una petición posterior, por ejemplo una plantilla 404.php cargada al solicitar una ruta inexistente.

2. Impacto

La técnica permite ejecutar código PHP y comandos del sistema con los permisos del proceso web. No concede root por sí sola ni implica que cualquier usuario de WordPress pueda editar archivos: exige una cuenta con la capacidad adecuada y que el archivo objetivo sea escribible.

3. Condiciones necesarias

  • Acceso autenticado a una cuenta con edit_themes o una capacidad equivalente.
  • Theme File Editor habilitado.
  • Al menos un archivo PHP del tema escribible desde WordPress.
  • Una ruta o evento que haga que PHP cargue el archivo modificado.
  • Permiso del proceso web para ejecutar la acción buscada.

4. Validación y detección

La presencia del menú del editor no basta para confirmar RCE. Hay que verificar que una cuenta pueda guardar cambios en un PHP y que una petición posterior cargue ese archivo.

Como señales de detección conviene revisar cambios inesperados en archivos de temas, solicitudes administrativas al editor, plantillas con funciones de ejecución de procesos y conexiones salientes iniciadas por el usuario del servidor web.

5. Explotación documentada en los writeups

5.1 009-grotesque

Una cuenta administrativa obtenida mediante una contraseña predecible permite modificar 404.php. Al solicitar una página inexistente, WordPress carga la plantilla alterada y ejecuta una reverse shell como www-data.

6. Mitigación

  • Proteger las cuentas administrativas con contraseñas únicas y MFA cuando esté disponible.
  • Deshabilitar el editor integrado con define( 'DISALLOW_FILE_EDIT', true );.
  • Evitar que el proceso web tenga permisos de escritura sobre código desplegado cuando la operación del sitio no lo requiera.
  • Supervisar la integridad de plugins y temas.
  • Separar las credenciales administrativas de WordPress de otras cuentas y servicios.

7. Clasificación

  • Tecnología: WordPress y PHP.
  • Vector: autenticado, mediante el panel administrativo.
  • Primitiva: escritura de código PHP seguida de su carga por el servidor.
  • Impacto: ejecución de código con la identidad del proceso web.

8. Referencias y conexiones

// relacionados