Responsive image

HackMyVM - CelebritySoup

23 marzo 2021

Esta máquina se encuentra en la plataforma HackMyVM y ha sido creada por el usuario ShellDredd.

Esta máquina tiene el típico estilo retro de ShellDredd con toques de esteganografía y una enumeración curiosa cuanto menos.

# Dificultad
Acceso Fácil
Escalada de privilegios Fácil

Enumeración


Antes que nada será necesario conocer la dirección IP de la máquina objetivo para lo que se utilizará la herramienta ping-sweep.

La herramienta ha detectado 4 IP:

Una vez identificada la máquina objetivo se procede a realizar la enumeración. Primero se inicia un reconocimiento del sistema operativo basado en el TTL mediante la herramienta findos.

La herramienta ha identificado la máquina como un Linux. A continuación se realizará la enumeración de los puertos con la ayuda de la herramienta nmap.

El escaneo de puertos se divide en dos. Un primer escaneo rápido de todos los puertos para identificar aquellos abiertos y un segundo escaneo para conocer qué servicios están corriendo en esos puertos.

Como el escaneo se exporta en formato Grepable puede utilizarse la herramienta get-ports para copiar los puertos abiertos y pegarlos para realizar el escaneo exhaustivo.

El escaneo exhaustivo ha desvelado que las siguientes versiones:

El servicio HTTP está habilitado por lo que vamos a ver qué es lo que hay en la página web.

Se muestra la página por defecto de Apache, pero comprobando si existe un archivo robots.txt se encuentra lo siguiente:

Analizando el código fuente de estos ficheros se encuentra que algunos que siguen el patrón /sector….html, al final del código, se encuentra un div con un atributo secret.

Se crea un pequeño código en bash para obtener todos estos códigos de manera rápida y poder identificar el secreto.

!/bin/bash
secret=""
VAR1=http://10.10.10.102/sector;
VAR2=".html"
for i in {1..10..1}; do
	VAR3=$VAR1$i$VAR2
	response=$( curl $VAR3 -s | tail -n 4 | head -n 1 | cut -d '"' -f 2)
	if [[ $response != "" ]] && [[ $response != "" ]]; then
		secret=$secret$response
	fi
	echo "URL: $VAR3 --> $secret";
done;
echo "secret --> $secret";

Ejecutando este script se obtiene el secreto oculto.

Durante el desarrollo del script se descubrió que uno de los archivos, el /sector9.html, tiene una longitud mayor al resto. Visualizando este archivo en el navegador se encuentra que tiene contenido.

Tras un buen rato investigando en esta página se prueba a crear un diccionario a partir de las palabras del sitio web y utilizarlo para hacer fuzzing. Este diccionario se realiza haciendo uso de la herramienta cewl.

cewl "http://10.10.10.102/sector9.html" --with-numbers -w dic.txt

Una vez con el diccionario se utiliza la herramienta wfuzz para hacer fuzzing al sitio web con la esperanza de descubrir un recurso que no estuviera en el archivo robots.txt.

Ha habido buena suerte, se ha encontrado el recurso project2501.html. Este recurso únicamente tiene una imagen por lo que da a pensar que puede contener información oculta.

Se descarga la imagen y se pasa por un analizador de esteganografía online.

Para realizar la decodificación esteganográfica se utiliza el sitio web: https://stylesuxx.github.io/steganography/.

Puede observarse que justo al principio de la imagen se encuentra un código binario. Este código se copia y se pega en el parseador binario-ascii: https://www.calculadoraconversor.com/binario-a-ascii/.

Se obtiene el texto digital-brain-is-transcending. En este momento tenemos unas posibles credenciales → puppetmaster:digital-brain-is-transcending.


Conseguir acceso


Se intenta la conexión al con SSH utilizando estas credenciales y se consigue acceso.

Se recoge la flag de user:

A continuación se procede a realizar la escalada de privilegios.

En la carpeta del usuario puppetmaster existe un binario con nombre systeminfo creado por root y que tiene permisos de ejecución.

Como es un archivo interesante se ejecuta para saber qué es lo que hace:

Parece que el binario ejecuta una serie de comandos como root y muestra la información al usuario. Que este archivo sea ejecutado como root es interesante por lo que se realiza un análisis estático básico analizando los strings mediante la herramienta strings.

En la captura anterior se pueden ver los comandos que ejecuta el binario y puede verse que «cat» utiliza rutas relativas por lo que está claro cuál que habrá que realizar un Path Hijacking.


Escalada de privilegios


Se crea un archivo malicioso en la carpeta temporal y con nombre cat y se incluye dentro la ejecución de una bash en modo privilegiado.

Una vez esto hay que modificar el PATH para que priorice el cat malicioso.

Tras esto vuelve a ejecutarse el binario systeminfo y ¡eureka! ya somos root.

Finalmente se obtiene el flag de root quedando finalizada la máquina. Como hemos modificado «cat» podemos utilizar otro «more» o «less» para obtener el contenido del root.txt.