githubEditar

🟨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:

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:

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:

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:

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

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:

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

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:

  2. Instala 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 enlacearrow-up-right, 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:

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.

Interior del .sql

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:

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:

  • -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.

Accedemos a 127.0.0.1:2222

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-26035arrow-up-right.

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: