Pruebas de penetración para sitios web de WordPress

Publicado: 2020-03-20

WordPress potencia muchos sitios web en Internet. Por lo tanto, no sorprende que a los atacantes experimentados y a los "niños de scripts" les guste apuntar a los sitios web de WordPress. Si usted es un webmaster o un profesional de la seguridad, cuando se le asigna la tarea de evaluar la postura de seguridad de un sitio web de WordPress, tiende a ser útil estar al tanto de las trampas de seguridad comunes que los atacantes suelen aprovechar. También es importante utilizar las herramientas de prueba de penetración adecuadas.

En este artículo, cubriré una serie de agujeros de seguridad comunes, malas prácticas e información útil que un atacante puede abusar en muchas instalaciones de WordPress. También destacaré una serie de herramientas que puede usar para ayudarlo a automatizar la prueba de penetración de WordPress.

Aviso : solo realice pruebas de penetración de seguridad en sistemas que le pertenezcan o que le hayan otorgado permiso para hacerlo. Comprenda los límites del acceso que se le ha otorgado y manténgase dentro de esos límites.

Problemas comunes de seguridad y malas prácticas de WordPress

Versiones obsoletas del código de WordPress

Podría decirse que ejecutar versiones antiguas del núcleo de WordPress que contienen vulnerabilidades de seguridad es uno de los agujeros de seguridad más comunes relacionados con WordPress. Si bien las versiones más nuevas de WordPress facilitan la actualización a la última versión, no es raro que los sitios antiguos de WordPress se queden atrás.

Ejecutar una versión antigua de WordPress en Internet es una bomba de relojería. Muchas versiones antiguas de WordPress contienen vulnerabilidades de seguridad. Muchos de estos problemas de seguridad suelen ser aprovechados en masa por los atacantes.

Al auditar un sitio web de WordPress en busca de vulnerabilidades de seguridad, esta suele ser una de las primeras cosas que desea verificar. Afortunadamente para los atacantes, de forma predeterminada, WordPress agrega una metaetiqueta HTML que contiene la versión de WordPress que se está utilizando.

<meta nombre=”generador” contenido=”WordPress 4.8.11″ />

Saber que una instalación de WordPress está ejecutando una versión anterior podría dar a un atacante la oportunidad de aprovechar una vulnerabilidad conocida. Utilice la base de datos de vulnerabilidades de seguridad de CVE para buscar problemas de seguridad conocidos en el núcleo de WordPress.

Versiones desactualizadas de temas y complementos de WordPress

El núcleo de WordPress es muy seguro. Millones de usuarios y piratas informáticos maliciosos prueban y revisan minuciosamente el código. Esto significa que la mayoría de las veces, los problemas de seguridad se detectan y solucionan antes de que los atacantes abusen de ellos. Sin embargo, no es inmune a las vulnerabilidades de seguridad. Desafortunadamente, esto no se aplica a los miles de complementos y temas de WordPress.

Cualquiera puede enviar un tema o complemento y ponerlo a disposición de cualquier administrador de WordPress para que lo descargue y lo use. Por supuesto, esto no significa que todos los complementos de WordPress estén mal codificados y llenos de vulnerabilidades, ni mucho menos. Sin embargo, las vulnerabilidades conocidas exponen una superficie de ataque masiva a WordPress que debe tener en cuenta al realizar una prueba de penetración de WordPress.

La herramienta más rápida y posiblemente la más completa para usar para tomar huellas dactilares de complementos y temas vulnerables de WordPress es usar WPScan. WPScan es un escáner de seguridad de WordPress de caja negra de código abierto que se usa con frecuencia para escanear sitios web de WordPress en busca de vulnerabilidades conocidas dentro del núcleo, complementos y temas.

Cuando use WPScan durante un pentest, asegúrese de registrarse y configurarlo para usar una clave API de la base de datos de vulnerabilidades de WPScan . La base de datos de vulnerabilidades de WPScan es una base de datos mantenida por los autores de WPScan con las últimas vulnerabilidades conocidas y sus respectivas versiones.

Complementos de huellas dactilares con WPScan

Para obtener más información sobre WPScan y cómo ejecutar diferentes tipos de escaneos, consulte Introducción a WPScan.

Versiones antiguas de PHP y servidores web

WordPress es una aplicación web de PHP y, por lo tanto, todas las mejores prácticas de seguridad de PHP también se aplican a WordPress. Durante una prueba de penetración de WordPress, esta es una de las primeras cosas que debe buscar. Las instalaciones de WordPress que ejecutan versiones antiguas de PHP o software de servidor web (p. ej., Nginx, Apache HTTP Server, IIS...) pueden exponer el sitio web a todo tipo de ataques diferentes.

Es muy fácil averiguar qué servidor web y qué versión de PHP está utilizando un sitio web de WordPress. En muchos casos, todo lo que un atacante debe hacer es simplemente prestar mucha atención a los encabezados de respuesta HTTP devueltos desde el sitio web. Puede enviar una solicitud usted mismo con curl:

$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i “Servidor\|X-Powered-By”

