XUT_ / MACHINES / THM

0071

Wonderland

THMMACHINENONEMEDIUM

Introduction

wonderland

Cae por el agujero del conejo y entra en el mundo de las maravillas.

Getting the Flags

Reconocimiento Inicial

Comenzamos escaneando los puertos abiertos de la máquina.

wonderland

Ahora vamos a escanear dichos puertos más en profundidad.

wonderland

Vamos a listar directorios de la web.

wonderland

No hemos encontrado nada, vamos a ver cómo se ve la web.

wonderland


Profundización

Vamos a analizarla.

wonderland

Parece que hemos encontrado una pista, vamos a ver qué hay dentro.

wonderland

Un poco críptica la pista, sin embargo, si recordamos el escaneo, había un output /r --> r/. Puede que esto sean directorios.

wonderland

¡Justo en el clavo! Vamos a seguir investigando. Sólo hay una imagen y algo que dada la naturaleza críptica de las pistas del reto podría llegar a ser una pista, algo sobre izquierda (left) y derecha (right). Vamos a mirar el código fuente:

wonderland

Parece que hemos encontrado un usuario y una contraseña, vamos a intentar entrar por SSH.

wonderland

Y estamos dentro, vamos a buscar la primera flag.

wonderland


Explotación

Investigando vemos lo siguiente:

wonderland

Parece que podemos ejecutar un script como rabbit. Vamos a ver de qué trata el script.

wonderland

Parece que carga un poema y elige 10 lineas al azar. Sin embargo hay algo más importante, también está cargando el módulo random.

wonderland

Podemos tratar de realizar un Python Module Hijacking. Para ello creamos un archivo random.py con el siguiente contenido:

python
import os
os.system("/bin/bash")

Lo dejamos guardado en la misma carpeta del script. Y ahora ejecutamos el script como rabbit.

wonderland

Una vez dentro de rabbit, podemos ver lo siguiente:

wonderland

Es un binario con SUID. Si nos fijamos bien hay un comando: date.

wonderland

Y lo que pasa es que este no se ejecuta con ruta completa, al contrario que /bin/echo. Vamos a mirar el PATH, porque esto podría darnos la clave para un PATH hijacking.

wonderland

Acabamos de meter en el PATH como primera ruta el home de rabbit la cual es escribible por nosotros, vamos a ver qué hace el binario exactamente.

wonderland

Pata explotar esto ahora vamos a crear un archivo llamado date con el siguiente contenido:

bash
#!/bin/bash
/bin/bash

Lo guardamos en la misma ruta que hemos metido en el PATH y le damos permisos de ejecución.

wonderland

Ahora ejecutamos teaParty.

wonderland

Hemos conseguido escalar privilegios hasta hatter (el sombrerero). Vamos a ver si este encuentra la flag de usuario.

wonderland

Pues no, xD. Vamos a ver qué hay en su home.

wonderland

Parece que hay una contraseña de alguien.

wonderland


Escalada de Privilegios

Vamos a ver si podemos escalar privilegios de alguna forma.

wonderland

Parece que hay algunas capabilities, la de perl nos permite escalar privilegios:

wonderland

Sin embargo cuando tratamos de utilizarlo vemos que no nos deja:

wonderland

Puede que sea porque no somos parte de grupo hatter, lo cual es raro, vamos a iniciar sesión de manera fresca por SSH con la contraseña de hatter.

wonderland

Ahora ya si somos grupo hatter y sí debería dejarnos utilizar la capability.

wonderland

Efectivamente ya somos root.

Vamos a buscar user.txt porque no hemos podido encontrarla sin ser root.

wonderland

HUH??? Con razón no la encontrábamos, la flag user.txt estaba en el directorio root.

wonderland

Ahora vamos a buscar la flag de root.txt (que estaba en el directorio home de alice, lo vimos al empezar).


Conclusión

Una máquina muy divertida. Fácil pero tampoco demasiado. En ella hemos trabajado:

  • Esteganografía.
  • Python Module Hijacking.
  • PATH Hijacking.

Entre otras. Un reto que nos ha puesto a prueba pero dejándonos respirar.