{"id":2218,"date":"2020-02-18T12:31:08","date_gmt":"2020-02-18T11:31:08","guid":{"rendered":"https:\/\/www.lucushost.com\/blog\/?p=2218"},"modified":"2025-10-24T11:21:08","modified_gmt":"2025-10-24T10:21:08","slug":"vulnerabilidad-themegrill-demo-importer","status":"publish","type":"post","link":"https:\/\/www.lucushost.com\/blog\/vulnerabilidad-themegrill-demo-importer\/","title":{"rendered":"Una vulnerabilidad en el plugin ThemeGrill Demo Importer permite acceder a WordPress como administrador"},"content":{"rendered":"<p>El pasado 6 de febrero se detect\u00f3 y se report\u00f3 <strong>una vulnerabilidad en el plugin ThemeGrill Demo Importer<\/strong>, un complemento que viene integrado en un mont\u00f3n de temas gratuitos de WordPress, as\u00ed como plantillas oficiales de ThemeGrill.<\/p>\n<p>Una vez reportado el error, el domingo 16 de febrero el desarrollador del plugin lanz\u00f3 una nueva versi\u00f3n para corregir este fallo de seguridad.<\/p>\n<p><!--more--><\/p>\n<p>Actualmente, se estima que este plugin est\u00e1 activo en <strong>m\u00e1s de 100.000 instalaciones de WordPress<\/strong> (datos extra\u00eddos del repositorio oficial de WordPress), por lo que es una brecha de seguridad que podr\u00eda afectar a la seguridad de muchas webs si consiguen eliminar el sitio y conseguir el acceso como administrador.<\/p>\n<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Tabla de contenidos:<\/p><ul class=\"toc_list\"><li><a href=\"#Una_vulnerabilidad_que_permite_obtener_acceso_como_administrador_a_tu_WordPress\">Una vulnerabilidad que permite obtener acceso como administrador a tu WordPress<\/a><\/li><li><a href=\"#Detalles_tecnicos\">Detalles t\u00e9cnicos<\/a><\/li><li><a href=\"#Tengo_que_tener_ThemeGrill_Demo_Importer_instalado_en_mi_web\">\u00bfTengo que tener ThemeGrill Demo Importer instalado en mi web?<\/a><\/li><li><a href=\"#Tienes_tu_hosting_con_nosotros\">\u00bfTienes tu hosting con nosotros?<\/a><\/li><\/ul><\/div>\n\n<h2><span id=\"Una_vulnerabilidad_que_permite_obtener_acceso_como_administrador_a_tu_WordPress\">Una vulnerabilidad que permite obtener acceso como administrador a tu WordPress<\/span><\/h2>\n<p>Seg\u00fan el informe publicado por la empresa de seguridad web<strong> <a href=\"https:\/\/www.webarxsecurity.com\/critical-issue-in-themegrill-demo-importer\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">WebARX<\/a><\/strong> afecta a las versiones superiores a 1.3.4 y anteriores a 1.6.1, permitiendo a cualquier usuario no autenticado<strong> borrar toda la base de datos<\/strong> a su estado predeterminado, y como consecuencia, tomar el control como administrador de la web.<\/p>\n<p>Eso s\u00ed, para que suceda esto y puedan acceder con el usuario administrador a tu web, es necesario que haya registrado un usuario \u00abadmin\u00bb en la base de datos. De no haberlo, tan solo podr\u00edan realizar el borrado de la misma.<\/p>\n<h2><span id=\"Detalles_tecnicos\">Detalles t\u00e9cnicos<\/span><\/h2>\n<p>Cuando se instala y se activa una plantilla de ThemeGrill, el plugin carga el archivo \/includes\/class-demo-importer.php que ejecuta la funci\u00f3n reset_wizard_actions en admin_init en la l\u00ednea 44.<\/p>\n<p>De esta forma, admin_init se ejecuta no solo en el entorno de administraci\u00f3n de WordPress, sino tambi\u00e9n en \/wp-admin\/admin-ajax.php, donde no es necesario que un usuario se autentique. Algo como:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\u00a0public\u00a0function\u00a0reset_wizard_actions()\u00a0{\r\n    global $wpdb, $current_user;\r\n\r\n    if ( ! empty( $_GET['do_reset_wordpress'] ) ) {\r\n\r\n        \/\/\/\r\n\r\n        if ( 'admin' != $current_user-&gt;user_login ) {\r\n            $user = get_user_by( 'login', 'admin' );\r\n        }\r\n\r\n        if ( empty( $user-&gt;user_level ) || $user-&gt;user_level &lt; 10 ) {\r\n            $user = $current_user;\r\n        }\r\n\r\n        \/\/ Drop tables.\r\n        $drop_tables = $wpdb-&gt;get_col( sprintf( \"SHOW TABLES LIKE '%s%%'\", str_replace( '_', '\\_', $wpdb-&gt;prefix ) ) );\r\n        foreach ( $drop_tables as $table ) {\r\n            $wpdb-&gt;query( \"DROP TABLE IF EXISTS $table\" );\r\n        }\r\n\r\n        \/\/ Installs the site.\r\n        $result = wp_install( $blogname, $user-&gt;user_login, $user-&gt;user_email, $blog_public );\r\n\r\n        \/\/ Updates the user password with a old one.\r\n        $wpdb-&gt;update(\r\n            $wpdb-&gt;users,\r\n            array(\r\n                'user_pass'           =&gt; $user-&gt;user_pass,\r\n                'user_activation_key' =&gt; '',\r\n            ),\r\n            array( 'ID' =&gt; $result['user_id'] )\r\n        );\r\n\r\n        \/\/ Set up the Password change nag.\r\n        $default_password_nag = get_user_option( 'default_password_nag', $result['user_id'] );\r\n        if ( $default_password_nag ) {\r\n            update_user_option( $result['user_id'], 'default_password_nag', false, true );\r\n        }\r\n\r\n        \/\/\/\r\n\r\n        \/\/ Update the cookies.\r\n        wp_clear_auth_cookie();\r\n        wp_set_auth_cookie( $result['user_id'] );\r\n\r\n        \/\/ Redirect to demo importer page to display reset success notice.\r\n        wp_safe_redirect( admin_url( 'themes.php?page=demo-importer&amp;browse=all&amp;reset=true' ) );\r\n        exit();\r\n    }\r\n}<\/pre>\n<p>Informaci\u00f3n extra\u00edda de WebARX.<\/p>\n<p>Tal y como acabamos de ver, no se requiere autenticaci\u00f3n y solo el par\u00e1metro do_reset_wordpress tiene que estar presente en cualquier URL que contenga \u00abadmin\u00bb. Por ejemplo, basta con acceder a la URL <em>www.tudominio.com\/wp-admin\/admin-post.php?do_reset_wordpress=1<\/em> y tu web estar\u00eda hackeada y tu base de datos vac\u00eda.<\/p>\n<p>Una vez hackeado es posible rellenar la base de datos con la configuraci\u00f3n predeterminada y establecer una nueva contrase\u00f1a para el usuario \u00abadmin\u00bb. Como ya te hemos comentado, para que esto suceda es necesario que exista este tipo de usuario creado en WordPress.<\/p>\n<h2><span id=\"Tengo_que_tener_ThemeGrill_Demo_Importer_instalado_en_mi_web\">\u00bfTengo que tener ThemeGrill Demo Importer instalado en mi web?<\/span><\/h2>\n<p>Este plugin ha sido dise\u00f1ado con el objetivo de facilitar la personalizaci\u00f3n de cualquier tema de ThemeGrill incluyendo contenido demo, tanto a nivel de copy como widgets. Esto incluye la importaci\u00f3n de posts de demostraci\u00f3n, p\u00e1ginas, im\u00e1genes,\u00a0 custom post type, men\u00fas, etiquetas, categor\u00edas e incluso comentarios.<\/p>\n<p>Si ya tienes tu web hecha,<strong> no es necesario que lo mantengas en tu web, ni siquiera desactivado<\/strong>. Como te decimos siempre, si tienes alg\u00fan plugin instalado, pero que ya no est\u00e1s utilizando, lo mejor de todo es que lo elimines por completo de tu instalaci\u00f3n para evitar males mayores.<\/p>\n<p>Aunque un plugin est\u00e9 desactivado, puede suponer un riesgo potencial para tu web. Por ejemplo, en este caso, aunque est\u00e9 desactivado si no lo actualizas o lo eliminas de tu instalaci\u00f3n, un usuario malintencionado podr\u00eda aprovechar este agujero de seguridad para hacer de las suyas.<\/p>\n<h2><span id=\"Tienes_tu_hosting_con_nosotros\">\u00bfTienes tu hosting con nosotros?<\/span><\/h2>\n<p>En LucusHost nos tomamos la seguridad de tu web muy en serio, es por ello que ya hemos llevado a cabo las medidas necesarias para evitar que tu web sea v\u00edctima de esta vulnerabilidad.<\/p>\n<p>Nuestro equipo de sistemas ha eliminado este complemento de todas las instalaciones de WordPress en nuestros planes de <strong><a href=\"https:\/\/www.lucushost.com\/hosting-wordpress\">Hosting WordPress<\/a><\/strong>. Como te hemos indicado, es un plugin de un solo uso, por lo que no va a afectar en absoluto al funcionamiento de tu p\u00e1gina.<\/p>\n<p>Adem\u00e1s, recuerda que tienes acceso a diferentes herramientas que te permiten tener tu web todav\u00eda m\u00e1s segura:<\/p>\n<ul>\n<li><strong>Premium Backup<\/strong>: Realizamos dos <strong><a href=\"https:\/\/www.lucushost.com\/blog\/que-es-un-backup-y-como-hacer-una-copia-de-seguridad-de-tu-web\/\">copias de seguridad de tu p\u00e1gina web<\/a><\/strong> al d\u00eda, con una retenci\u00f3n de hasta 6 meses. Desde tu \u00e1rea de cliente podr\u00e1s acceder a ellas en cualquier momento, descargarlas o hacer una restauraci\u00f3n en solo unos clics.<\/li>\n<li><a href=\"https:\/\/www.lucushost.com\/blog\/imunify360\/\"><strong>Imunify360<\/strong><\/a>: Desde el panel de control cPanel acceder\u00e1s a una suite completa con funciones avanzadas de detecci\u00f3n y <strong><a href=\"https:\/\/www.lucushost.com\/blog\/como-eliminar-malware-web\/\">eliminaci\u00f3n de malware<\/a><\/strong>, prevenci\u00f3n de ataques y tecnolog\u00eda IA para mantener tu web y tu negocio a salvo de cualquier amenaza.<\/li>\n<\/ul>\n<p>\u00bfTienes dudas? Ya sabes que nuestro equipo de soporte disponible 24\/7 para echarte una mano en todo lo que necesites.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El pasado 6 de febrero se detect\u00f3 y se report\u00f3 una vulnerabilidad en el plugin ThemeGrill Demo Importer, un complemento que viene integrado en un mont\u00f3n de temas gratuitos de WordPress, as\u00ed como plantillas oficiales de ThemeGrill. Una vez reportado el error, el domingo 16 de febrero el desarrollador del plugin lanz\u00f3 una nueva versi\u00f3n para corregir este fallo de seguridad.<\/p>\n","protected":false},"author":3,"featured_media":2221,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[42,43],"tags":[56,51,52],"_links":{"self":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts\/2218"}],"collection":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/comments?post=2218"}],"version-history":[{"count":14,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts\/2218\/revisions"}],"predecessor-version":[{"id":13642,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts\/2218\/revisions\/13642"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/media\/2221"}],"wp:attachment":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/media?parent=2218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/categories?post=2218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/tags?post=2218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}