CTF By RiJaBa1

Introducción

Segundo laboratorio de pivoting donde vamos a utilizar las máquinas “arroutada” y “jabita” del creador RiJaBa1. Este es el esquema del laboratorio que vamos a resolver.

Comenzamos

El primer paso será determinar la IP de la primera máquina que vamos a vulnerar.

Determinamos las redes donde se encuentra nuestra máquina de ataque.

“eth0” corresponde a la conexión con mi red doméstica. “eth1” es la segunda interfaz de red y que, se encuentra conectada a la red donde está el primer objetivo que vamos a vulnerar.

Una vez conocida esta red, la escaneamos para buscar que dispositivos se encuentran en esa red. Determinamos que la IP de la máquina arroutada es 192.168.56.130.

Arroutada

Enumeración

NMAP

Comenzamos con una enumeración rápida de los servicios disponibles.

Solo encontramos abierto el puerto 80 en el objetivo. El siguiente paso será el escaneo profundo de este servicio.

Enumeración Web

Abrimos el puerto 80 en el navegador Web.

Abrimos el código fuente, pero solo contiene la imagen anterior. Podemos intentar extraer los metadatos de la imagen por si hubiese información interesante.

Tenemos un posible directorio /scout. Vamos a realizar un escaneo de directorios.

Abrimos el directorio /scout.

Obtenemos una posible ruta a la que le falta un término. Vamos a fuzzear el término que falta. Para ello, vamos a utilizar ffuf.

Obtenemos un resultado.

El directorio encontrado es /scout/j2/docs/. Vamos a ver su contenido.

Es un directorio abierto que contiene 1000 archivos. Solo hay dos archivos con contenido. Como podemos ver, en los archivos z*, size es igual a 0. Descargamos estos dos archivos.

El archivo pass.txt no parece contener información útil. Vamos a intentar extraer información de la hoja de cálculo de libre office.

Pero es necesaria una contraseña. Vamos a utilizar la herramienta libreoffice2john para extraer el hash de la contraseña del archivo para intentar descifrarla.

Ahora vamos a descifrar este hash.

La contraseña del archivo ods es “john11”. Vamos a abrir el archivo para ver el contenido.

Obtenemos la ruta del archivo “/thejabasshell.php”. Vamos a ver el contenido en el navegador.

Nos devuelve una página en blanco. ¿Qué podemos hacer? El nombre del archivo puede ser sospechoso ¿Puede ser una pista de por donde ir?

Explotación

Vamos a tratar de encontrar un parámetro de este archivo que nos pueda permitir realizar un RCE.

Tras unos instantes tenemos el parámetro buscado.

Vamos al navegador.

Parece que falta un parámetro “b”. Volvemos a fuzzear.

Después de abrir de nuevo la URL en el navegador, parece que podemos acceder a información del sistema.

Sabiendo esto, vamos a ejecutar una reverse Shell para conectarnos al sistema objetivo. Al mismo tiempo, tenemos a la escucha un oyente netcat en el puerto 4444.

Ya estamos conectado a la máquina víctima. Vamos a mejorar la Shell. Comprobamos si existe alguna versión de Python instalada en el sistema. No es así, por lo que lo haremos de la siguiente manera.

Escalar a usuario

Tenemos acceso al sistema como www-data, ahora debemos escalar a un usuario. Comenzamos enumerando los archivos del directorio.

Pero no hay nada interesante. Seguimos, enumerando procesos internos abiertos.

Se está ejecutando un proceso interno en el puerto 8000. Vamos a redirigir este puerto a nuestra máquina de ataque. Este proceso lo realizamos de la siguiente manera.

En la máquina objetivo.

En la máquina de ataque.

Es un servidor el servicio que se está ejecutando en el puerto 8000 interno de la máquina objetivo.

Ejecutando curl y también, abrimos el puerto el navegador.

Tenemos un nuevo archivo como resultado. Vemos su contenido.

Este código nos permite, mediante peticiones POST, ejecutar comandos remotamente. Vamos a intentar ejecutar comandos remotamente.

Podemos ejecutar comandos remotamente. Vamos a tratar de enviar una Shell aprovechando el error que encontramos anteriormente. Al mismo, tiempo ejecutamos un oyente netcat en el puerto 4444.

Ya tenemos conexión en la máquina objetivo como usuario “drito”. Realizamos el tratamiento de la tty.

Buscamos la flag user.txt

Elevación de privilegios

Comenzamos enumerando los permisos de sudo.

