Suplantación de Identidad en WordPress
La suplantación de identidad es uno de los riesgos más importantes que encontramos en nuestra vida digital moderna.
Básicamente consiste en un engaño en donde por medio de una acción alguien se hace pasar por otra persona para llevar a cabo algo.
La suplantación de Identidad más conocida es el caso de Phishing. Se trata de correos recibidos que intentan adoptar perfiles falsos de Bancos, Compañías Telefónicas, etc, con el fin de recopilar información o sustraer datos sensibles.
Sin embargo, el Phishing no es el único tipo de engaño para suplantar una cuenta digital, y en este artículo te propongo llevar adelante una Prueba de Concepto (PoC) para comprender los riesgos de una mala planificación y cómo puedes llegar a mitigarla.
Prueba de Concepto en WordPress
Para realizar una suplantación de identidad, vamos a trabajar con una cuenta de usuario registrado en WordPress, con los privilegios bajos, como por ejemplo la de suscriptor, que solo cuenta con permisos para publicar comentarios.
Necesitamos preparar un escenario de trabajo, que puede ser alguna implementación que tengamos que auditar o simplemente un pequeño proyecto en WordPress de prueba instalado en un servidor local ya que estas prácticas no es recomendado realizarlas en tu Hosting.
El primer requisito que necesitamos, es utilizar la última actualización de WordPress en la rama 4.8.x, que a día de la fecha se trata de la versión 4.8.7 publicada el 5 de Julio del 2018. Luego, más adelante, vamos a ver que ocurrió a partir del lanzamiento de WordPress 4.9
Las estadísticas de W3Techs indican que 3 de cada 10 webs que se encuentran creadas con WordPress, utilizan una versión menor a la rama 4.9.x por lo cuál el impacto que tiene esta funcionalidad mal implementada es muy alta.
Por otro lado, para que cualquier usuario tenga la posibilidad de realizar un comentario dentro de la web, la misma requiere que tenga la capacidad de que los usuarios se puedan registrar.
Normalmente, esta es una opción que se encuentra en el menú de administración Ajustes > Generales y un check con la leyenda “Cualquiera puede registrarse”.
A continuación podemos indicar cuál es el perfil que podemos adoptar para este nuevo usuario que se va a registrar. Este tipo de configuraciones es más común de lo que se cree, y muchas webs la utilizan para recopilar una Lista de Usuarios que comentan en su web, Listas de Correo, etc.
Es más, muchos proyectos en la web, como estrategia para obtener más usuarios registrados, agregan una configuración que indica que no es posible realizar un comentario hasta que el usuario no se encuentre registrado.
Retomando nuestro ejemplo, suponemos que tenemos registrado un usuario cuyo username es “suscriptor” y su email “suscriptor@miweb.com”. Para este punto no hay ningún dato especial, de hecho se realiza con el usuario de menor privilegios posibles.
Con el usuario “suscriptor” iniciamos sesión dentro de WordPress. Luego nos dirigimos a cualquiera de los Post activos y publicamos un comentario, donde propongo publicar el siguiente texto “Comentario con la identidad original”.
Aprovechando que tenemos una sesión dentro de WordPress, nos dirigimos a “Editar mi Perfil”. Aquí puedes ver que es el único lugar dentro del Dashboard de administración que un usuario con este perfil puede realizar.
Para iniciar el engaño, donde se encuentra el campo de nombre podemos agregar “Usuario”, en el campo Apellido cambiarlo por “Falso”, en el listado que dice “Mostrar este nombre públicamente” puedes escoger la combinación de Nombre + Apellido para notar aún más el cambio y aprovechar para que el ataque sea más creíble, y finalmente en el campo “Correo electrónico” cuya restricción es de carácter obligatorio, agregar cualquier cadena de caracteres que contemple las restricciones de un correo electrónico típico.
Por ejemplo, un ‘string’ alfanumérico que contenga “@” y que seguramente corresponderá a un dominio. Puedes utilizar “info@tudominio.com”.
En este apartado, cuando mencionamos la palabra, “Cualquier correo electrónico” hacemos mucho énfasis en este punto, por que da igual lo que se agregue allí, no será validado por ningún mecanismo ni tendrá una restricción extra, simplemente se cambia de correo y listo.
s posible que en muchos casos al realizar este cambio de correo electrónico se pierda la sesión con la que nos encontramos autenticados, pero no pasa nada, nos volvemos a autenticar con las mismas credenciales del usuario “suscriptor” y continuamos con la prueba.
Ahora bien, si fueron más observadores, habrás notado que ahora al ingresar su nombre no es más suscriptor sino “Usuario Falso” y qué crees que va a ocurrir cuando quieran escribir un comentario? …
Efectivamente, va a ser posible publicar un comentario con una Identidad Digital Falsa o suplantada a nombre de otra persona, en este ejemplo “Usuario Falso” y con su nuevo correo electrónico “info@otraweb.com”.
Para continuar con la demostración, podemos publicar por ejemplo “Comentario con Suplantación de Identidad” y le pulsamos sobre el botón de Comentar.
A partir de ahora, bajo la mirada de cualquier persona que visite la web y que lea los comentarios puedes comprobar que se trata de dos identidades diferentes las que publicaron, es más si se muestran los correos electrónicos confirmarán esa hipótesis.
Para finalizar esta prueba de concepto y limpiar los campos que modificamos anteriormente, basta con quitar la información en los campos de Nombre y Apellido o cambiarla por la que estaba al principio, lo mismo con el Nombre que muestra WordPress y finalmente escribimos el primer correo electrónico.
¿Volvemos a realizar las pruebas? Siempre es muy interesante poder jugar con este tipo de “funcionalidades” y configuraciones, en entornos controlados de pruebas siempre es imprescindible probar la mayor cantidad de combinaciones posibles de configuraciones, que a priori no parecerían importantes, pero que sin embargo tienen un alcance mayor cuando las llevamos al extremo.
Podemos ir al mismo post donde previamente publicamos nuestros comentarios y escribir por ejemplo “Nuevo comentario con la Identidad original” y pulsamos sobre el botón de Comentar.
¿Por qué WordPress muestra esa información?
Me imagino que te estarás preguntando al igual que me preguntaba yo, ¿Cuál es la razón por la que WordPress muestra esta información, tanto la auténtica como la suplantada? Como todo debería tener una explicación, la razón es la siguiente:
Por cada comentario que un usuario realice, ya sea que se encuentre autenticado en WordPress como uno invitado, y cuando hablo de invitado es que no tiene ningún registro en la tabla de usuario, genera un registro de información sobre la tabla “wp_comments” de la base de datos que tiene registro de toda la actividad de WordPress.
Allí almacena un identificador único para cada comentario en “comment_ID”, además el identificador de cada Post en el campo “comment_post_id” y a partir de aquí almacena información como el nombre del autor de comentario “comment_author”, correo electrónico en “comment_author_email”, y más información, como la dirección IP, fecha, estado del comentario, etc. Finalmente como último campo el identificador del usuario en “user_id”.
Como pudiste observar, WordPress registra todo, pero al momento de visualizar la información muestra los datos asociados al registro, allí es donde ocurre el error, ya que como vimos en la anterior prueba, tuvimos la posibilidad de manipular a gusto la información que asocia a una Identidad Digital y que luego finaliza mostrándose en vez de realizar una query con los datos que se encuentran asociados al user_id.
Finalmente, cuando un usuario administrador puede ver la lista de todos los comentarios publicados, los cambios que hicimos con la cuenta digital es casi imperceptibles.
¿Qué ocurrió a partir de WordPress 4.9?
Quienes estamos muy pendientes del día a día en las novedades de WordPress, recordamos a mediados de Noviembre del 2017 se publicaba la versión estable de WordPress 4.9 llamada “Tipton”.
Para esta versión, se añadieron un montón de mejoras y nuevas funcionalidades en el “core” buscando siempre mejorar la experiencia de usuario al administrar la plataforma.
Y es aquí, a partir de esta versión donde se propone e implementa una aproximación a la solución de Suplantación de Identidad en la publicación de los comentarios.
Si bien aún es posible manipular los campos propios de cada perfil de usuario, ahora WordPress solicita la verificación del correo al cual se quiere modificar.
Haz clic en la imagen para ampliarla
Por lo cuál para modificar el correo electrónico es necesario ingresar un correo válido, ya que es allí donde se enviará un hash de activación tipo MD5, que en algún momento buscaremos los mecanismos para verificar su composición o realizar ataques de fuerza bruta basado en hash sobre la url de validación, pero eso será en otra ocasión, donde busquemos caminos alternativos para saltar esta verificación y llevarla al extremo.
De esta manera, aún es posible realizar o suplantar identidad, solo que a partir de esta versión y especialmente de la rama 4.9.x estos controles ya fueron implementados por medio del issue #42967 (https://core.trac.wordpress.org/ticket/42967) donde se exponía este tipo de problemáticas catalogado como un componente de seguridad y que casualmente es en esta rama donde se le da solución.
Por otro lado, su implementación era casi inminente ya que también se comenzaba a hablar sobre la adecuación para el cumplimiento de la Ley RGPD.
¿Cómo se puede mejorar la seguridad?
Con este pequeño y simple ejemplo, podemos ver cómo es posible aprovecharnos de una funcionalidad para otros fines, como el Black SEO y otras cosas que mejor no mencionar o dar tantas ideas.
Pero a su vez, es muy importante conocer esta problemática, ya que en muchas oportunidades dejamos las configuraciones de WordPress por defecto y la verdad es que no siempre deberíamos dejar que los usuarios se registren. En muchos proyectos incluso no se requiere de la utilización de comentarios, etc.
Lo importante en este punto es que antes de llevar las ideas directamente a un proyecto en WordPress, nos tomemos el tiempo necesario para saber con detalle cuales son las características que realmente va a utilizar el proyecto.
Por otro lado, sabiendo que existe una solución parcial a esta problemática basada en la rama de actualización 4.9.x ¿Vas a continuar trabajando con tu versión vulnerable a estas pruebas de concepto?
En Webempresa tenemos publicados muchos tutoriales de cómo es posible realizar una actualización de versiones, ya sea automática o manual y siempre alentamos a mantenerlo actualizado, por la importancia y los riesgos que ameritan.
El Doble Factor de Autenticación, ¿es necesario? Siempre que se pueda aplicar una medida de seguridad extra al usuario lo vamos a estar dotando de confianza y saber que protegemos su identidad digital.
Al final es necesario saber que todas estas implementaciones tenemos que ir incorporandolas a nuestra vida digital. Al principio nos parecía extraño o tedioso tener que verificar si una URL tiene el “candadito” o es https. Con el pasar del tiempo adoptamos esa medida de seguridad y hoy es una verificación que todos realizamos. Con el caso del Doble Factor de Autenticación va a pasar igual.
Por esa razón, los clientes de Webempresa ya tienen la posibilidad de utilizar CiberProtector, que además de todas las características que incorpora como VPN, Generador de contraseñas, Administrador de Claves, ahora tiene la capacidad de ser un Doble Factor de Autorización.