jueves, 13 de junio de 2019

Writeup - VulnHub - unknowndevice64: 1



Tras leer el ultimo post de mi buen amigo David, me pregunté el por qué se había decantado por la segunda máquina de Unknowdevice, así que me picó el gusanillo de volver a resolver otra máquina de VulnHub, y decidí hacer la primera

Dicho esto, comencemos....

Una vez descargada la .ova de la maquina  y cargarla en Virtualbox podemos empezar a jugar con la máquina.


El primer paso es cambiar la configuración de VBox para que, dicha máquina, aparezca como una máquina más de nuestra red, para ello hay que cambiar la configuración del adaptador de red y configurarlo como Adaptador puente.


Ahora si, arrancamos la máquina y... a jugar!

El primer paso es descubrir la IP que tiene dicha máquina, para ello (y aunque hay distintas formas y herramientas para hacerlo) uso netdiscover, no me voy a para a explicar su funcionamiento, así que

Ya tenemos la dirección IP de la máquina, y el nombre "CADMUS COMPUTER SYSTEMS" es el nombre que VBox asigna a su adaptador.

El siguiente paso es realizar un escaneo haciendo uso de la herramienta nmap a la dirección IP que hemos descubierto.


Bueno.... los puertos que aparecen como "tcpwrapped" nos indica que están filtrados, es decir, controlados por un proxy, pero hay un puerto que si está accesible vía http, es el 31337.
Dicho y hecho, vamos a un navegador web e introducimos la dirección web obtenida en el escaneo con el puerto que nos ha descubierto nmap.

Encontramos una web con un script a modo de telón, el cual se mueve cuando nos movemos con el ratón por la página y encontramos la imagen anterior, claramente nos dice que hay algo escondido. Así que, vamos a la fácil, a ver el código fuente de la página y encuentro....


Pues más claro.... nos indica en el comentario que hay un fichero jpg, así que abrimos en el navegador dicha imagen.

Ya tenemos algo y todo apunta a que estamos delante de un stego, y si es así, la clave del mismo está en el nombre del archivo:

Pues sí, era tal cual había pensado. Ahora vamos a ver qué esconde el txt:
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>+++++++++++++++++.-----------------.<----------------.--.++++++.---------.>-----------------------.<<+++.++.>+++++.--.++++++++++++.>++++++++++++++++++++++++++++++++++++++++.-----------------.

Vale.... y esto qué es?
Dí un par de vueltas por internet intentando encontrar qué era eso,  pero como ya era tarde y quería avanzar todo lo posible en la máquina le pregunte a mis compañeros, los cuales me indicaron que se trataba de BrainFuck, del cual no había sido hablar nunca. Así que gracias a Rafa y Andrew por la rápida respuesta.

Ahora que ya sabía lo que era tocaba buscar un interprete de dicho lenguaje de programación:

https://copy.sh/brainfuck/


El resultado de interpretar el código es ud64:1M!#64@ud

Claramente nos está dando un nombre de usuario y una contraseña, pero.... no recuerdo haber visto ningún puerto en el escaneo donde poder introducir dichas credenciales, así que vuelta a map a realizar otro escaneo algo más "exhaustivo":


Pues ha aparecido un servidor Ssh en un puerto extraño, pero como tenemos las credenciales, pues... vamos!


Pues ya estamos dentro de la máquina, ahora hay que hacer memoria de los que nos pide el autor, es decir, dónde encontramos la flan, en /root/flag.txt

El primer comando que tecleé en la terminal qué un ls y esta fue la respuesta:


Bien empezamos, estamos en un shell restringida así que vamos a ver qué puedo ejecutar presionando dos veces el tabulador:


No tengo mucho donde elegir, pero si que veo algo interesante, puedo usar vi

Un poco de teoría:


Una shell restringida es una shell que bloquea/restringe comandos como ls, echo, etc... o "bloquea" variables de entorno como SHELL, PATH, USER. En ocasiones a una shell restringida puede bloquear comandos con "/" o redirigir la salida con >, >>.
Tipos de shell restringida: rbash, rksh, rsh.

Elevación de privilegios

Claramente, y al estar en una shell restringida, es la opción más viable. Si nos ceñimos a la teoría que os he contado, la shell en la que me encuentro cumple los parámetros de la definición, por tanto, debo de ser capaz de redirigir la salida, es decir, lo que quiero hacer es que cuando ejecute vi realmente ejecute otra cosa.
Bien, la teoría debería de funcionar, así que...

Venga vale....toca pensar otra forma de conseguir elevar privilegios.  Después de un rato dándole vueltas caí en que realmente tenía acceso a vi y que si que podía redirigir la salida de, realmente esto es un método de explotación conseguir salir de la shell restringida...

Así que ejecuté vi y.....

Yeah! ya he salido de la shell restringida, pero aún no me funciona ningún comando, así que lo que necesito es exportar "/bin/bash" como una variable de entorno SHELL y "/usr/bin" como variable de entorno PATH para poder ejecutar comandos correctamente y obtener la flag.



Genial!, todo ha ido bien :)

Pero ahora me queda otro quebradero de cabeza que es hacerme root en el sistema.

Después de dar varias vueltas (y pensar en varios expolits) caí en que para poder ser root, necesitaba saber qué usuarios del sistema pueden serlo, así que intenté listarlos sin éxito, así que..... probé si el usuario con el que estamos logueados en la shell tiene permisos para ejecutar sudo:



Vamos bien, puedo usar sudo, pero al listar con la opción "-l" me llevé una grata sorpresa, pero.... qué o quién es sysud64?

Según nos indica el mensaje puede ejecutar todos los comandos sin contraseña, pues.....


Parece ser que es el comando strace (comando que nos permite comprobar errores en el sistema operativo Linux).


Después de dar muchas, muchas vueltas, encontré una web que indicaba cómo usar sudo con strace para escalar privilegios, tenéis toda la información AQUI, así que vamos allá!



YEAH!!!!! Pues si, y ahí tenemos la ansiada flag

Una máquina entretenida!

Sed buenos...




0 comentarios:

Publicar un comentario