Inicio Redeemer - Starting Point
Entrada
Cancelar

Redeemer - Starting Point

Introducción

Redeemer es la cuarta de las máquinas de Starting Point en HackTheBox. Es una máquina Linux en la que está corriendo el servicio de Redis el cual tendremos que comprometer para llegar a obtener la flag. Además, durante la explotación de la máquina tendremos que ir respondiendo a preguntas que ayudarán en el camino hasta la consecución. En este caso son 10 las preguntas a responder.

Sistema-Linux-orange Dificultad-VeryEasy-brightgreen

Resolución

Conexión al VPN de HTB

Comenzamos estableciendo conexión por VPN con la plataforma HackTheBox. Una vez tengamos IP asignada de la VPN de HTB procedemos a ir a la web de Starting Point para iniciar la máquina Redeemer. Puede trascurrir hasta 2 minutos en reconocer la web que estamos conectados por VPN, llegando en ocasiones a tener que refrescar la página F5

Si tienes dudas sobre conectar con la VPN de HackTheBox te lo explico aquí

Iniciar la máquina

Iniciamos la máquina pulsando sobre el botón

Botón Spawn Machine

Tras unos cuantos segundos (en ocasiones puede tardar más) se habrá iniciado correctamente la máquina y nos mostrará la dirección ip de la máquina víctima. En nuestro caso será 10.129.61.206

Settarget

Haciendo uso de la herramienta previamente establecida en la ZSHRC llamada ‘settarget’ dejaremos anotada la IP y nombre de la máquina víctima en la parte superior de la Polybar para tener así mayor eficacia. La sintaxis es: settarget (IP_VICTIMA) (NOMBRE_MAQUINA_VICTIMA)

1
settarget 10.129.61.206 Redeemer

settarget

De esta manera en la Polybar superior tendremos siempre bien referenciada la máquina víctima

Ping

Comprobamos que efectivamente tenemos visible la máquina víctima lanzando un pingsobre ella. Con el parámetro -c 1 le indicamos que tan solo haga un ping. No es necesario más.

1
ping -c 1 10.129.61.206

Como resultado obtenemos lo siguiente de lo cual destacatemos el TTL y el número de paquetes enviados / recibidos:

Ping

  • TTL = 63
    Este valor (cercano a 64) indica que nos encontramos ante una máquina Linux

Por defecto valores de TTL en torno a 64 indica que la máquina es Linux mientras que valores de 128 indicaría que la máquina es Windows

  • 1 packets transmitted, 1 received
    Indica que el paquete enviado ha sido recibido con éxito por lo tanto => La máquina víctima está encendida y tenemos conexión con ella

Reconocimiento con NMAP (PortDiscovery)

NMAP es una herramienta ampliamente extendida en el reconocimiento de redes así como en el escaneo de puertos, hosts y servicios

Ejecutaremos la instrucción básica de reconocimiento con los parámetros que se explican a continuación:

1
nmap -p- -sS --min-rate 5000 -n -Pn -vvv --open 10.129.61.206 -oG allPorts
  • -p-
    Indicamos que queremos analizar el rango completo de puertos. Del 1 al 65535
  • -sS
    Especificación del tipo de escaneo. En este caso SYN Scan que es rápido a la vez que sigiloso ya que no termina de establecer la conexión y de tal manera puede pasar desapercibido en los logs de conexión
  • --min-rate 5000
    Acelera el proceso de escane ya que no tramita paquetes cuya velocidad sea inferior a 5000 paquetes por segundo. Esto puede hacer menos sigiloso el escaneo pero más rápido
  • -n
    Indica que no queremos aplicar resolución DNS. Más velocidad de escaneo
  • -Pn
    Escaneo de puertos incluso si el host no responde a los ping. Ignora si el host está o no online
  • -vvv
    Triple verbose para que los resultados que vaya obteniendo los vaya mostrando por pantalla sin necesidad de acabar el escaneo
  • --open
    Un puerto principalmente puede estar Abierto, Cerrado o Filtrado. En un principio nos centraremos en aquellos que están Abiertos
  • -oG allPorts
    Salida del resultado en un fichero llamado allPorts en formato ‘grepable’ lo cual aportará ventajas a la hora de tratarlo posteriormente

El resultado del comando ejecutado sería el siguiente:

NMAP sS

Observamos que tiene unicamente un puerto abierto, se trata del puerto 6379. Una rápida búsqueda en Google nos da la pista de que, por defecto, dicho puerto suele correr un servicio llamado Redis

  • Puerto 6379 => Redis
    El servicio Redis es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes pero que opcionalmente puede ser usada como una base de datos durable y persistente.

Redis se considera una base de datos en memoria

Puertos abiertos (versiones)

Sobre aquellos puertos abiertos en la máquina víctima lanzaremos un comando de NMAP enfocado al descubrimiento de versiones de los servicios que estén corriendo sobre los puertos abiertos

1
nmap -sCV -p6379 10.129.61.206 -oN targeted
  • -sCV (también se puede poner como -sC -sV)
    Realiza un escaneo en busca de versiones y comparando con una base de datos de servicios conocidos
  • -p6379
    Indica que se analizará en esta caso únicamente el puerto 6379
  • -oN targeted
    Salida del resultado en un fichero llamado targeted en formato normal de NMAP

El resultado del comando ejecutado sería el siguiente:

NMAP sCV

Este escaneo ha aportado información sustanciosa para la consecución de la máquina:

  • Redis key-value store 5.0.7
    Esta sería la versión de Redis de la máquina víctima. Lo tendremos en cuenta más adelante tanto para la resolución de las preguntas como en la búsqueda de posibles vulnerabilidades.

Tasks (1/2)

Estas Tasks hacen las funciones de mini-flags y ayudan guiando la resolución de la máquina

  1. Which TCP port is open on the machine?
    Lo sabemos gracias al escaneo por NMAP: 6379
  2. Which service is running on the port that is open on the machine?
    La respuesta sería: Redis
  3. What type of database is Redis? Choose from the following options: (i) In-memory Database, (ii) Traditional Database
    Opción I => In-memory Database
  4. Which command-line utility is used to interact with the Redis server? Enter the program name you would enter into the terminal without any arguments.
    En una búsqueda rápida en Google podemos averiguarlo sin mayor dificultad. La respuesta es: redis-cli
  5. Which flag is used with the Redis command-line utility to specify the hostname?
    La respuesta es: -h
  6. Once connected to a Redis server, which command is used to obtain the information and statistics about the Redis server?
    El nombre del comando es: info
  7. What is the version of the Redis server being used on the target machine?
    En el escaneo de versiones de NMAP ya lo vimos: 5.0.7

Intrusión

Sabiendo que la máquina víctima tiene el servicio Redis trataremos de conectarnos a él. Para ello ejecutaremos:

1
redis-cli -h 10.129.61.206

y con eso ya estaríamos conectados.

Haciendo uso del comando SELECT seguido de un número entre el 0 y el 15 (por defecto) seleccionaremos una base de datos.

De cada base de datos seleccionada ejecutaremos DBSIZE para así conocer cual tiene contenido de cara a entrar al detalle de cada una:

Redis Connected

Podríamos haber hecho un análisis más minucioso pero para el caso ya valdría para comprobar que la base de datos que tiene contenido es la 0 y sobre la que intensificaremos las indagaciones.

Ahora con el comando keys * listamos todas las keys (claves) disponibles.

Aparece una key que despierta el interés llamada flag y podemos traerla mediante el comando GET flag

Redis Flag

Tasks (2/2)

Ya que hemos obtenido la flag terminamos las Tasks

  1. Which command is used to select the desired database in Redis?
    SELECT
  2. How many keys are present inside the database with index 0?
    Se ve en la captura: 4
  3. Which command is used to obtain all the keys in a database?
    La respuesta sería: keys *

Flag

Root Flag

Esta entrada está licenciada bajo CC BY 4.0 por el autor.