Como ya sabrás, WordPress es el CMS (gestor de contenido) más usado en el planeta. Se calcula que aproximadamente el 40% de las páginas web en Internet (si no más) han sido creadas usando WordPress.
Pero como toda herramienta informática, WordPress también presenta algunas debilidades, y los ciberdelincuentes pueden valerse de ellas para tomar el control de una página web, para robar datos o incluso para distribuir malware.
Es por ello que en esta ocasión os traigo WPScan, una herramienta que sirve para escanear nuestro WordPress y así descubrir las vulnerabilidades que tiene. WPScan se puede utilizar para auditar nuestras páginas, pero también puede utilizarse para averiguar las debilidades de otros sitios web. Es por ello que aconsejo su uso a la hora de proteger nuestro WordPress.
Índice
Pero, ¿qué es WPScan?
WPScan es una herramienta creada usando el lenguaje de programación Ruby por Ryan Dewhurst. Su lanzamiento inicial fue en 2011 y desde entonces ha ido ganándose una buena posición entre las herramientas más utilizadas para comprobar la seguridad de los sitios web creados con WordPress.
Se puede instalar fácilmente en cualquier sistema Linux, siguiendo las instrucciones de su documentación, aunque en este caso el sistema elegido ha sido un Kali Linux. Si no tienes Kali Linux y quieres probarlo, en aquí te explico cómo instalar un Kali Linux en un dispositivo USB usando persistencia.
1. Actualiza tu sistema operativo
Lo primero que debemos hacer es actualizar Kali Linux para que no haya problemas a la hora de instalar WPScan. Para ello usaremos el comando
sudo apt update
2. Instalando Ruby en nuestro Kali
Si no hemos instalado con anterioridad Ruby y las dependencias necesarias para ejecutar WPScan, lo haremos en este punto mediante el comando
sudo apt install ruby-full
3. Y finalmente instalamos WPScan
Ahora sí. Después de los pasos anteriores, nuestro sistema Kali Linux ya está preparado para que instalemos WPScan en él con el comando
sudo gem install wpscan
Primeros pasos con WPScan
Lo primero que podemos hacer con WPScan es actualizarlo, ya que en ocasiones no se han actualizado todas las dependencias y es posible que la primera vez que lo ejecutemos tarde un poco porque necesita hacer un update antes de comenzar a escanear.
Para ello usaremos el comando
wpscan --update
WPScan también tiene un menú de ayuda. Mediante
wpscan --help
accederemos a las distintas opciones que muestra esta potente herramienta. A continuación os dejo una lista de las opciones que más suelen usarse, pero no son las únicas que hay, por lo que si queréis conocerlas todas, con el comando anterior tendréis acceso a ellas:
- –url: mediante esta opción especificaremos la url del sitio web que queremos escanear o auditar. Soporta tanto http como https, y si desconocemos el nombre de dominio, podemos usar el protocolo seguido de la dirección IP.
- –detection-mode: nos proporciona tres posibles perfiles de escaneo (mixed, passive y agressive).
- -e / –enumerate: con esta opción podemos enumerar los plugins, los temas o los usuarios, entre otros datos del sitio web. En la ayuda antes mencionada se especifican los distintos códigos para enumerar, pero, por poner un ejemplo, con «-e u» enumeraremos los nombres de usuario del sitio web, como veremos más adelante, pero también podemos enumerar los plugins con «-e ap» para que se muestren todos los plugins posibles.
- -U: nos permite especificar un nombre de usuario, muy útil a la hora de hacer una búsqueda de diccionario para la contraseña de ese usuario.
- -P: sirve para indicar la ruta al diccionario de contraseñas que queramos usar.
Pero como dice el refrán, una imagen vale más que mil palabras. Es por eso que he creado un pequeño laboratorio con una máquina virtual con Kali Linux instalado y otra máquina virtual descargada de vulnhub en la que el objetivo es, precisamente, vulnerar un sitio web creado con WordPress.
Analizando la red local
Una vez creadas ambas máquinas virtuales, el primer paso que debemos dar es conocer nuestra dirección IP en la máquina Kali Linux, ya que es la que usaremos para escanear el WordPress. Para conocer la IP solo hemos de introducir el comando
ifconfig
Ahora que ya sabemos la dirección IP de la red local, podemos escanear la red entera para encontrar la otra máquina virtual, la que hemos descargado de vulnhub y que se estará ejecutando en paralelo. Para ello hemos de tener en cuenta que, al estar ambas máquinas en la misma red, solo variará el último octeto de la dirección IP, por lo que el CIDR acabará en /24, como podemos ver en esta imagen:

Una vez encontradas las máquinas conectadas a la red, solo queda, como hemos visto, identificar los puertos abiertos en la máquina donde está instalado el WordPress, que en este caso solo tiene abierto el puerto 80, ya que está sirviendo una página web mediante el servidor Apache.
Para comprobar que esto es así, solo hemos de abrir el navegador en la máquina Kali Linux e introducir la dirección IP de la otra máquina descubierta mediante nmap en la barra de direcciones. Nos aparecerá una ventana como esta:

