Taller de hacking ético: Talent

Web de wordpress con una vulnerabilidad y escalada de privilegios en linux mediante python.

Taller de hacking ético: Talent
  1. Home
  2. Blog
  3. Taller de hacking ético: Talent

0. Taller de hacking ético dockerlabs.es: Talent

1. Reconocimiento inicial.

comprobación de la conectividad

ping -c 2 -W 2 172.17.0.2

Envía 4 paquetes ICMP con timeout de 2 s. El TTL=64 indica host Linux; tiempos ~0,05 ms confirman que es local (contenedor Docker).

Escaneo de puertos completo

nmap -sC -sV -Pn -n -T4 -p- --open -oN scan_full.txt 172.17.0.2
  • -p-: escanea los 65535 puertos TCP.
  • -sV: detección de versión de servicio.
  • -sS: escaneo silencioso
  • -sC: ejecuta los scripts NSE por defecto (banners, títulos HTTP, etc.).
  • -Pn: para no ejecutar el comando ping, ya que algunas máquinas tienen deshabilitado el ping porpmotivos de seguridad.
  • -n: Para que no haga la resolución de DNSs
  • --open : muestra solo puertos abiertos.
  • -T4: plantilla de velocidad "agresiva" (adecuada en local).
  • -oN: guarda la salida en texto normal.

Vemos que solo el puerto 80 está abierto y que es un WordPress con la versión 6.9.1 (que no es la última) por lo que podríamos usar wpscan para ver plugins, usuarios y temas vulnerables.

Cabeceras HTTP y tecnología

curl -sI http://172.17.0.2/

-sI envía una petición HEAD (solo cabeceras) que nos sirve para ver Server, Link (REST API de WordPress) y Content-Type

whatweb -a 3 http://172.17.0.2/

whatweb -a 3 usa agresividad 3 para identificar CMS, plugins y versiones.

Enumeración de drectorios y archivos

gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/dirb/common.txt -t 50
  • -u url
  • dir modo directorios
  • -w diccionario (ruta al mismo)
  • -t 50 número de hilos (50)

A veces da problemas así que probamos:

gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/dirb/common.txt -t 50 -b 204,301,302,307,401,403

-b le está indicando a Gobuster que ignore cualquier URL o directorio que devuelva alguno de esos códigos HTTP.

  • 204: No Content -> La petición fue con éxito, pero la respuesta no tiene contenido.
  • 301: Moved Permanently -> Redirección permanente. Si la herramienta genera muchos falsos positivos por redirecciones masivas a una misma página.
  • 302: Found -> (Redirección temporal) Redirección temporal. Muy común cuando te redirige al login de nuevo o a una página genérica.
  • 307: Temporary Redirect -> Otra variante de redirección temporal.
  • 401: Unauthorized -> Requiere autenticación (HTTP Basic Auth, etc.).

Usamos wpscan para afinar

Ta que se trata de un WordPress, veamos su obtenemos una lista de usuarios y de plugins:

wpscan --url http://172.17.0.2 -e u,p

Hemos encontrado cositas:

  • Tema:
    • El tema en uso es twentytwentyfive y está desactualizado
    • WPScan indica que "Theme > directory listing is enabled" (el listado de directorios está activo), significa que cualquier persona puede ver y navegar por la estructura de carpetas y archivos de tu tema desde su navegador web.
  • Plugins:
    • Usa el plugin Pie Register versión 3.7.1.0 y está desactualizado.
  • Users:
    • usuario admin identificado

Esto es un taller de dificultad media, así que por aquí van a ir los tiros. Buscamos información en Google acerca de este plugin y suversión y encontramos que tiene una vulnerabilidad conocida:

The Pie Register plugin for WordPress (version ≤ 3.7.1.4) exposes an unauthenticated endpoint that allows an attacker to hijack admin sessions > simply by POSTing a specific payload.

Exploitation results in stealing the session cookies of user ID 1 (usually admin) without needing any login credentials.

Bingo!

2. Explotación de la vulnerabilidad.

[to Do]