Podemos ejecutar xargs como cualquier usuario.

Buscamos la flag root.txt

Pivotando de “arroutada” a “jabita”

Comenzamos enumerando en que redes se encuentra la máquina “arroutada”.

La IP 192.168.56.130 corresponde la red donde se encuentra nuestra máquina de red. Vamos a realizar un escaneo de todos los equipos que se encuentran en esta segunda red. Para ello, creamos un pequeño script en bash que mediante ping nos muestre las IPs activas en red.

Enviamos este archivo a la máquina “arroutada” haciendo uso de un servidor HTTP con Python3.

Damos permisos de ejecución al script y comenzamos el reconocimiento.

Ya tenemos la IP de la máquina “jabita” a la que pivotaremos desde “arroutada”.

El siguiente paso sabiendo que existe otra máquina visible desde “arroutada”. Comenzamos el proceso de pivoting. En nuestra máquina de ataque ejecutamos lo siguiente:

El siguiente paso será transferir un binario de chisel a la máquina “arroutada” utilizando un servidor Python HTTP. Damos permisos de ejecución. Y ejecutamos de la siguiente manera:

Ejecutando de esta manera podremos tener conexión con todos los puertos de la máquina “jabita” ejecutando un único comando.

Se crea una conexión de tipo socks a la escucha en el puerto 1080. Para que esto funcione deberemos crear una conexión de socks para eso puerto en el archivo /etc/proxychains.conf. Añadimos la siguiente línea en el archivo.

A partir de este momento, debemos utilizar la herramienta proxychains para poder utilizar el túnel creado y poder conectarnos con la máquina “jabita” desde nuestra máquina de ataque, aún no estando en nuestra red.

Ya podemos comenzar con la enumeración y explotación de “jabita”.

Jabita

Enumeración

NMAP

Comenzamos enumerando los puertos abiertos en la máquina “jabita”. Recordamos que para poder conectarnos con esta máquina desde nuestra máquina de ataque debemos utilizar proxychains.

Puertos 22 y 80 abiertos. Vamos a escanear de manera profunda estos servicios.

Enumeración Web

Para comenzar la enumeración Web, debemos configurar foxy proxy para poder conectarnos al puerto 80 de la máquina “jabita”.

A partir de este momento, podremos conectarnos al puerto 80 de la máquina “jabita”.

No parece contener anda interesante. Tampoco en el código fuente.

Vamos a realizar una enumeración de los directorios del sitio Web.

Obtenemos como resultado un directorio /building. Vamos a ver su contenido.

Tres enlaces a otros puntos del sitio Web. Hay una cosa que nos llama la atención. Si nos fijamos en la URL, parece vulnerable a “directory traversal”. Vamos a comprobarlo.

Explotación. Acceso al sistema como usuario “jack”

Obtenemos resultados para los archivos /etc/shadow y /etc/passwd. Vamos a realizar una copia de los datos de estos tres usuarios del archivo paswd y shadow. Unificamos los datos de los dos archivos con unshadow y desciframos con john.

Tenemos la contraseña para el usuario “jack”. Recordamos que, en el escaneo de servicios inicial, el puerto 22 (SSH). Vamos a tratar de conectarnos a la máquina víctima a través de este servicio con las credenciales encontradas.

Tenemos conexión en la máquina víctima como usuario “jack”.

Pivotando a usuario “jaba”

Comenzamos listando los permisos que tiene el usuario “jack” para utilizar privilegios de otro usuario.

Consultamos GTFOBins.

Ejecutamos y habremos pivotado al usuario “jaba”.

Realizamos el tratamiento de la tty.

Buscamos la flag user.txt

Elevación de privilegios

Volvemos a consultar los permisos de sudo.

Podemos ejecutar como “root” un script cuya utilidad es cargar una librería Python. Vamos a ver cómo podemos elevar privilegios sabiendo esto.  

Buscamos la ubicación de la librería.

Tenemos la ubicación de la librería, además podemos modificarla.

Abrimos el archivo con nano y cambiamos el código por el siguiente:

Con este código, cuando se ejecute la función, “root” lanzará la Shell.

Volvemos a lanzar la librería Python, pero ahora modificada.

Solo quedará buscar la flag root.txt.

Fin de la resolución de los CTF “arroutada” y “jabita” en el mismo laboratorio donde hemos vulnerado la máquina “arroutada” que se encontraba en la misma red de nuestra máquina de ataque. Tras esto, hemos pivotado a la máquina “jabita” solo visible desde “arroutada”.

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *