Bank

Bank es una máquina relativamente simple, sin embargo, una enumeración web adecuada es clave para encontrar los datos necesarios para la entrada. También existe un método de entrada no deseado, que muchos usuarios descubren antes de encontrar los datos correctos.


Reconnaissance

Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Bank. Este resultado lo almacenaremos en un archivo llamado allPorts.

A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.

Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentran abierta una página web de Apache, el servicio de DNS y SSH.

Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.

Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Web Enumeration

Realizaremos una comprobación de las tecnologías que son utilizadas en el sitio web.

Al acceder a http://10.10.10.29, nos encontramos con la página que viene con Apache por defecto.

Realizamos una enumeración de directorios y páginas web a través de la herramienta de feroxbuster, pero no logramos obtener resultado ninguno.

Virtual Hosting

Probamos de aplicar Virtual Hosting para verificar si al acceder a través de http://bank.htb se nos mostraba una página diferente.

El nombre de dominio lo podemos deducir de las máquinas que ya hemos realizado en HTB, pero también se nos presentaba esta información en la enumeración de Nmap al realizar el traceroute.

Virtual Hosting es una técnica que permite que un solo servidor web aloje múltiples sitios web, utilizando diferentes nombres de dominio, direcciones IP o rutas. Existen dos tipos principales:

  1. Virtual Hosting basado en nombre: El servidor identifica qué sitio mostrar en función del dominio utilizado en la solicitud.

  2. Virtual Hosting basado en IP: Cada sitio tiene una dirección IP distinta, pero todos comparten el mismo servidor.

Esta técnica optimiza los recursos, permitiendo la gestión de varios sitios en una sola máquina, lo que es esencial para el alojamiento web moderno.

DNS Enumeration

Realizaremos una enumeración a través del DNS que se encuentra expuesto, para verificar si logramos obtener más información al respecto de nombres de dominio.

El comando dig A @10.10.10.29 bank.htb se utiliza para consultar un servidor DNS específico (en este caso, 10.10.10.29) para obtener el registro A (dirección IPv4) de un dominio, en este caso, bank.htb. Esto es útil para verificar la resolución de nombres de dominio y asegurarse de que el servidor DNS está configurado correctamente.

El comando dig AAAA @10.10.10.29 bank.htb consulta el servidor DNS en la dirección 10.10.10.29 para obtener el registro AAAA, que corresponde a la dirección IPv6 del dominio bank.htb. Este tipo de consulta se utiliza para obtener la dirección IPv6 asociada a un nombre de dominio.

El comando dig any bank.htb @10.10.10.29 realiza una consulta DNS de tipo ANY al servidor DNS en la dirección 10.10.10.29 para obtener todos los registros asociados al dominio bank.htb. Esto incluye registros de tipo A, AAAA, MX, TXT, entre otros.

El comando dig axfr bank.htb @10.10.10.29 realiza una consulta de transferencia de zona DNS (AXFR) al servidor DNS en la dirección 10.10.10.29 para obtener todos los registros DNS asociados al dominio bank.htb. Esto generalmente se usa para obtener una copia completa de la zona DNS, pero puede ser restringido por el servidor para evitar la divulgación de información sensible, como en este caso.

Initial Access

Information Leakage

Realizaremos una comprobación de las tecnologías que son utilizadas en el sitio web.

Al acceder a http://bank.htb, nos encontramos con la siguiente página web que nos proporciona un panel de autenticación. Intentamos realizar un Authentication Bypass con inyecciones SQL, pero no obtuvimos resultado.

Realizamos una enumeración de la página web en la cual nos proporcionó el siguiente resultado con diversas páginas y directorios interesantes.

Volveremos a realizar la enumeración de directorios, pero esta vez con la herramienta de gobuster.

Al realizar la enumeración, verificamos que se nos muestra distintos directorios, entre los cuales nos llama la atención el nombre de balance-transfer.

Una transferencia de saldo es la transferencia del saldo de una cuenta a otra cuenta, a menudo mantenida en otra institución. Se utiliza con mayor frecuencia al describir una transferencia de saldo de una tarjeta de crédito.

Al acceder a http://bank.htb/balance-transfer/, verificamos un gran listado de archivos .acc que parecen ser transferencias bancarias.

La extensión de archivo .acc no tiene un solo significado definido y puede variar dependiendo del contexto en el que se use. Algunas posibles aplicaciones de los archivos con esta extensión son:

  1. Archivos de base de datos: En algunas aplicaciones, los archivos .acc pueden estar asociados a bases de datos o aplicaciones de contabilidad.

  2. Archivos de configuración: En otros casos, pueden ser archivos de configuración específicos para programas o sistemas particulares.

  3. Archivos de acceso: Algunas veces, esta extensión se usa para archivos que almacenan información relacionada con el acceso o autenticación en un sistema.

Al realizar la comprobación de uno de esos archivos, verificamos que se trata de un reporte bancario en el cual aparecen datos del usuario, contraseña, transacciones etc. Este contenido se encuentra encriptado.

