En este artículo, hablaremos sobre los tipos más comunes de hackeos en WordPress, cómo identificarlos y los diferentes métodos para solucionarlos. Si te encuentras con este tipo de problema, te recomendamos encarecidamente que contactes con un desarrollador web profesional para obtener ayuda adicional. Para más información sobre cómo mejorar la seguridad de tu cuenta de hosting, consulta esta guía.
IMPORTANTE: Antes de realizar cualquier cambio, crea una copia de seguridad completa de tu sitio web.
TEN EN CUENTA: Para reducir el riesgo de futuros hackeos en WordPress, escanea regularmente tu cuenta de hosting con una herramienta antivirus, elimina cualquier archivo malicioso o sospechoso y mantén todos los plugins y temas de tu sitio web actualizados a sus últimas versiones.
Aunque varios problemas diferentes pueden provocar la falta o alteración de archivos predeterminados, la causa más común es el malware inyectado en tu instalación de WordPress. Por suerte, las herramientas antivirus en nuestros servidores Web y de Hosting pueden detectar y poner en cuarentena automáticamente los archivos comprometidos.
Si tus archivos principales de WordPress se infectan, puedes experimentar síntomas como:
Una página en blanco;
Un error 500 Internal Server Error;
Un “Este sitio está experimentando problemas técnicos” (introducido en WordPress 5.2.2);
U otros errores similares.
Para solucionar este problema, simplemente sigue los pasos que se indican a continuación.
Para identificar qué causó el problema en tu sitio, revisa el archivo error_log. Este archivo registra cualquier error crítico que encuentre tu sitio web.
Puedes encontrarlo en tu cuenta de cPanel > el menú “Administrador de archivos” > el directorio raíz de tu instalación de WordPress.
Una vez que accedas a la carpeta raíz del dominio, busca el archivo error_log. Si existe, sigue estos pasos:
Haz clic derecho en el archivo y selecciona Ver:

Dentro del registro, puedes ver un error como: “No such file or directory in…”, seguido de la ruta del archivo que falta. Esto indica que falta un archivo necesario y está impidiendo que el sitio web funcione correctamente.
Por ejemplo:/home/cPuser/public_html/wp-settings.php

Para restaurar el archivo que falta, desplázate hasta la sección "Cómo reemplazar los archivos que faltan" de esta guía.
Si el archivo error_log no está disponible en el directorio raíz de tu sitio web, puedes activar la opción de PHP display_errors en tu cuenta de cPanel. Esta configuración permite que los mensajes de error aparezcan directamente en tu sitio web, facilitando la identificación del problema.
Importante: Por razones de seguridad, asegúrate de desactivar display_errors una vez que termines de solucionar el problema.
Puedes activar la opción de PHP de las siguientes maneras:
A través de php.ini
Además del menú “Ajustes de PHP” de cPanel, también puedes ajustar ciertas configuraciones de un sitio web directamente a través de un archivo php.ini añadiendo o editando las líneas correspondientes en él.
Para activar la opción display_errors, tendrás que añadir la siguiente línea al archivo: display_errors=1
Puedes crear un nuevo archivo php.ini en la carpeta raíz del sitio web y añadir la línea allí, o modificar el archivo generado por el sistema siguiendo los pasos a continuación.
Inicia sesión en tu cuenta de cPanel y ve al menú “Administrador de archivos”.
Asegúrate de que la opción “Mostrar archivos ocultos (dotfiles)” esté activada en la configuración:

Navega al siguiente directorio: /home/cPanel_user/.system-php/ini

Selecciona la versión de PHP asignada a tu dominio y luego selecciona el directorio del dominio. Por ejemplo, la ruta completa puede ser:
/home/cPanel_user/.system-php/ini/7.0/testwebsite.com
Haz clic derecho en el archivo php.ini y selecciona Editar.
Añade la siguiente línea al archivo: display_errors=1
A través de .htaccess
Para activar la opción display_errors de PHP a través del archivo .htaccess, tendrás que editar el archivo dentro del directorio raíz del sitio web en el “Administrador de archivos” y añadir la siguiente línea allí:php_value display_errors 1
Los pasos detallados para localizar el archivo .htaccess se encuentran en este artículo.
Después de realizar los cambios, haz clic en Guardar.
WordPress utiliza una estructura de archivos simple y organizada, lo que facilita la restauración de archivos que faltan o están dañados. Se recomienda encarecidamente reemplazar los archivos principales predeterminados, ya que garantiza que cualquier archivo comprometido por malware se restaure completamente. Sin embargo, procede con precaución: reemplazar ciertos archivos o carpetas puede provocar la pérdida de datos si no se hace correctamente.
Sigue los pasos a continuación para reemplazar archivos de WordPress que faltan:
Inicia sesión en tu cPanel y ve a Softaculous Apps Installer.
Crea una nueva instalación de WordPress en un subdirectorio temporal. Para ello, haz clic en el icono de WordPress y luego selecciona Instalar:

Serás redirigido a la página de configuración de la instalación. Allí, selecciona el nombre de dominio en cuestión en el menú desplegable e introduce el nombre de una subcarpeta en el campo En el directorio.
En este ejemplo, usamos la subcarpeta ” fix” para la instalación de WordPress:

NOTA: Reemplazar todos los archivos predeterminados actualizará tu instalación existente a la versión utilizada en la instalación temporal “fix”, y mezclar archivos de diferentes versiones puede causar conflictos en el sistema y fallos en la funcionalidad del sitio.
Si es importante mantener tu versión actual de WordPress, o si planeas reemplazar solo archivos específicos, verifica la versión de tu sitio dentro del archivo /wp-includes/version.php y asegúrate de que la nueva instalación use la misma versión de WordPress:

Puedes elegir la versión de WordPress para la nueva instalación directamente en la ventana de instalación:

Una vez que todas las configuraciones estén listas, haz clic en Instalación rápida o desplázate hasta la parte inferior de la página de instalación y haz clic en Instalar.
Después de completar la nueva instalación de WordPress, sus archivos aparecerán en el “Administrador de archivos” > el directorio raíz de tu dominio. Abre la carpeta haciendo doble clic en ella:

Para reemplazar un archivo específico que falta (por ejemplo, wp-settings.php), localiza ese archivo dentro del directorio de la nueva instalación.
Después de esto, mueve el archivo al directorio raíz actual de tu sitio web haciendo clic derecho sobre el archivo > haz clic en Mover > introduce la ruta a la carpeta raíz de tu sitio web > haz clic en Mover archivo(s):

Una vez completado, el archivo que faltaba ha sido restaurado y tu sitio web debería cargarse correctamente.
En el proceso de reemplazo de todos los archivos predeterminados de WordPress para un sitio web, los pasos 1-6 son los mismos que en la sección “Cómo reemplazar archivos de WordPress que faltan”.
Después de completar estos pasos y crear la nueva instalación de WordPress, para reemplazar todos los archivos predeterminados en la carpeta raíz de tu sitio web, sigue estos pasos:
Abre la carpeta raíz de la nueva instalación de WordPress:

Dentro de la nueva carpeta de instalación, elimina los siguientes archivos y carpetas:

.htaccess
wp-config.php
wp-content
Estos archivos y carpetas contienen la configuración y el contenido de tu sitio, y deben permanecer sin cambios.
Luego, mueve los archivos restantes al directorio raíz de tu sitio principal. Para ello, utiliza el botón Seleccionar todo > haz clic en Mover > introduce la ruta a la carpeta raíz de tu sitio > haz clic en Mover archivo(s):

Tus archivos principales de WordPress han sido reemplazados por completo. Visita tu sitio web para confirmar que todo carga correctamente.
Si el sitio sigue mostrando errores, revisa de nuevo el error_log. En la mayoría de los casos, los problemas adicionales son causados por archivos de temas o plugins que faltan.
La falta de archivos de temas o plugins puede ocurrir por varias razones, pero la causa más común es el malware que infecta y elimina componentes esenciales de tu instalación de WordPress.
Si falta algún archivo de plugin o tema de WordPress, puedes experimentar:
Una página en blanco;
Un error 500 Internal Server Error;
Un “Este sitio está experimentando problemas técnicos” (introducido en WordPress 5.2.2);
Una página parcialmente cargada o visualmente “rota”.
Para obtener ayuda con el diagnóstico del problema, consulta las siguientes secciones de este artículo: Revisa el archivo error_log de tu sitio web y Activa la opción display_errors de PHP.
Puedes ver mensajes de error similares a los siguientes en tu error_log o directamente en el sitio web:
PHP Fatal error: Uncaught Error: Call to undefined function sample_function() in /home/cPaneluser/...
A continuación, se muestra un ejemplo de un error causado por un archivo de plugin dañado o que falta:

Para restaurar el archivo que falta, simplemente reinstala el tema o plugin afectado.
NOTA: Los archivos functions.php que faltan en los temas suelen estar relacionados con el malware wp-vcd.php, que normalmente se encuentra en el directorio /wp-includes. Antes de instalar un tema nuevo, elimina wp-vcd.php si existe, o, si quieres asegurarte de la máxima seguridad, reemplaza todos los archivos predeterminados de WordPress como se describe anteriormente.
En algunos casos, cuando tu sitio web se infecta con malware, puede empezar a redirigir a los visitantes a páginas dañinas o sospechosas. Este problema suele estar causado por un plugin o tema inseguro, que permite a los atacantes modificar las URLs de la base de datos o alterar los archivos de tu sitio web.
NOTA: Nunca hagas clic en ninguno de los enlaces redirigidos. Hacerlo puede infectar tu ordenador personal con malware:

Para solucionar las redirecciones maliciosas, sigue los pasos a continuación:
Localiza un archivo de configuración de base de datos de tu sitio web - wp-config.php en tu cPanel > Administrador de archivos > la carpeta raíz del sitio web. Abre el archivo y busca el nombre de la base de datos del sitio web allí:

Luego, abre la base de datos asignada a tu sitio web en el menú phpMyAdmin de tu cPanel haciendo clic en él y navega hasta la tabla wp_options (“wp_” es el prefijo predeterminado; el tuyo puede ser diferente):

Revisa los valores de los campos siteurl y home y, si ves URLs maliciosas o sospechosas allí, reemplázalas por el nombre real de tu dominio:

Escanea el resto de tu base de datos en busca de URLs maliciosas similares y reemplázalas según corresponda.
Reemplaza temporalmente tu archivo actual .htaccess por una versión predeterminada limpia. Es mejor renombrar el archivo existente (por ejemplo, .htaccess_old) y crear uno nuevo desde cero.
Para renombrar el archivo, haz doble clic en él > selecciona Renombrar de la lista > introduce un nuevo nombre de archivo > y pulsa Renombrar archivo.
Después, para crear un archivo nuevo, haz clic en + Archivo > ponle el nombre .htaccess > y selecciona Crear nuevo archivo.
Una vez creado el nuevo .htaccess, edítalo haciendo clic derecho sobre él > selecciona Editar de la lista. Cuando se abra la ventana de edición, pega las siguientes reglas predeterminadas de WordPress en el archivo:# BEGIN WordPressRewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]# END WordPress
Haz clic en Guardar cambios.
Si tu sitio web sigue redirigiendo, intenta reemplazar todos los archivos principales de WordPress.
También puedes desactivar temporalmente todos los plugins desde el panel de WordPress o la base de datos, e ir activándolos uno a uno. Una vez que todos los plugins estén activados, revisa el sitio web para detectar cuál causa el problema de redirección maliciosa.