Infección típica en WordPress donde el malware crea un usuario administrador falso

Una infección de WordPress con creación de un usuario administrador falso (un clásico síntoma de malware que secuestra privilegios).
Vamos paso a paso para recuperar el control total del sitio y eliminar el usuario malicioso aunque WordPress te diga “no tienes permisos para borrar ese usuario”.


🧩 1️⃣ Diagnóstico del problema

Tu cuenta de WordPress actual no tiene privilegios “administrator” reales, aunque así aparezca visualmente en el panel.
Esto pasa porque el malware:

  • Crea un usuario fantasma con user_level = 10 (administrador real);
  • Reasigna el rol de tu usuario a un rol falso o degradado;
  • Bloquea la opción de eliminar ciertos usuarios o cambiar permisos.

Por eso, WordPress muestra:

“Lo siento, no tienes permisos para borrar ese usuario.”


⚙️ 2️⃣ Solución vía base de datos (phpMyAdmin)

En el panel del hosting → phpMyAdmin → base de datos de tu sitio (normalmente wp_ o prefijo personalizado):

🔹 Paso 1: Identificar tu usuario real

Ejecuta esta consulta SQL:

SELECT ID, user_login, user_email, user_status FROM wp_users;

👉 Busca tu usuario (por correo o nombre).
Toma nota del ID (por ejemplo, 2).


🔹 Paso 2: Darle privilegios de administrador reales

Ejecuta esto reemplazando 2 por tu ID real:

UPDATE wp_usermeta 
SET meta_value = 'a:1:{s:13:"administrator";b:1;}'
WHERE user_id = 2 AND meta_key = 'wp_capabilities';

Y luego esto:

UPDATE wp_usermeta 
SET meta_value = '10'
WHERE user_id = 2 AND meta_key = 'wp_user_level';

👉 Esto restaura tu rol real de administrador completo.


🔹 Paso 3: (Opcional) Forzar nuevo usuario admin limpio

Si prefieres crear uno totalmente nuevo:

INSERT INTO wp_users (user_login, user_pass, user_nicename, user_email, user_registered, user_status, display_name)
VALUES ('nuevoadmin', MD5('TuContraseñaSegura'), 'nuevoadmin', 'tuemail@dominio.com', NOW(), 0, 'Nuevo Admin');

Ahora dale privilegios:

INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
VALUES ((SELECT ID FROM wp_users WHERE user_login = 'nuevoadmin'), 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}');

Y:

INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
VALUES ((SELECT ID FROM wp_users WHERE user_login = 'nuevoadmin'), 'wp_user_level', '10');

Luego inicia sesión con este nuevo usuario y elimina los falsos.


🦠 3️⃣ Limpieza del malware

Ya que el servidor reportó 3 infecciones, revisa:

En public_html/ o la raíz de tu sitio:

  1. Archivos recientes sospechosos: busca archivos con nombres raros tipo:
    • wp-admin.old.php
    • wp-login-new.php
    • wp-config-backup.php
    • Archivos con fechas recientes o permisos 777.
  2. Abre wp-config.php y revisa si al final hay líneas extrañas con base64_decode, eval, gzinflate, etc.
  3. Verifica wp-content/uploads/ — muchos malwares se esconden allí.

Puedes correr una búsqueda SSH (si tienes acceso):

grep -r "base64_decode" public_html/
grep -r "eval(" public_html/

🔒 4️⃣ Refuerza la seguridad

Después de recuperar el control:

  • Cambia todas las contraseñas (hosting, base de datos, WordPress).
  • Instala Wordfence o MalCare Free y haz un escaneo completo.
  • Actualiza todos los plugins y el theme.
  • Revisa si hay usuarios adicionales en Usuarios → Todos los usuarios y elimina los que no reconozcas.

🚀 Opcional: Limpieza profunda manual

Si el malware regeneró usuarios o código:

  1. Haz copia de seguridad de wp-content/uploads (solo imágenes);
  2. Borra todo excepto esa carpeta y wp-config.php;
  3. Sube una instalación limpia de WordPress (misma versión);
  4. Vuelve a conectar tu wp-config.php y la base de datos limpia.