Ahora, a usar WPScan
Y llegó el gran momento. Es hora de empezar a hacer nuestro escaneo con WPScan.
Averiguando los nombres de usuario
Para ello comenzaremos con un comando sencillo con el que pretendemos conocer los usuarios registrados en el WordPress que nos ocupa:
wpscan --url http://192.168.18.83 -e u
Este comando, además de mostrarnos la lista de usuarios disponibles en la instalación de WordPress, nos mostrará algunos datos más, como los plugins o themes que pueda conseguir, además de sus versiones. Además, también nos facilitará la versión de WordPress instalada:



Si miramos la última de las tres imágenes anteriores, podemos ver que se han identificado cuatro usuarios:
- the cold in person
- c0ldd
- hugo
- philip
WPScan en busca de la contraseña perdida
Ahora que conocemos los nombres de usuario, podemos escanear la instalación de WordPress en busca de las contraseñas de cada uno de ellos, pero os ahorraré el trabajo y solo buscaré la contraseña de uno, ya que las demás se buscan usando la misma metodología.
Para esta labor, usaremos el comando
wpscan --url http://192.168.18.83 -U c0ldd -P /home/kali/Escritorio/rockyou.txt
El último parámetro del comando anterior puede variar según dónde tengáis guardado el diccionario de contraseñas, o según el diccionario que vayáis a utilizar.
Una vez introducido el comando anterior, aparecerá un escaneo de WPScan como este:



Como se puede ver en la última imagen, nos muestra una combinación válida de usuario y contraseña:
- Usuario: c0ldd
- Contraseña: 9876543210
Es momento de comprobar ese nombre de usuario y la contraseña en el login de WordPress. Para ello vamos a la dirección https://192.168.18.83/admin e ingresamos los datos obtenidos mediante el escaneo con WPScan:

Y, al hacer clic en Log In, nos aparecerá la siguiente pantalla:

Y así hemos podido acceder al WordPress instalado en la máquina virtual.
Como os podéis imaginar, esto también es posible hacerlo con cualquier instalación de WordPress que no esté debidamente protegida. Es por ello que debemos seguir unas directrices a la hora de proteger nuestros WordPress.
Consejos para proteger WordPress y no morir en el intento
Existen algunos plugins que suelo recomendar a la hora de proteger un WordPress. Algunos son más conocidos que otros pero, desde mi punto de vista, son realmente útiles. Aquí os dejo algunos consejos para llevar a cabo esa protección:
- Mantener la instalación de WordPress y los plugins actualizados. Un WordPress o un plugin no actualizado puede tener una vulnerabilidad descubierta, y ese es un punto de entrada para cualquier ciberdelincuente.
- Ocultar la página de login de WordPress. Mediante el uso de el plugin WPS Hide Login podemos cambiar la URL de la página donde se sitúe el login de WordPress. De esa forma será mucho más difícil de averiguar.
- Usar contraseñas robustas. Una contraseña robusta es una contraseña fuerte, que no puede ser averiguada fácilmente. Es aconsejable que estas tengan 12 caracteres o más, mezclando mayúsculas, minúsculas, números y símbolos. Cuanto más compleja sea la contraseña, menos probabilidades tienen los ciberdelincuentes de adivinarlas y más protegido estará nuestro WordPress.
- Limitar el número de intentos de inicio de sesión. Con el plugin WPS Limit Login se puede configurar el número máximo de intentos de login en un periodo de tiempo. También permite banear direcciones IP concretas. Aconsejo a quien quiera usarlo que se repase bien las opciones de configuración, ya que es realmente útil.
- Mantener actualizada la versión de PHP. PHP es el lenguaje con el que está hecha la mayor parte de WordPress, por lo que el uso de una versión antigua se puede traducir en vulnerabilidades.
- Usa el doble factor de identificación. Gracias al doble factor de autenticación, podemos hacer que cada vez que se inicie sesión se nos solicite un código que nos llegue a nuestro teléfono móvil o a una aplicación adecuada para ello.
- Siempre instala certificado SSL. El certificado SSL hace que la comunicación entre servidor y cliente vaya cifrada, por lo que es más complicado para un posible ciberdelincuente situarse en el medio de la comunicación y descifrarla.
Para terminar, quiero recomendaros un libro. Se trata del libro sobre WordPress de Fernando Tellado. En él se explica cómo está estructurado WordPress 6 (aunque también está la edición de la versión 5 de WordPress) y las distintas opciones de configuración que tiene. También explica algunos trucos a la hora de optimizarlo y, por supuesto, algunos consejos a la hora de mantener segura nuestra instalación.

Me gustaría pediros vuestro feedback y que, si conocéis a alguien a quien le pueda interesar este tutorial sobre WPScan, se lo hagáis llegar. Nunca está de más estar informado y tener nuestras páginas web bien protegidas. Y como siempre, si queréis enviarme algún comentario o proponerme algún tema, no dudéis en hacerlo.
Me ha resultado un artículo muy interesante e instructivo, para los que no estamos familiarizados con las plataformas de gestión de contenidos.
Muy bien explicado, con suficientes detalles que pasarían descuidados y las capturas de pantalla más apropiadas.
Gracias por tu feedback Paco. Y me alegro de que el artículo te haya resultado interesante. Considero que tanto para la gente que maneja gestores de contenido como para los que no, pero están interesados en empezar en ello, conocer esto es importante. Mucha gente se piensa que solo por tener el WordPress actualizado ya hay bastante, y hay que seguir varios pasos para poder securizarlo adecuadamente.