Un popular plugin de temas para WordPress que cuenta con más de 200,000 instalaciones activas contiene una vulnerabilidad de software severa y fácil de explotar que, si no se parchea, podría permitir a los atacantes remotos no autenticados comprometer una amplia gama de sitios web y blogs.
El plugin vulnerable en cuestión es ‘ThemeGrill Demo Importer‘ el cual viene incluido en temas tanto gratuitos como premium vendidos por la compañía de desarrollo de software ThemeGrill.
El plugin ThemeGrill Demo Importer fue sido diseñado para permitir a los administradores de sitios de WordPress importar contenido de demostración, widgets y configuraciones de ThemeGrill, un amplio catálogo de temas para WordPress, lo que les facilita la personalización rápida tanto del tema importado como del propio sitio WordPress.
Según un informe que la compañía de seguridad de WebARX ha colgado en su web, cuando se instala y activa un tema ThemeGrill, el complemento afectado ejecuta algunas funciones con privilegios administrativos sin verificar si el usuario que ejecuta el código está autenticado y es un administrador.
El fallo podría en algún caso permitir que los atacantes remotos no autenticados borren toda la base de datos de sitios web específicos a su estado predeterminado, como paso previo a un inicio de sesión con credenciales por defecto, lo que, en última instancia, supondría la toma de control total del sitio web.
Entrando en detalles técnicos, el fallo radica en que una vez el plugin detecta que un tema ThemeGrill está instalado y activado, carga el archivo /includes/class-demo-importer.php que llama a reset_wizard_actionsen admin_init en su línea 44
La función admin_init se ejecuta no solo en el entorno de administración sino también en llamadas a /wp-admin/admin-ajax.php que no requieren que un usuario se autentique.
Igualmente, no hay verificación de autenticación en las funciones implicadas, y tan solo es necesario que el parámetro do_reset_wordpress esté presente en la URL de cualquier página basada en el ‘admin’ de WordPress, incluyendo /wp-admin/admin-ajax.php.
Adjuntamos el código implicado tomado de la página original de WebARX, con los comentarios o el código irrelevante eliminado: