Vulnhub RickdiculouslyEasy

11 December 2017

RickdiculouslyEasy

URL de la máquina: https://www.vulnhub.com/entry/rickdiculouslyeasy-1,207/
Descripción: This is a fedora server vm, created with virtualbox.

It is a very simple Rick and Morty themed boot to root.

There are 130 points worth of flags available (each flag has its points recorded with it), you should also get root.

It’s designed to be a beginner ctf, if you’re new to pen testing, check it out!

Solución

Nada más iniciar la máquina, podemos observar que nos indica la IP que ha asignado a la máquina y un puerto (https://172.16.199.128:9090) por lo que accedemos a través del navegador y nos encontramos con la primera flag.

_config.yml

FLAG{THERE IS NO ZEUS, IN YOUR FACE} - 10/130 puntos.

Dado que la flag nos indica que no existe ningún framework Zeus, realizamos un escaneo de puertos para comprobar que servicios hay corriendo en la máquina.

_config.yml

La salida de nmap nos indica que existe un FTP en el puerto 21 en el cuál se permite el login con el usuario anonymous y vemos que hay un fichero FLAG.txt. Entramos y vemos la segunda flag.

_config.yml

FLAG{Whoa this is unexpected} - 20/130 puntos.

Seguimos por el puerto 80 ya que vemos que hay un apache. Vemos que existe el fichero robots.txt que contiene varias entradas interesantes.

They're Robots Morty! It's ok to shoot them! They're just Robots!

/cgi-bin/root_shell.cgi
/cgi-bin/tracertool.cgi
/cgi-bin/*

Probamos ambas entradas y vemos que en tracertool se trata de una herramienta que ejecuta el comando traceroute sobre la entrada de usuario, por lo que intentamos realizar un command injection y vemos que es vulnerable. Intenamos mostrar el fichero /etc/host mediante el comand “cat” y vemos que han cambiado el binario por uno que muestra un gato.

_config.yml

Por lo que utilizamos el comando more para visualizar el contenido del fichero y así poder ver que usuarios existen en la máquina.

_config.yml

Dado que ya no hay más entradas en el fichero robots.txt decido lanzar un dirb para ver si conseguimos descubrir algún directorio o fichero interesante en el sistema. _config.yml

el dirb nos muestra que existe la carpeta password, por lo que accedemos a ella y podemos ver dos ficheros:

_config.yml

Uno de ellos es una flag,por lo que la visitamos y ya tenemos otros 10 puntos.

_config.yml

FLAG{ Yeah d- just dont do it.} 30/130 puntos.

El otro fichero, es un fichero html que si vemos el codigo fuente podemos encontrar la contraseña “winter”

<!DOCTYPE html>
<html>
<head>
<title>Morty's Website</title>
<body>Wow Morty real clever. Storing passwords in a file called passwords.html? You've really done it this time Morty. Let me at least hide them.. I'd delete them entirely but I know you'd go bitching to your mom. That's the last thing I need.</body>
<!--Password: winter-->
</head>
</html>

Antes hemos visto en el fichero /etc/hosts que existia un usuario cuyo nombre era Summer, por lo que probamos a loguearnos en el servicio ssh del puerto 22222, ya que el del 22 es fake, con el usuario Summer y contraseña winter.

Yay!! ya tenemos acceso al servidor, y en el directorio del usuario Summer encontramos la siguiente flag

_config.yml

FLAG{Get off the high road Summer!} 40/130 puntos

Mirando distintos directorios del servidor vemos que existen ficheros interesantes en los disintos homes de otros usuarios como puede ser Morty y RickSanchez, por lo que como solo tenemos permisos de lectura, vamos a bajarnos los ficheros a nuestra máquina para analizarlos. Para ello ejecutamos los siguientes comando scp.

scp -P 22222 Summer@172.16.199.128:/home/Morty/Safe_Password.jpg .
scp -P 22222 Summer@172.16.199.128:/home/Morty/journal.txt.zip .
scp -P 22222 Summer@172.16.199.128:/home/RickSanchez/RICKS_SAFE/safe .

Empezamos analizando el fichero journal.txt.zip y vemos que para descomprimirlo necesitamos una contraseña, por lo que pasamos a analizar el fichero Safe_Password.jpg. Sacando los strings de dicha imagen podemos obtener la contraseña del fichero zip.(MeeSeek)

_config.yml

Descomprimimos el fichero y obtenemos el fichero journal.txt cuyo contenido es

Monday: So today Rick told me huge secret. He had finished his flask and was on to commercial grade paint solvent. He spluttered something about a safe, and a password. Or maybe it was a safe password... Was a password that was safe? Or a password to a safe? Or a safe password to a safe?

Anyway. Here it is:

FLAG: {131333} - 20 Points 

Ya tenemos otra flag. 60/130 puntos.

Vamos ahora a por el otro fichero que nos hemos descargado, el binario safe. Lo ejecutamos y vemos que nos pide que pasemos un parámetro, por lo que ponemos el parámetro 131333 tal y como nos lo indican en la última flag encontrada y obtenemos la siguiente flag.

_config.yml

FLAG{And Awwwaaaaayyyy we Go!} 80/130 puntos

En esta pista, el mensaje nos indica que para obtener la contraseña del usuario Rick tenemos que generar un diccionario con las siguientes caracteristicas:
- 1 letra mayuscula
- 1 número
- una palabra del nombre de la vieja banda de Rick

Buscamos el nombre de la antigua banda de Rick y vemos que el nombre es The Flesh Curtains

_config.yml

por lo que elaboramos un pequeño script que cumpla todas las condiciones que tiene que tener la contraseña:

#! /usr/bin/env python  
upercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ"  
numbers = "0123456789"  
old_band=["The","Flesh","Curtains"]  
with open("passwords.txt",'a') as f:  
    for uper in upercase:  
        for number in numbers:  
            for one in old_band:  
                password = uper + number + one  
                f.write(password + "\n")  

Con el diccionario generado,ahora lo único que queda es realizar fuerza bruta contra el servicio ssh con el usuario RickSanchez.Para ello utilizamos la tool patator y ejecutamos el siguiente comando:

python patator.py ssh_login host=172.16.199.128 user=RickSanchez port=22222 password=FILE0 0=passwords.txt -x ignore:mesg=’Authentication failed.’

Trás un rato la herramienta encuentra una contraseña valida (P7Curtains)

_config.yml

Nos logueamos en el servicio ssh con el usuario RickSanchez y la contraseña encontrada mediante la fuerza bruta. Miramos dentro de la carpeta home del usuario RickSanchez y vemos que hay una carpeta con nombre “ThisDoesntContainAnyFlag” pero entramos por si acaso y efectivamente…ahí no hay ninguna flag.

_config.yml

Seguimos con la pista que nos habían proporcionado para generar el diccionario de contraseñas y recordamos la siguiente parte “also sudo is wheely good”, por lo que ejecutamos “sudo -su root” y ponemos la misma contraseña que hemos utilizado para loguearnos en el ssh.

Ya somos usuario root. :D

Trás ello, mostramos la flag que se encuentra dentro de la carpeta root

_config.yml

FLAG{Ionic Defibrillator} 30 puntos 110/130 puntos

Nos quedan 20 puntos, que los conseguimos accediendo a los servicios que están en el puerto 60000.

_config.yml

FLAG{Flip the pickle Morty!} 10 puntos 110/120 puntos.

Y al puerto 13337 consiguiendo así los últimos 10 puntos que nos faltan.

_config.yml

FLAG{TheFoundMyBackdoorMorty} 10 puntos 130/130 puntos.


← Vulnhub VulnerableDocker Easy mode