Logo
WP Fix by Blimx

Recuperación 2FA en WordPress — Sin Códigos de Backup

Actualizado:
AccessSecurity

La situación del lockout 2FA

Configuraste autenticación de dos factores en WordPress hace meses. Cambiaste de teléfono. Tu teléfono viejo está muerto. No puedes generar códigos. No tienes los códigos de backup (o los tienes pero perdiste el papel).

Tu sitio WordPress está online y funcionando — tú estás bloqueado, no tus visitantes. Pero no puedes actualizar plugins, publicar contenido nuevo, ni siquiera cambiar la contraseña.

Este artículo es el procedimiento de recuperación, ordenado de menos destructivo a más.

Método 1 — Bypass basado en email (si tu plugin lo soporta)

La mayoría de plugins 2FA ofrecen "enviar código de recuperación a email" como opción. El trigger está en la pantalla de prompt 2FA.

Plugins que soportan esto: - WP 2FA (por WP White Security) - Two-Factor (por el equipo WP) - WordFence Login Security - iThemes Security

Pasos: 1. Ve a tu login WordPress 2. Ingresa usuario y contraseña 3. En la pantalla de prompt 2FA, busca link "Send code to email" 4. Da clic y revisa tu email 5. Ingresa el código del email

Esto solo funciona si puedes acceder al email admin. Si no puedes, pasa al Método 2.

Método 2 — Deshabilitar plugin 2FA vía FTP/SSH

Este es el método de recuperación caballo de batalla.

Vía FTP: 1. Conéctate vía FTP a tu sitio 2. Navega a /wp-content/plugins/ 3. Renombra la carpeta del plugin 2FA (e.g. two-factortwo-factor-DISABLED) 4. WordPress detecta plugin faltante, lo desactiva 5. Inicia sesión normalmente 6. O configura 2FA fresco, o renombra carpeta del plugin de vuelta y reconfigura

Vía SSH:

cd /var/www/yoursite/wp-content/plugins
mv two-factor two-factor-DISABLED

Vía WP-CLI:

wp plugin deactivate two-factor

Esto es lo que usamos en el 90% de casos de recuperación. Toma 30 segundos.

Método 3 — Editar usermeta para remover secreto 2FA

Si no puedes desactivar el plugin (e.g. es un plugin must-use o parte de una suite de seguridad), puedes remover manualmente los datos 2FA para tu cuenta.

Vía WP-CLI:

wp user meta delete <user_id> _two_factor_provider
wp user meta delete <user_id> _two_factor_enabled_providers
wp user meta delete <user_id> _two_factor_backup_codes

Los nombres de meta key varían por plugin. Comunes:

  • _two_factor_provider
  • _two_factor_secret
  • _googleauthenticator_secret
  • _wf_loginshield_secret

Vía phpMyAdmin/MySQL:

SELECT user_id, meta_key FROM wp_usermeta 
WHERE meta_key LIKE '%two_factor%' OR meta_key LIKE '%totp%' OR meta_key LIKE '%2fa%';

DELETE FROM wp_usermeta WHERE user_id = X AND meta_key IN ('_two_factor_secret', '_two_factor_enabled_providers');

Tras remover el secreto, inicia sesión con usuario + contraseña solamente. Configura 2FA fresco una vez logueado.

Método 4 — Reseteo directo de contraseña por base de datos

Si también olvidaste tu contraseña (no solo 2FA), resetea directamente:

UPDATE wp_users 
SET user_pass = MD5('NewTempPassword123!') 
WHERE user_login = 'youradmin';

El formato de contraseña de WordPress no es realmente MD5, pero los hashes MD5 pasan y son re-hasheados en el siguiente login. Una vez inicies sesión con NewTempPassword123!, cambia inmediatamente a una contraseña fuerte.

Con WP-CLI (más robusto):

wp user update <user_login> --user_pass="NewTempPassword123!"

Esto usa el algoritmo de hashing apropiado.

Método 5 — Creación de usuario de recuperación

Si tu cuenta está en un estado extraño donde múltiples métodos no funcionan, crea un usuario admin fresco:

wp user create rescueadmin admin@yoursite.com --role=administrator --user_pass="StrongRecoveryPassword123!"

Inicia sesión como rescueadmin. Arregla problemas con la cuenta original desde ahí.

Después de resuelto, borra el usuario de rescate:

wp user delete rescueadmin --reassign=1

Método 6 — Emergencia wp-config.php

WordPress soporta un modo de emergencia donde puedes bypasear ciertos checks de auth. Añade a wp-config.php:

define('CONCATENATE_SCRIPTS', false);

Después visita wp-login.php?action=resetpass. Resetea contraseña vía email si el usuario tiene email correcto.

Para bypass más agresivo:

// TEMPORAL — REMOVER TRAS USO
add_filter('wp_authenticate_user', function($user) { return $user; }, 999);

Esto deshabilita todos los filtros de login incluyendo 2FA. Inicia sesión. Remueve el filtro inmediatamente.

Por qué estos métodos funcionan

El sistema de auth de WordPress es por capas. 2FA se engancha en checks post-login. Por: - Remover el plugin 2FA → no pasa check post-login - Remover el secreto 2FA de usermeta → no hay secreto para comparar - Resetear contraseña → bypasea 2FA en algunos plugins que atan 2FA a verificación de contraseña

Cada método apunta a una capa diferente.

Previniendo futuros lockouts

Tras recuperación, configura 2FA resiliente:

  1. Guarda códigos de backup — imprime, guarda en caja fuerte ignífuga
  2. Añade múltiples dispositivos — tu teléfono Y una llave hardware (YubiKey)
  3. Añade SMS como fallback — incluso si SMS es menos seguro, es mejor que lockout total
  4. Añade recuperación email admin — asegura que el email de recuperación es uno que controlas

Errores comunes durante recuperación 2FA

  • Intentar reset de contraseña antes de revisar 2FA — muchos flujos de "olvidé contraseña" también requieren 2FA
  • Resetear base de datos manualmente con hash MD5 — el salting de WordPress puede no aceptarlo; usa WP-CLI
  • No remover usuario de rescate tras recuperación — deja superficie de ataque
  • Guardar códigos de backup en mismo lugar que app 2FA — derrota el propósito

Cuándo llamar a un especialista

Si tu sitio es crítico y la base de datos/FTP no es accesible (o no sabes cómo usarlos), proveemos recuperación 2FA en menos de una hora sin riesgo de pérdida de datos.

Recuperación 2FA en minutos. Para problemas de acceso más amplios ve recuperación admin bloqueado.