🔎Wordpress - Enumeración
Introducción
WordPress , lanzado en 2003, es un sistema de gestión de contenido (CMS) de código abierto que se puede utilizar para múltiples propósitos. A menudo se utiliza para alojar blogs y foros. WordPress es altamente personalizable y compatible con SEO, lo que lo hace popular entre las empresas. Sin embargo, su capacidad de personalización y naturaleza extensible lo hacen propenso a vulnerabilidades a través de temas y complementos de terceros. WordPress está escrito en PHP y generalmente se ejecuta en Apache con MySQL como backend.
En el momento de redactar este artículo, WordPress representa alrededor del 32,5 % de todos los sitios de Internet y es el CMS más popular por cuota de mercado. A continuación, se ofrecen algunos datos interesantes sobre WordPress.
WordPress ofrece más de 50.000 complementos y más de 4.100 temas con licencia GPL
Se han lanzado 317 versiones independientes de WordPress desde su lanzamiento inicial
Se crean aproximadamente 661 nuevos sitios web de WordPress cada día
Los blogs de WordPress están escritos en más de 120 idiomas.
Un estudio mostró que aproximadamente el 8% de los ataques a WordPress ocurren debido a contraseñas débiles, mientras que el 60% se deben a una versión desactualizada de WordPress.
Según WPScan, de casi 4.000 vulnerabilidades conocidas, el 54% proviene de complementos, el 31,5% proviene del núcleo de WordPress y el 14,5% proviene de temas de WordPress.
Algunas de las principales marcas que utilizan WordPress incluyen The New York Times, eBay, Sony, Forbes, Disney, Facebook, Mercedes-Benz y muchas más.
Como podemos ver en estas estadísticas, WordPress es muy común en Internet y presenta una amplia superficie de ataque. Tenemos la garantía de encontrarnos con WordPress durante muchas de nuestras evaluaciones de pruebas de penetración externas, y debemos entender cómo funciona, cómo enumerarlo y las distintas formas en que puede ser atacado.
Imaginemos que durante un test de penetración externo nos topamos con una empresa que aloja su página web principal basada en WordPress. Como muchas otras aplicaciones, WordPress cuenta con archivos individuales que nos permiten identificar dicha aplicación. Además, los archivos, la estructura de carpetas, los nombres de los archivos y la funcionalidad de cada script PHP pueden utilizarse para descubrir incluso la versión instalada de WordPress. En esta aplicación web, por defecto, los metadatos se añaden por defecto en el código fuente HTML de la página web, que en ocasiones incluso ya contiene la versión. Por tanto, veamos qué posibilidades tenemos para averiguar información más detallada sobre WordPress.
Discovery / Footprinting
Una forma rápida de identificar un sitio de WordPress es buscar el archivo /robots.txt
. Un archivo robots.txt típico en una instalación de WordPress puede tener el siguiente aspecto:
En este caso, la presencia de los directorios /wp-admin
y /wp-content
sería una clara señal de que estamos tratando con WordPress. Normalmente, al intentar navegar hasta el directorio wp-admin
, se nos redireccionará a la página wp-login.php
. Este es el portal de inicio de sesión en el back-end de la instancia de WordPress.
WordPress almacena sus plugins en el directorio wp-content/plugins
. Esta carpeta es útil para enumerar los plugins vulnerables. Los temas se almacenan en el directorio wp-content/themes
. Estos archivos deben enumerarse con cuidado, ya que pueden provocar errores de ejecución de comandos (RCE).
Hay cinco tipos de usuarios en una instalación estándar de WordPress.
Administrador
: este usuario tiene acceso a funciones administrativas dentro del sitio web. Esto incluye agregar y eliminar usuarios y publicaciones, así como editar el código fuente.Editor
: Un editor puede publicar y administrar publicaciones, incluidas las publicaciones de otros usuarios.Autor
: Pueden publicar y administrar sus propias publicaciones.Colaborador
: Estos usuarios pueden escribir y administrar sus propias publicaciones, pero no pueden publicarlas.Suscriptor
: Son usuarios estándar que pueden explorar publicaciones y editar sus perfiles.
Generalmente, obtener acceso a un administrador es suficiente para obtener la ejecución de código en el servidor. Los editores y autores pueden tener acceso a ciertos complementos vulnerables, algo que los usuarios normales no tienen.
Enumeración
Otra forma rápida de identificar un sitio de WordPress es mirar el código fuente de la página. Ver la página con cURL
y filtrar por WordPress
puede ayudarnos a confirmar que WordPress está en uso y a identificar el número de versión, que debemos anotar para más adelante. Podemos enumerar WordPress utilizando una variedad de tácticas manuales y automatizadas.
Explorar el sitio y examinar el código fuente de la página nos dará pistas sobre el tema en uso, los complementos instalados e incluso los nombres de usuario si los nombres de los autores se publican con las publicaciones. Deberíamos dedicar algo de tiempo a explorar manualmente el sitio y a examinar el código fuente de cada página, a buscar el directorio wp-content
, themes
y plugin
, y a comenzar a crear una lista de puntos de datos interesantes.
Si observamos el código fuente de la página, podemos ver que se está utilizando el tema Business Gravity . Podemos ir más allá e intentar identificar el número de versión del tema y buscar vulnerabilidades conocidas que lo afecten.
A continuación, echemos un vistazo a qué complementos podemos descubrir.
A partir del resultado anterior, sabemos que los complementos Contact Form 7 y mail-masta están instalados. El siguiente paso sería enumerar las versiones.
Al navegar hasta el sitio web, http://blog.inlanefreight.local/wp-content/plugins/mail-masta/
se nos muestra que la lista de directorios está habilitada y que hay un archivo readme.txt
presente. Estos archivos suelen ser muy útiles para identificar los números de versión. Según el archivo README, parece que está instalada la versión 1.0.0 del complemento, que sufre una vulnerabilidad Local File Inclusion que se publicó en agosto de 2021.
Investiguemos un poco más. Al revisar el código fuente de otra página, podemos ver que el complemento wpDiscuz está instalado y parece ser la versión 7.0.4.
Una búsqueda rápida de esta versión del complemento muestra esta vulnerabilidad de ejecución remota de código no autenticado de junio de 2021. Tomaremos nota de esto y seguiremos adelante. Es importante en esta etapa no adelantarnos y comenzar a explotar la primera falla posible que veamos, ya que hay muchas otras vulnerabilidades potenciales y configuraciones erróneas posibles en WordPress que no queremos pasar por alto.
Enumeración de usuarios
También podemos realizar una enumeración manual de usuarios. Como se mencionó anteriormente, la página de inicio de sesión predeterminada de WordPress se puede encontrar en /wp-login.php
.
Un nombre de usuario válido y una contraseña no válida dan como resultado el siguiente mensaje:
Sin embargo, un nombre de usuario no válido devuelve que no se encontró el usuario.
Esto hace que WordPress sea vulnerable a la enumeración de nombres de usuario, que puede utilizarse para obtener una lista de posibles nombres de usuario.
Recapitulemos. En esta etapa, hemos recopilado los siguientes puntos de datos:
El sitio parece estar ejecutando la versión 5.8 del núcleo de WordPress
El tema instalado es Business Gravity
Se utilizan los siguientes complementos: Contact Form 7, mail-masta, wpDiscuz
La versión de wpDiscuz parece ser 7.0.4, que sufre una vulnerabilidad de ejecución remota de código no autenticado.
La versión de mail-masta parece ser 1.0.0, que sufre una vulnerabilidad de inclusión de archivos locales.
El sitio de WordPress es vulnerable a la enumeración de usuarios y
admin
se confirma que el usuario es un usuario válido.
Vamos a dar un paso más y validar o completar algunos de nuestros puntos de datos con algunos análisis de enumeración automatizados del sitio de WordPress. Una vez que completemos esto, deberíamos tener suficiente información a mano para comenzar a planificar y montar nuestros ataques.
WPScan
WPScan es una herramienta de enumeración y escaneo automático de WordPress. Determina si los distintos temas y complementos que utiliza un blog están desactualizados o son vulnerables. Se instala de manera predeterminada en Kali Linux, pero también se puede instalar manualmente con gem
.
WPScan también puede obtener información sobre vulnerabilidades de fuentes externas. Podemos obtener un token API de WPVulnDB , que WPScan utiliza para buscar PoC e informes. El plan gratuito permite hasta 75 solicitudes por día. Para utilizar la base de datos WPVulnDB, solo tienes que crear una cuenta y copiar el token API de la página de usuarios. Luego, puedes proporcionar este token a wpscan mediante el parámetro --api-token
.
Al escribir wpscan -h
aparecerá el menú de ayuda.
La flag --enumerate
se utiliza para enumerar varios componentes de la aplicación WordPress, como complementos, temas y usuarios. De forma predeterminada, WPScan enumera complementos, temas, usuarios, medios y copias de seguridad vulnerables. Sin embargo, se pueden proporcionar argumentos específicos para restringir la enumeración a plugins específicos. Por ejemplo, todos los plugins se pueden enumerar utilizando los argumentos --enumerate ap
. Invoquemos un escaneo de enumeración normal contra un sitio web de WordPress con la flag --enumerate
y pasémosle un token de API de WPVulnDB con la flag --api-token
.
WPScan utiliza varios métodos pasivos y activos para determinar versiones y vulnerabilidades, como se muestra en el informe anterior. El número predeterminado de subprocesos utilizados es 5
. Sin embargo, este valor se puede cambiar utilizando la flag -t
.
Este análisis nos ayudó a confirmar algunas de las cosas que descubrimos a partir de la enumeración manual (versión 5.8 del núcleo de WordPress y listado de directorios habilitado), nos mostró que el tema que identificamos no era exactamente correcto (se está utilizando Transport Gravity, que es un tema secundario de Business Gravity), descubrió otro nombre de usuario (john) y mostró que la enumeración automática por sí sola a menudo no es suficiente (se pasaron por alto los complementos wpDiscuz y Contact Form 7). WPScan proporciona información sobre vulnerabilidades conocidas. El resultado del informe también contiene URL de PoC, que nos permitirían explotar estas vulnerabilidades.
El enfoque que adoptamos en esta sección, que combina la enumeración manual y automatizada, se puede aplicar a casi cualquier aplicación que descubramos. Los escáneres son geniales y muy útiles, pero no pueden reemplazar el toque humano ni una mente curiosa. Perfeccionar nuestras habilidades de enumeración puede diferenciarnos del resto como excelentes evaluadores de penetración.
CMSeek
CMSeek es una herramienta de línea de comandos para la detección de contenido sensible y la exploración de directorios y archivos en sitios web construidos con CMS (Content Management Systems). Esta herramienta puede ayudarte a encontrar información sensible como credenciales de acceso, claves de API y archivos de configuración que se han dejado expuestos.
Instalación
Para instalar y utilizar CMSeek en Kali Linux, sigue los siguientes pasos:
Bruteforce con CMSeek
Accedemos a CMSeek en modo interactivo:
Hacia delante
A partir de los datos que recopilamos manualmente y mediante WPScan, ahora sabemos lo siguiente:
El sitio ejecuta la versión 5.8 del núcleo de WordPress, que sufre algunas vulnerabilidades que no parecen interesantes en este momento.
El tema instalado es Transport Gravity
Se utilizan los siguientes complementos: Contact Form 7, mail-masta, wpDiscuz
La versión de wpDiscuz es 7.0.4, que sufre una vulnerabilidad de ejecución remota de código no autenticado
La versión de mail-masta es 1.0.0, que sufre una vulnerabilidad de inclusión de archivos locales, así como una inyección SQL.
El sitio de WordPress es vulnerable a la enumeración de usuarios, y se confirma que los usuarios
admin
yjohn
son usuarios válidos.El listado de directorios está habilitado en todo el sitio, lo que puede provocar la exposición de datos confidenciales.
Está habilitado XML-RPC, que puede aprovecharse para realizar un ataque de fuerza bruta de contraseña contra la página de inicio de sesión usando WPScan, Metasploit , etc.
Con esta información anotada, pasemos a la parte divertida: ¡atacar WordPress!
Caso práctico
1. Enumere el host y busque una flag.txt en un directorio accesible.
Añadimos el hosts a /etc/hosts.
Vamos a ejecutar WPScan para encontrar datos relevantes:
Encontramos un directorio de subidas de archivos expuesto:
Al acceder encontramos varios directorios accesibles, y en uno de ellos encontramos la flag:
2. Realice una enumeración manual para descubrir otro plugin instalado. Envíe el nombre del plugin y su versión como respuesta
Enumerando manualmente los plugins encontramos:
Mail Masta
Contact Form 7
Pero ninguno de ellos es la respuesta que esperamos, ya que el plugin que buscamos está oculto.
Vamos a buscar más en la propia web. Al acceder a un post vemos que pone Powered by "Wp Sitemap Page"
, un plugin válido que no conseguimos enumerar con WPScan, aunque no obtenemos la versión en plano, tendremos que buscarla:
Podemos acceder a la siguiente url para leer el archivo readme del plugin, donde obtenemos la versión:
Concretamente vemos que usa la versión 1.6.4
.
Última actualización