Skip to main content

Vulnyx machines – Sandwich Writeup

Vulnyx machines – Sandwich Writeup

Sandwich es una de las máquinas existentes actualmente en la plataforma de hacking Vulnyx, y es de dificultad Medium.

 

En este caso se trata de una máquina basada en el Sistema Operativo Linux.

 

Empezaremos con el escaneo de puertos una vez tenemos la ip que tiene la máquina a vulnerar que en mi caso será la 192.168.0.17

 

Usamos feroxbuster para ver que encontramos en el puerto 80 y encontramos lo siguiente

 

Entrando via web, lo único que nos llama la atención es un apartado de login, resgistro y contraseña olvidada.

 

Dado que tenemos un dominio, buscamos si existe algun subdominio y encontramos webmail.sandwich.nyx

 

Si entramos en este nuevo subdominio, tal y como indica el nombre, encontramos un portal de correo, en el cual podremos hacer login y registrarnos.

 

Empezamos registrando una cuenta y nos encontramos un buzon de correo vacio.

 

Revisando por dónde puede ir la intrusion, probamos a cambiar la contraseña desde el dominio principal al usuario que acabamos de crearnos.

 

Volvemos al buzón de correo y nos llega un mensaje con un enlace con el que se puede cambiar la contraseña, en este caso, son varias las peticiones de reseteo de contraseña las que se han pedido, y gracias a esto, nos damos cuenta de que el token es identico en ambas peticiones, salvo el primer octeto, el cual vemos que va rotando y comprobamos que:

– ab3cdc9c es anterior a acf24e14 por lo que consideramos que entre un correo y otro, han existido posibles variaciones de este primer octeto
– El enlace NO caduca
– Una vez usado el enlace, ya no está disponible
– No hay comprobación de ningún tipo y desde cualquier navegador se puede usar

 

A partir de aquí, hay dos posibles intrusiones

1 – Fuzzing de token

Como hemos dicho antes, el primero octeto tiene una lógica y ordenacion, por lo que podemos saber qué tokens han existido entre un correo y otro, asi que, como queremos acceder a la cuenta de admin, tendremos que enviar 3 correos, uno a nosotros mismos , otro al admin y otro de nuevo a nosotros mismos, de tal forma que sabiendo los octetos del primer y tercer correo, podemos generar los posibles para la cuenta de admin.

Lo más importante de este método es pedir los correos lo mas rápido posible para que la lista de posibles tokens sea lo mas corta posible ( el & al final del comando hace que no espere a que termine la ejecucion ) :

 

Recibimos los correos y generamos los tokens:

 

Por problemas que teníamos con la base de datos para fuzzear el token, hacemos split de los ficheros para que sean mas pequeños y tambien usaremos wfuzz donde la velocidad de peticiones es menor, haciendo que no tengamos problemas:

 

Al haber encontrado la parte del token, tambien se ha cambiado la contraseña por la que le hemos puesto en la sentencia del wfuzz.
Hacemos login en sandwich.nyx y nos encontramos con la opción de descargar «sandiches guardados», el cual es una caracteristica de la web donde puedes hacer una animación con diferentes ingredientes.

 

Abrimos el csv y vemos los siguientes usuarios

 

Tras volver a mirar varias cosas, decidimos hacer fuerza bruta en el webmail sobre estos usuarios y el que nos va a dar el positivo es el usuario matthygd_x

 

Finalmente, hacemos login en el webmail y vemos las credenciales para poder acceder vía ssh.

 

2 – ll104567 nos chiva que el usuario he110wor1d , ha encontrado otra forma de acceder a la cuenta de admin@sandwich.nyx sin necesidad de hacer fuzzeo, para ello , tenemos que hacer login en sandwich.nyx con la opción de «remember me» marcada e interceptamos la peticion.

Tenemos que añadir a la cabecera, despues del PHPSESSID, «remember_me=admin@sandwich.ny» y como correo enviado en la data del post, lo cambiamos a admin, tal y como vemos en la siguiente captura.

Tras esto, hacemos un forward de la petición

Y estamos con la cuenta de admin

 

A partir de aquí, llegamos al mismo punto de conseguir las credenciales de matthygd.

 

Accedemos por ssh a la máquina y revisamos que permisos tenemos con sudo

 

Revisamos qué hace el binario chvt y lo que vemos en man es «Change foreground virtual terminal», es decir que podemos hacernos con una terminal.
Revisando el sistema, comprobamos que el usuario ll104567 tiene la tty20

 

Para poder usarlo, tendremos que ir a la terminal de winbox, acceder con la contraseña de matthy, ejecutaremos el siguiente comando y una vez estando en esa tty, nos enviaremos una reverse shell

 

Si ejecutamos sudo -l, comprobamos que tenemos permisos para lanzar un script como root

 

Revisamos que hace el fichero

 

Por lo tanto, al ejecutar el script, nos va a pedir que introduzcamos un numero donde lo podremos adiviar sabiendo si nos responde mayor o menor.

La primera vez que intenté resolver la máquina, tuve la suerte de dar con el número manualmente. Sin embargo, para obtener una forma más fiable de encontrar el número, necesitamos reducir el rango de posibles valores de manera progresiva. Además, es importante recordar que el valor de $RANDOM nunca será mayor que 32767. Por lo tanto, al sumarle 1, el rango se limita a 1-32768.

Dado que este rango es menor que MAX (que en este caso es 2,000,000), no es necesario realizar una división completa. En consecuencia, el valor de NUMBER siempre estará en el rango de 1 a 32768.

 

Una manera sencilla de ir haciendo esto es mediante el siguiente script ( ll104567 🙂 ), que dependiendo si el numero es mayor o menor, va sacando las mitades para abarcar y poder adivinar el número.

 

Si el número que introducimos es mayor pondremos el número introducido como MAX y si es menor lo pondremos como MIN, tantas veces hasta que demos con el número.

 

 

Y hasta aquí la maquina sandwich para la plataforma Vulnyx !

 

2 thoughts on “Vulnyx machines – Sandwich Writeup

  1. Hola cómo estás? te hago una consulta , cuando envías los 3 correos , los haces porn terminal con curl ? el de admin , no se ve reflejado , porque supuestamente lo mandas como usuario admin , por lo cual le llegaría a su bandeja ….no es cierto ? El script get_tokens.py en qué momento lo ejecutas ?
    Muchas Gracias , saludos desde Argentina.

    1. Hola, te comento:
      – El envio de los correos se hace en el script como se ve en el writeup.
      – El correo de admin, no lo ves pero tampoco lo envias como nadie, dado que se hace desde la web de sandwich.nyx y ahi no hace falta estar logeado como nadie.
      – El script de get_token.py se ejecuta tras haber cambiado el start_hex y el end_hex

      Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *