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:
- Archivos recientes sospechosos: busca archivos con nombres raros tipo:
wp-admin.old.phpwp-login-new.phpwp-config-backup.php- Archivos con fechas recientes o permisos 777.
- Abre wp-config.php y revisa si al final hay líneas extrañas con
base64_decode,eval,gzinflate, etc. - 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:
- Haz copia de seguridad de
wp-content/uploads(solo imágenes); - Borra todo excepto esa carpeta y
wp-config.php; - Sube una instalación limpia de WordPress (misma versión);
- Vuelve a conectar tu
wp-config.phpy 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:
- Crear un usuario oculto con rol administrador (a veces invisible en el panel);
- Modificar los permisos de los administradores reales para impedir que lo eliminen;
- Insertar backdoors (puertas traseras) para recuperar acceso si lo borras;
- 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
- Instala Wordfence, Sucuri Security o MalCare Free.
- Escanea todo el sitio.
- Cambia todas las contraseñas:
- Admin WordPress
- FTP / Hosting / cPanel
- Base de datos MySQL
- Actualiza plugins, temas y núcleo de WordPress.
- 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.