Busque los encabezados HTTP Server y X-Powered-By en la respuesta:

Servidor: Apache/2.4.29 (Ubuntu)
Desarrollado por X: PHP/5.5.9

Según la versión y la configuración del sitio web, un atacante puede utilizar vulnerabilidades conocidas (p. ej., https://www.cvedetails.com/vendor/74/PHP.html) para obtener información adicional sobre un objetivo. Dicha información puede ayudar a escalar un ataque o incluso ejecutar comandos directamente en el servidor web.

Enumeración de nombre de usuario de WordPress

A menos que un administrador del sistema haya tomado medidas para evitarlo, de forma predeterminada, WordPress es vulnerable a los ataques de enumeración de usuarios. Ataques de enumeración de usuarios de WordPress, busque diferencias sutiles en cómo WordPress responde a solicitudes particulares. Dependiendo de la respuesta, el atacante puede determinar si un usuario existe o no, lo que le permite potencialmente usar esta información como parte de un ataque mayor.

La siguiente es una captura de pantalla de WPScan realizando un ataque de enumeración de nombre de usuario de WordPress.

Enumeración de usuarios de WPScan y descifrado de contraseñas

Configuraciones incorrectas del servidor web

Listado de directorios y otras configuraciones incorrectas del servidor web

Además del software obsoleto, siempre se debe evaluar cualquier posible configuración incorrecta del servidor web. Un servidor web mal configurado puede dejar el sitio web de WordPress vulnerable a la explotación. Esto puede suceder incluso si el servidor web está ejecutando el software más reciente. Estas son algunas configuraciones incorrectas típicas del servidor web:

Listado de directorio habilitado

La lista de directorios es una mala configuración muy común. Los servidores web Apache tienen esto habilitado de forma predeterminada, y eso no ayuda. La lista de directorios simplemente enumera archivos y directorios en un servidor web en una interfaz gráfica cuando no hay un archivo de índice.

Listado de directorio habilitado en un servidor web Apache

Si bien esto en sí mismo no es particularmente dañino, brinda al atacante la posibilidad de explorar los contenidos del directorio de su servidor web. Esto podría permitirle ver todos los archivos en su sitio web, la mayoría de los cuales no deberían ser de acceso público pero lo son, como copias de seguridad, contraseñas y archivos de configuración.

Archivos de respaldo

Los archivos de copia de seguridad son otra configuración incorrecta del servidor web muy común. Por lo general, esto ocurre cuando los administradores del sistema editan manualmente los archivos en los sistemas de producción.

Un ejemplo común de archivos de respaldo que exponen información potencialmente confidencial podrían ser copias de respaldo de archivos PHP. A veces, los archivos PHP contienen datos de configuración importantes, como el archivo wp-config.php de WordPress.

Considere el siguiente escenario: un administrador de WordPress necesita realizar cambios en wp-config.php. En lugar de seguir las mejores prácticas y mantener una copia del archivo en otro lugar que no sea el servidor web, hacen una copia del wp-config.php en vivo y nombran la copia de seguridad wp-config.php.bak. Supongamos ahora que el administrador del sistema se olvidó de eliminar este archivo, lo que sucede con más frecuencia de lo que pensamos.

Un atacante ahora puede leer el archivo simplemente solicitando http://www.example.com/wp-config.php.bak . El atacante puede leer el archivo porque su extensión ya no es .php. Entonces, el motor PHP lo ignora y el servidor web lo sirve como un archivo de texto. Ahora el atacante conoce las credenciales de la base de datos de WordPress, los tokens secretos y cualquier otra información de configuración confidencial que haya guardado en ese archivo.

Archivos temporales

Al igual que los archivos de copia de seguridad, los archivos temporales en la ubicación incorrecta pueden exponer datos potencialmente confidenciales. Tomando wp-config.php como ejemplo una vez más. Si un administrador del sistema tuvo que editar este archivo con un editor de texto y, por alguna razón, el programa no se cerró correctamente, es muy probable que el editor deje archivos temporales. Por ejemplo, el popular editor de línea de comandos Vim almacena archivos de copia de seguridad con la extensión de archivo *.ext~ junto con un archivo *.ext.swp. Los archivos swp se utilizan como archivo de bloqueo. También contienen todo el historial de deshacer/rehacer y otra información interna que necesita Vim.

Por lo tanto, en el caso de un bloqueo, Vim deja un archivo wp-config.php.ext~ al que se puede acceder en texto sin formato como archivos de copia de seguridad porque no termina con una extensión de archivo *.php. Los archivos temporales de este tipo no son exclusivos de Vim: Emacs (otro popular editor de texto de línea de comandos) también guarda archivos temporales similares, y muchas otras herramientas también lo hacen.

Aviso : use un complemento de monitoreo de integridad de archivos para su sitio web para recibir alertas de todos los cambios en los archivos, incluidos los archivos temporales y de respaldo. Si no está familiarizado con esta tecnología, lea nuestra introducción al monitoreo de integridad de archivos para WordPress.

MySQL expuesto

Con diferencia, uno de los errores de configuración más graves que puede cometer un administrador de sistemas es dejar su servidor de base de datos MySQL de WordPress abierto a Internet. Por qué esto puede parecer una locura, probablemente sucede más de lo que piensas. A continuación se muestra una captura de pantalla de Shodan, un motor de búsqueda de dispositivos conectados a Internet.

Los resultados en Shodan para servidores MySQL

Por supuesto, el hecho de que MySQL esté expuesto en Internet no significa que alguien pueda conectarse y acceder a la base de datos de WordPress. Sin embargo, especialmente si se usa en combinación con otros ataques, como una contraseña filtrada a través de una copia de seguridad de wp-config.php, o adivinar una contraseña débil, podría conducir a un escenario de desastre.

Una vez que tenga el control de una base de datos de WordPress, se acabó el juego para una instalación de WordPress. Todo lo que un atacante debe hacer es restablecer una contraseña de administrador. Luego, prácticamente toman el control total de su sitio web de WordPress, y potencialmente incluso del servidor en el que se ejecuta al instalar complementos maliciosos a propósito.

Ejecutar servicios innecesarios

Otro problema común de configuración incorrecta del servidor web es la configuración predeterminada. Muchos administradores ejecutan la configuración predeterminada y no desactivan los servicios que no necesitan. En la mayoría de los casos, las instalaciones predeterminadas tienen muchos servicios innecesarios en ejecución, la mayoría de los cuales, si no están protegidos, exponen el servidor web a ataques.

Herramientas de Pentesting para probadores de penetración de WordPress y profesionales de seguridad

Los probadores de penetración utilizan una variedad de herramientas para automatizar su trabajo y sus técnicas. La automatización ayuda a reducir el tiempo que lleva realizar una evaluación de seguridad/prueba de penetración.

kali linux

Las herramientas que uno usa varían mucho. Depende de la preferencia personal y del problema en cuestión. Sin embargo, un buen lugar para comenzar es tener una variedad de herramientas a su disposición, preinstaladas.

kali linux

Kali Linux, anteriormente conocido como BackTrack, es la distribución de Linux de prueba de penetración de código abierto. Kali Linux viene con una gran cantidad de herramientas preinstaladas y preconfiguradas. Es útil tanto para usuarios novatos que buscan comenzar rápidamente, como para probadores de penetración experimentados. Kali Linux está disponible de forma gratuita y puede ejecutarse en una máquina virtual.

Nmap

Este escáner gratuito es uno de los más básicos y versátiles del arsenal de cualquier pentester. Nmap es principalmente un escáner de puertos. Sin embargo, se puede ampliar para realizar todo tipo de escaneos diferentes a través de su lenguaje de programación NSE.

El escáner NMAP

WPScan

WPScan (tratado anteriormente en este artículo) es un escáner de seguridad de WordPress de código abierto. Busca vulnerabilidades conocidas de WordPress, tanto dentro del núcleo de WordPress como dentro de los complementos y temas de WordPress.

Escáner WPScan

WPScan puede realizar una serie de pruebas de caja negra. Es decir, sin acceso al código fuente. Como resultado, WPScan es excelente para encontrar vulnerabilidades de WordPress de bajo costo de forma rápida y precisa.

OWASP ZAP

OWASP Zed Attack Proxy (ZAP) es una herramienta gratuita de prueba de penetración de aplicaciones web de código abierto. El Proyecto de Seguridad de Aplicaciones Web Abiertas (OWASP) mantiene estas herramientas. OWASP ZAP está diseñado específicamente para probar aplicaciones web para una amplia variedad de vulnerabilidades como Cross-site Scripting (XSS) y SQL Injection (SQLi). ZAP, en esencia, es un proxy. Se encuentra entre el navegador del pentester y el sitio web para interceptar e inspeccionar las solicitudes enviadas entre los dos.

Escáner OWASP ZAP

Además de actuar como un proxy, ZAP también puede probar automáticamente una variedad de vulnerabilidades y también puede detectar una variedad de entradas. Fuzzing es una técnica de prueba de seguridad en la que se proporciona una entrada no válida o inesperada a una aplicación con la intención de descubrir vulnerabilidades de seguridad.

Pruebas de penetración para WordPress: evaluación de la postura de seguridad de su sitio web

La seguridad de WordPress no es una solución de una sola vez. Es un proceso continuo basado en cuatro principios: Fortalecer > Monitorear > Probar > Mejorar. Con las pruebas de penetración, aborda el principio de prueba . Es decir, comprueba la postura de seguridad de su sitio web. Luego puede tomar las medidas necesarias para mejorar la configuración en función de sus hallazgos.

Por lo tanto, las pruebas frecuentes de penetración del sitio web de WordPress deben ser parte de su programa de seguridad. Usted juzga con qué frecuencia debe hacer pruebas de penetración. Si realiza cambios frecuentes en su sitio web, debe realizar pruebas frecuentes. Sin embargo, una prueba de penetración trimestral funciona si su sitio web rara vez se actualiza.