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

Autocomplete Off en el formulario de login al backend de WordPress
En ésta entrada vamos a ver cómo agregar la funcionalidad autocomplete=”off” para los campos de usuario y clave en el formulario de login al backend…
Cómo integrar los estilos de los menús de bootstrap con WordPress
Si estás desarrollando un tema nuevo en WordPress y estás usando el framework Bootstrap para la maquetación del Front-end, probablemente te hayas encontrado con el…
Crea tu propio motor de búsqueda para WordPress
En este artículo vamos a ver cómo personalizar la búsqueda en WordPress, creando nuestro propio motor de búsqueda para adaptarlo a nuestras necesidades. Por defecto el…
Cómo personalizar AMP en WordPress
AMP es el proyecto de Google y varios partners (entre los que se encuentra WordPress) para ofrecer a los usuarios páginas ultra rápidas. Son las…