Desde la propia página web, tratamos de comprobar si alguno de esos archivos tenía un tamaño distinto, con lo cual probamos en darle a la opción de Size y se ordenó alfabéticamente de menor a mayor tamaño.

En el resultado obtenido, comprobamos que solamente uno de ellos tenía un tamaño menor al resto, lo cual nos llevó a sospechar que quizás tuviera otro contenido sensible, etc.

Al realizar la comprobación del archivo, verificamos que aparecían las credenciales del usuario chris en texto plano. Al parecer, la encriptación no funcionó en ese archivo, por ese motivo el tamaño inferior al resto.

También podemos realizar esa comprobación a través del siguiente comando de cURL, en el cual filtrábamos por el nombre del archivo junto a su tamaño y a través de expresiones regulares, eliminábamos aquellos resultados repetitivos.

Volvemos al panel de autenticación de http://bank.htb y probamos de autenticarnos con las credenciales del usuario encontrado.

Verificamos que hemos logrado acceso a la cuenta de banco del usuario chris. Entre la información presente, podemos visualizar el saldo disponible, transacciones, etc.

Abusing File Upload (RCE)

Ingresando al apartado de Support, comprobamos que teníamos la capacidad de realizar un ticket y subir un archivo, con lo cual nos llevó a pensar en subir un archivo malicioso (webshell) para lograr tener acceso al sistema.

Al intentar subir directamente un archivo con extensión .php, se nos mostró el siguiente mensaje de error indicando que solamente estaba permitido la subida de imágenes.

Tratamos de cambiar el Content-Type y la extensión del archivo a una que nos acepte el servidor. Al enviar la solicitud, se nos indicó que se había realizado correctamente la solicitud.

Comprobamos en el panel de My Tickets que se ha creado nuestro ticket en el cual dispone de un Attachment que es el archivo que hemos logrado subir.

Al acceder al archivo, se nos mostraba la URL en la cual se almacenaban estos archivos y en este caso, como realmente no era una imagen, nos apareció el siguiente mensaje de error.

Probamos distintas manera de intentar eludir la restricción del File Upload, pero en ninguna obtuvimos resultado...

Revisando el código fuente de http://bank.htb/support.htb, verificamos que aparece una línea comentada en la cual se informa que han añadido la extensión .htb para que pueda ejecutar php con propósitos de debug, algo bastante inusual...

Por lo tanto, decidimos en intentar subir un archivo con extensión .htb tal y como se nos indicaba, verificamos que se logra subir correctamente el archivo malicioso de nuestra webshell.

Realizamos una comprobación para verificar que tenemos la capacidad de ejecutar comandos a través de la webshell subida.

Al verificar el RCE, el siguiente paso será lograr obtener acceso al sistema. Nos pondremos en escucha con nc.

A través del primer comando, lo que realizaremos es codificar nuestra sintaxis de la reverse shell en formato URL, para no tener problemas a la hora de ejecutarlo a través de la webshell.

Una vez obtenido el comando a ejecutar, haremos uso de la webshell para otorgarnos acceso al sistema.

Verificamos que finalmente logramos acceso al equipo y podemos visualizar la flag de user.txt.

Al obtener la reverse shell, mejoramos la calidad de la shell con los siguientes pasos para obtener una TTY interactiva.

Privilege Escalation

Abusing SUID Binary

Realizaremos una verificación inicial de los privilegios que dispone el usuario actual. Verificamos que no disponemos de algún grupo interesante ni permisos de sudoers.

Al verificar si había algún permiso de SUID sobre algún binario, comprobamos la existencia de un binario inusual llamado /var/htb/bin/emergency.

Verificamos el propietario de este binario y nos encontramos que es root.

Probamos de utilizar el binario para verificar el funcionamiento de este. Inesperadamente, este binario nos proporcionó acceso como root con lo cual pudimos visualizar la flag de root.txt.

Al parecer este binario era como una especie de backdoor que habrían dejado los administradores del sistema.

Writable Passwd File

Por otro lado, otra manera de realizar el PrivEsc en esta máquina es la siguiente.

Revisando los archivos que teníamos capacidad de escritura, nos encontramos que podíamos escribir el archivo /etc/passwd.

Por lo tanto, generamos una contraseña a través de openssl y verificamos que en este caso, el usuarioroot no disponía de ninguna contraseña asignada. Con lo cual, podemos añadir un nuevo usuario, o remplazar la x por el valor de nuestra contraseña generada para que el usuarioroot disponga de nuestras credenciales.

Modificamos el archivo /etc/passwd y le asignamos al usuarioroot nuestras credenciales generadas, verificamos que los cambios se han guardado correctamente.

Migramos al usuario root e introducimos nuestras credenciales asignadas. Verificamos el acceso como usuarioroot y la flag root.txt.

Última actualización

¿Te fue útil?