Artículo · Pentesting a Aplicaciones Web

Seguridad en WordPress

Samuel EstebanSamuel Esteban 6 min de lectura

Wordpress es un CMS (Content Management System), el cual es utilizado para crear un sitio web. Básicamente este gestor de contenido viene con una estructura predefinida, la cual permite a la persona que lo administra desarrollar un sitio web conforme a sus necesidades. Este CMS es fácil de usar y uno de los más usados a nivel mundial, sin embargo al ser uno de los más usados, se encuentra propenso a distintas vulnerabilidades las cuales principalmente se ven reflejadas en sus plugins, también existen investigadores de Seguridad que constantemente se dedican a buscar vulnerabilidades dentro de este CMS.

Las vulnerabilidades principales de WordPress, se conforman de la siguiente manera:

 

  • A través de sus plugins desactualizados, un atacante podría aprovechar ciertas vulnerabilidades y explotarlas a su antojo.
  • El panel de administración de WordPress al estar expuesto, por defecto no posee un captcha, y de esta manera es posible realizar un ataque de fuerza bruta.
  • A través de una configuración por defecto de WordPress es posible realizar una enumeración de usuarios.

 

En esta oportunidad veremos cómo mitigar estas vulnerabilidades, ya que es muy importante mantener una aplicación de con un mayor nivel de Seguridad.

Sitio Web aparentemente corriendo sobre WordPress

Ahora para verificar la aplicación está corriendo sobre Wordpress agregamos, ingresamos al sitio web con la siguiente estructura:

 

http://192.168.1.7/tienda/wp-login.php

 

Sitio Web WordPress

 

Hemos verificado que el aplicativo esta corriendo sobre un CMS WordPress. A continuación utilizaremos la herramienta Wpscan, esta herramienta nos permitirá buscar vulnerabilidades en el gestor de contenido, para ello la usaremos de la siguiente manera:

 

wpscan --url http://192.168.1.7/tienda --enumerate p


Con esto le decimos a la herramienta que nos busque todos los plugins instalados en WordPress y sus posibles vulnerabilidades.

Información Relevante sobre el objetivo

Como es posible observar, gracias a la herramienta Wpscan, es posible obtener información como por ejemplo, versión del CMS que está corriendo, información sobre los plugins instalados y sus posibles vulnerabilidades. (Este CMS no solo posee el plugin que viene por defecto en su última versión, para actualizar los plugins es necesario ingresar al panel administrativo y realizar dicha tarea).

A continuación veremos algo muy interesante, la enumeración de usuarios. WordPress por defecto posee un recurso llamado author, a través de este recurso, podemos consultar a la aplicación sobre los autores del sitio (administradores, usuarios estándar). Para detectar que usuarios tiene el sistema podemos hacerlo con la siguiente estructura:

 

http://192.168.1.7/tienda/?author=1


Aquí le estamos diciendo a WordPress que nos devuelva el author con id 1, y así sucesivamente podríamos ir cambiando el número e ir detectando usuarios del sistema:

 



http://192.168.1.7/tienda/?author=1  = Usuario: backtrackacademy


 

http://192.168.1.7/tienda/?author=2  = Usuario: administrador

Utilizando Wpscan para enumerar usuarios, se obtiene lo siguiente:

 

wpscan --url http://192.168.1.7/tienda --enumerate u


Enumeración de Usuarios con Wpscan

 

Esto lógicamente puede ayudar a un atacante a realizar un ataque de fuerza bruta, a través de esta vulnerabilidad no existe una solución en concreto, sin embargo, hay una forma muy inteligente de engañar a un atacante.

En primer lugar, debemos iniciar la sesión dentro de nuestro mysql, donde tenemos la base de datos del WordPress. La base de datos de este WordPress se llama “tienda”.

 



Tenemos la tabla de los usuarios del WordPress en cuestión, y nos percatamos que tenemos una columna llamada “user_nicename”, esta columna hace que el autor, se pueda visualizar con el nombre designado, que corresponde al mismo nombre de usuario, por ende, podriamos cambiar el user_nicename de cada usuario para engañar al atacante y hacerle creer que el nombre de usuario es el que nosotros definamos, por ejemplo, cambiaremos el user_nicename del usuario backtrackacademy y le pondremos como nombre antonio. Para ello, generamos la siguiente consulta SQL:

 

mysql> update wp_users
   -> set user_nicename = "antonio"
   -> where ID = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Lo mismo hacemos con el usuario administrador, le pondremos de user_nicename el nombre de julio.

mysql> update wp_users
   -> set user_nicename = "julio"
   -> where ID = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Finalmente nos queda lo siguiente:

 

Campo user_nicekame modificado


Ahora salimos de mysql y ejecutamos nuevamente Wpscan para enumerar los usuarios de la aplicación web, donde finalmente obtenemos lo siguiente:

 

Engañando al atacante con la enumeración de Usuarios

 

Si deseas deshabilitar la solicitud de credenciales FTP para instalar plugins de WordPress lo puedes hacer añadiendo la siguiente línea al archivo wp-config.php.

Con esto, estamos engañando al atacante para hacerle creer que los usuarios del sistema son, antonio y julio.

Podemos añadir otro factor de Seguridad para nuestra aplicación, para esto, agregaremos un plugin de Captcha para evitar ataques de fuerza bruta.

 

define('FS_METHOD', 'direct');

A continuación descargaremos el plugin llamado reCaptcha  desde el repositorio oficial de plugins de WordPress y en su última versión. Este Captcha está fabricado por Google, por ende podemos deducir que su nivel de Seguridad es mayor en relación a otros Captcha.

 

Instalando Captcha en WordPress

 

El proceso de instalación es bien simple, en caso de que lo quieras descargar manualmente, lo puedes hacer de la siguiente ruta:

https://downloads.wordpress.org/plugin/login-form-recaptcha.zip


Una vez instalado vamos a la parte de plugins, en el panel de administración de WordPress y lo activamos:

A continuación necesitamos validar el Captcha, en primer lugar nos dirigimos al siguiente link:

 

https://www.google.com/recaptcha/intro/index.html

 

Y pinchamos la opción “Get reCaptcha”, llenamos los datos con la información de nuestra dirección IP de WordPress, de la siguiente manera:

 

Habilitando Captcha en Google

Luego nos aparecerán dos llaves privadas que deberemos agregar dentro de nuestro panel de administración de WordPress.

 

Llaves privadas el Captcha

Dentro de nuestro panel de administración de WordPress nos dirigimos a  Settings -> reCaptcha Options, y agregamos las llaves generadas en Google.

 

Agregando llaves privadas a WordPress

 

Luego de agregar las llaves privadas, guardamos los cambios, nos deslogeamos y vamos a la ruta /wp-login.php para ver si quedo bien implementado el Captcha.

 

Implementación del Captcha de manera exitosa

 

Como es posible observar, el Captcha fue implementado de manera correcta. Estas medidas de seguridad son fundamentales para mantener  un mayor control sobre nuestra aplicación, además SIEMPRE será necesario actualizar los plugins de WordPress a su última versión.

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Web Application Testing.

Samuel Esteban

Escrito por

Samuel Esteban

Senior Pentester

Actualmente me desempeño como Pentester...

Sigue leyendo

Sqlmap - ejemplo con metasploitable2
Pentesting a Aplicaciones Web

Sqlmap - ejemplo con metasploitable2

MMartin Frias

Hola, soy Martin Frias y en esta vez hablaré un poco sobre Sqlmap, Sqlmap es una herramienta que permite automatizar las inyecciones sql. La inyección sql es una vulnerabilidad que nos permite la inyección de código sql para que pueda ser ejecutado e interpretado y así obtener información de la base de datos, información a la que normalmente no deberíamos tener acceso, yo recomiendo fuertemente aprender lenguaje sql, para poder saber hacer inyecciones slq de forma manual, de manera que  si vas a usar herramientas automatizadas como sqlmap, por ejemplo, que sea por ahorrar algo de tiempo, porque siempre es mejor saber qué está haciendo un herramienta por detrás, no solo escribir un comando y no saber exactamente qué acabamos de hacer.

Portainer es una herramienta web open-source: Gestor Web para Docker
Pentesting a Aplicaciones Web

Portainer es una herramienta web open-source: Gestor Web para Docker

Javier Candia

En los últimos años, las tecnologias de irutalizacioon de servicios y plataformas ha tomado poder en el mundo de las implementaciones. Uno de ellos es Docker, el cuál nos permite automatizar el despliegue de aplicaciones dentro de contenedores de software. A grandes ragos, Docker permite meter en un contenedor (un entorno cerrado) aquellas cosas que mi aplicación necesita para ser ejecutada (java, Maven, tomcat…) y la propia aplicación. Ese contenedor puede llevarse a cualquier máquina que tenga instalado Docker y ejecutar la aplicación independientemente de qué sistema operativo es, de si son compatibles o no.

Evil Limiter
Pentesting a Aplicaciones Web

Evil Limiter

Erik Garcia

Si se encuentra con un compañero de cuarto que acapara el ancho de banda de datos limitado con videojuegos o descubre que un vecino se ha invitado a su red Wi-Fi, puede recuperar fácilmente el control de su acceso a Internet. Evil Limiter hace esto al permitirle controlar la velocidad de bits de cualquier dispositivo en la misma red que usted, lo que le permite reducir o incluso detener la velocidad de transferencia de datos por completo.