Seguridad WordPress

Evitar la enumeración de usuarios en WordPress parte 1

La enumeración de usuarios es una vulnerabilidad que podría ser utilizada por un atacante o un usuario malicioso para intentar obtener un listado de los usuarios de la plataforma y posteriormente utilizar dicha información para planificar y generar ataques de mayor impacto, como por ejemplo, ataques de averiguación de contraseñas por fuerza bruta o diccionario sobre usuarios existentes en el sistema.

Dicho de otro modo: si un atacante consiguiera averiguar un nombre de usuario, ya tendría el 50% de lo que necesita para acceder al panel de administración de nuestro sitio.

Hay dos formas de intentar averiguar el nombre de usuario de WordPress, por eso he dividido la entrada en dos partes.

 

Averiguar el usuario a través de la URL de Autor

Probablemente hayas configurado los enlaces permanentes para que sean amigables y conseguir un mejor posicionamiento SEO.

Si a la URL de tu sitio le añades el parámetro /?author=1 y existe un usuario con ID=1, notarás que te redirige a una URL del tipo misitio.es/author/miusuario/ donde miusuario es el nombre de usuario.

Autor permalink

WordPress almacena en base de datos el nombre de usuario en el campo user_login. Además almacena la versión sanitizada del mismo en el campo user_nicename. Es con éste último campo con el que construye el enlace amigable de autor que vemos en la imagen de arriba.

Bastaría ir probando con IDs diferentes para ir sacando los nombres de usuario que tenemos en BBDD. Incluso hay herramientas como WP Scan que automatizan este proceso realizando barridos y sacando un listado de usuarios válidos de nuestro sitio web.

Por esto es aconsejable cambiar la URL de autor en WordPress. Por defecto no se puede cambiar el nombre de usuario desde el back-end. Para ello debes acceder a la base de datos desde el panel de control de tu hosting y buscar la tabla {prefix}users. Selecciona tu usuario y cambia el campo user_nicename con el nombre que desees, siempre en minúsculas, sin espacios, sin acentos, y sin caracteres extraños.

Así podremos tener nuestro user_login diferente del user_nicename y evitar la enumeración de usuarios. Si lo prefieres, puedes usar el plugin Edit Author Slug que te permitirte cambiar el user_nicename entre otras cosas.

Hasta aquí hemos visto como despistar a un atacante malintencionado mostrando un user_nicename que no coincide con nuestro user_login. Si queremos bloquear la enumeración de usuarios podemos hacerlo a través del archivo .htaccess añadiendo estas líneas:

También podemos bloquear la enumeración de usuarios a través del archivo functions.php de nuestro tema añadiendo estas líneas:

Puede que también te interese

Cómo agregar el generador de contraseña fuerte de WordPress en nuestro formulario de registro personalizado
En la entrada anterior veíamos cómo crear un formulario de registro personalizado en WordPress. En el ejemplo, generábamos una contraseña automáticamente, pero ahora vamos a…
Cómo crear una página de error de acceso a base de datos personalizada
En alguna ocasión nos podemos encontrar con un error de acceso a la base de datos por diversos motivos, y en estos casos nos aparece…
Mejora la puntuación de Google PageSpeed Insights: Eliminar el CSS que bloquea la visualización del contenido de la mitad superior de la página
1. Optimizar imágenes 2. Minificar CSS y JS 3. Especificar caché de navegador 4. Habilita la compresión 5. Reducir el tiempo de respuesta del servidor…
Cómo evitar la actualización de plugins concretos en WordPress
Si has hecho desarrollos a medida en WordPress seguramente te has encontrado en alguna ocasión con la siguiente situación: Te han pedido un desarrollo en…