una infección típica en WordPress donde el malware crea un usuario administrador falso.
Te explico cómo funciona, cómo detectarlo y cómo eliminarlo completamente, incluso si el sistema te dice “no tienes permisos”.


🧠 ¿Qué es esta infección?

El ataque consiste en inyectar código malicioso en los archivos del sitio o la base de datos para:

  1. Crear un usuario oculto con rol administrador (a veces invisible en el panel);
  2. Modificar los permisos de los administradores reales para impedir que lo eliminen;
  3. Insertar backdoors (puertas traseras) para recuperar acceso si lo borras;
  4. Usar tu sitio para spam, redirecciones o ataques externos.

🕵️‍♂️ 1️⃣ Detectar el usuario administrador falso

Entra a phpMyAdmin y ejecuta:

SELECT ID, user_login, user_email, user_registered FROM wp_users ORDER BY ID DESC;

👉 Busca:

  • Usuarios con correos raros (gmail, outlook, o dominios extraños);
  • Usuarios creados recientemente sin tu conocimiento;
  • O un usuario “oculto” que no ves en el panel de WordPress.

⚠️ Nota: el prefijo wp_ puede variar (p. ej. wpabc_), ajústalo según tu caso.


⚙️ 2️⃣ Revisar sus permisos

Con el ID del usuario sospechoso (por ejemplo, 7):

SELECT * FROM wp_usermeta WHERE user_id = 7;

Si ves algo como:

meta_key = wp_capabilities
meta_value = a:1:{s:13:"administrator";b:1;}

👉 Ese usuario tiene privilegios de administrador.


🚨 3️⃣ Restaurar tus permisos de administrador

Si WordPress te bloquea con “no tienes permisos”, el malware cambió tu rol.

Busca tu ID:

SELECT ID FROM wp_users WHERE user_login = 'tusuario';

Luego ejecuta (reemplaza 2 por tu ID real):

UPDATE wp_usermeta 
SET meta_value = 'a:1:{s:13:"administrator";b:1;}'
WHERE user_id = 2 AND meta_key = 'wp_capabilities';

Y:

UPDATE wp_usermeta 
SET meta_value = '10'
WHERE user_id = 2 AND meta_key = 'wp_user_level';

🔹 Con esto recuperas tu rol de administrador completo.
Cierra sesión y vuelve a entrar.


🗑️ 4️⃣ Eliminar el usuario falso

Una vez recuperes acceso:

  • En el panel de WordPress → Usuarios → Elimina el usuario sospechoso.
    Si no aparece, hazlo por SQL:
DELETE FROM wp_users WHERE user_login = 'usuario_raro';
DELETE FROM wp_usermeta WHERE user_id = ID_DEL_USUARIO_RARO;

🧹 5️⃣ Limpieza de malware

Busca código malicioso en el servidor:

🔎 Desde el administrador de archivos o SSH:

grep -r "base64_decode" public_html/
grep -r "gzinflate" public_html/
grep -r "eval(" public_html/
grep -r "shell_exec" public_html/

Revisa especialmente:

  • /wp-content/uploads/
  • /wp-includes/
  • /wp-admin/
  • wp-config.php (si tiene líneas añadidas al final)

🧰 6️⃣ Escaneo y protección

  1. Instala Wordfence, Sucuri Security o MalCare Free.
  2. Escanea todo el sitio.
  3. Cambia todas las contraseñas:
    • Admin WordPress
    • FTP / Hosting / cPanel
    • Base de datos MySQL
  4. Actualiza plugins, temas y núcleo de WordPress.
  5. Elimina plugins pirata o nulos (los más vulnerables).

🔒 7️⃣ Refuerzo final

Agrega en wp-config.php estas líneas (si no existen):

define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', false);

Y, si usas .htaccess, refuerza con:

<FilesMatch "\.(php|phtml)$">
  Order Deny,Allow
  Deny from all
</FilesMatch>

Excepto para las carpetas wp-admin y wp-includes legítimas.


💡 Consejo extra:

Muchos backdoors crean usuarios automáticamente a partir de un payload escondido en uploads/ o wp-includes/class-wp.php.
Si lo borras sin limpiar el código, volverá a aparecer.
Por eso es clave buscar funciones ocultas (create_user, wp_insert_user, add_user_to_blog, etc.) en archivos recientes.

Deja un comentario