Entrenando con Vulnhub - JANGOW: 1.0.1

Entrenando con Vulnhub - JANGOW: 1.0.1

Hola a tod@s!

De vez en cuando me dejo caer por Vulnhub para ver las nuevas máquinas que van sacando, para entrenar, más que nada. Esta la tenía en el tintero, así que al lío.

Descargamos la máquina virtual del repositorio. En el que encontrareis esta OVA para máquina virtual.

Una vez desplegada, vamos al lío. Nmap nos aporta un par de puertos (lo suyo es probar con todos, parámetro -p-). Los podemos ver a continuación, el 21 (ftp) y el 80 (http):

Entrenando con Vulnhub - JANGOW: 1.0.1

Comenzamos con el 80, en el raíz se muestra el directorio /site/:

Entrenando con Vulnhub - JANGOW: 1.0.1

Vemos el tipo de servidor web y sistema operativo que hay detrás, con ello, entramos y vemos el contenido que nos deja la propia web, para ver por donde podríamos avanzar.

Después de ver el código fuente de la página, lo interesante es una opción de Buscar que tiene la propia página:

Entrenando con Vulnhub - JANGOW: 1.0.1

Después de probar diferentes diccionarios y palabras vemos lo que se esconde:

Entrenando con Vulnhub - JANGOW: 1.0.1

Si introduces palabras, generalmente no te aporta una respuesta, o más bien, una página en blanco, ¿por qué?

Entrenando con Vulnhub - JANGOW: 1.0.1

Porque lo que hay que introducirle es un comando, ni más ni menos.

Este es su código fuente:

Entrenando con Vulnhub - JANGOW: 1.0.1

Tenemos una shell en esta página, comando que pongas, si existe y tienes privilegios para ejecutarlo, funcionará sin más.

Mientras, habíamos puesto otras herramientas a trabajar, por ej. Dirbuster :

Entrenando con Vulnhub - JANGOW: 1.0.1

Vemos un wordpress, o eso parece a priori. Pero por su contenido, es un directorio señuelo:

Entrenando con Vulnhub - JANGOW: 1.0.1

Si crees que es un Wordpress, te lías a lanzar wp-scan para sacar datos y pierdes algo de tiempo… pero por si acaso, miramos ese fichero “config.php” por si suena la flauta.

Entrenando con Vulnhub - JANGOW: 1.0.1

Se trata de la cadena de conexión a Base de Datos, nos apuntamos todo esto.

Entrenando con Vulnhub - JANGOW: 1.0.1

Comprobamos como en el puerto 3306, de la localhost hay un Mysql. Como vemos en la url.

netstat -antopu | grep LISTEN

Además del 21 y 80 que veíamos con Nmap, está el 22. Sin embargo, se encuentra filtrado. Habrá que buscarse la forma de acceder después.

Wfuzz detectó con uno de los diccionarios, el siguiente fichero:

Entrenando con Vulnhub - JANGOW: 1.0.1

Otro fichero de configuración, con otras credenciales. Lo mismo que antes, lo apuntamos.

Entrenando con Vulnhub - JANGOW: 1.0.1

De momento, tenemos un par de usuarios de Base de Datos y la misma contraseña.

Ahora probamos alguno de los usuarios en el FTP para saber si no sólo son usuarios de Base de Datos.

Entrenando con Vulnhub - JANGOW: 1.0.1

Podía verse este usuario directamente desde la web:

Entrenando con Vulnhub - JANGOW: 1.0.1

Genial, tenemos 1 usuario de sistema operativo, ya podríamos acceder por ssh, pero no lo tenemos directamente abierto para que accedamos, así que tendremos que buscar la manera.

Si alguno os preguntáis por qué no seguimos utilizando la shell vía web, esta es la respuesta, la limitación del usuario con el que accedemos:

Entrenando con Vulnhub - JANGOW: 1.0.1

Así que aprovechamos este FTP al que tenemos acceso para subir algún fichero que podamos aprovechar para proporcionarnos acceso al ssh o al Mysql que vimos previamente (si quisiéramos acceder a él).

Para ello, utilizaremos reGeorg . Con ello, crearemos un proxy socks en la máquina destino que nos permitirá acceder a cualquier puerto local de la máquina y que no esté accesible directamente.

Por un lado subimos el fichero “tunnel.nosocket.php”, que se encuentra ubicado dentro del directorio de reGeorg, al FTP como “tunnel.php”, en el directorio destino /tmp. Y le damos permisos para que el usuario www-data pueda copiarlo dentro de /site/. Filezilla es genial para esto. Con lectura para todos es suficiente.

Entrenando con Vulnhub - JANGOW: 1.0.1

Lo copiamos a su sitio:

Entrenando con Vulnhub - JANGOW: 1.0.1

Y ahora ya podemos acceder, mediante el proxy socks en el puerto 8080 de nuestro pc:

Entrenando con Vulnhub - JANGOW: 1.0.1

En el Putty , tenéis que configurarle el proxy socks (puerto 8080) y para dentro.

Comprobamos si lo hemos hecho bien, consultando el fichero de flag:

Entrenando con Vulnhub - JANGOW: 1.0.1

Ahora hay que escalar privilegios. Para saber lo que tendremos que buscar, antes vemos la versión de sistema operativo y kernel (lo habíamos hecho antes desde la misma shell):

Entrenando con Vulnhub - JANGOW: 1.0.1

Ubuntu 16.04.1 LTS con un kernel 4.4.0-31-generic. Hay multitud de herramientas que buscan vulnerabilidades de kernel, malas configuraciones, credenciales, etc.

Me puse a buscarlo a mano y encontré esta aplicación que me pareció curiosa:

Entrenando con Vulnhub - JANGOW: 1.0.1

Me llamó la atención porque lo vi en el histórico del usuario cuando accedí:

Entrenando con Vulnhub - JANGOW: 1.0.1

¿Otro señuelo?

Si lo abrimos con Ghidra , vemos una función xsh. Puede verse también key, arc4, etc. Me sonaba de haberlo visto antes.

Entrenando con Vulnhub - JANGOW: 1.0.1

Se trata de una utilidad que trata de evitar que los ficheros shell scripts estén accesibles directamente, para ello generan un binario (este binario, con el contenido del script cifrado), se descifra y ejecuta. Aquí os dejo una utilidad para obtener el código fuente del script original antes de cifrarlo.

Vemos como funciona.

Entrenando con Vulnhub - JANGOW: 1.0.1

Ahora tenemos en backup.sh el script que tratan de ocultar.

Entrenando con Vulnhub - JANGOW: 1.0.1

Antes de esto lo comprobé con strace, vi como se cargaba ese “cat” desde multitud de directorios

Entrenando con Vulnhub - JANGOW: 1.0.1

Dicho esto, pasamos a la vulnerabilidad que nos hace root de la máquina, seguro que no es la única, pero sí la primera que se prueba, siendo el sistema operativo y kernel que es, como no, Dirty Cow .

La máquina tiene gcc para que podamos compilarlo y ejecutarlo directamente.

Entrenando con Vulnhub - JANGOW: 1.0.1

Comprobamos la flag para saber si todo ha ido bien y eso es todo, amigos!

Nos vemos en el próximo post.

Hasta otra!!




via El pirata de San Jhony
Ad placement
Este artículo es patrocinado por Woodmex Store