Inicio Sequel - Starting Point
Entrada
Cancelar

Sequel - Starting Point

Introducción

Avanzamos en nuestra serie de resoluciones de máquinas pertenecientes al Starting Point de HackTheBox, en este caso resolveremos Sequel. Máquina que ya el título apunta a que va a estar relacionada con SQL y bases de datos. En estas máquinas el nivel de detalle del presente write-up es mayor ya que se pretende dar un ‘paso a paso’ para principiantes más que una simple guía para un usuario algo avanzado. 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 7 las preguntas a responder. y éstas se añadirán al final del write-up.

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 Sequel. 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.59.23

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.59.23 Sequel

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.59.23

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.59.23 -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 3306.

  • Puerto 3306 => MySQL
    Por defecto por este puerto funciona MySQL que es un sistema de festión de bases de datos relacional desarrollado bajo licencia dual: Licencia pública general y licencia por parte de Oracle y es la base de datos de código abierto más popular en el mundo.

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.

En este caso, si aplicamos el habitual comando nmap con el parámetro -sCV no progresa el escaneo por lo que para esta máquina optaremos por no aplicar reconocimiento de la versión. Es decir, solo usaremos -sC

NMAP sCV

1
nmap -sC -p3306 10.129.59.23 -oN targeted
  • -sC
    Realiza un escaneo con los principales scripts de reconocimiento de nmap
  • -p3306
    Indica que se analizará en esta caso únicamente el puerto 3306
  • -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 sC

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

  • Versión: 5.5.5-10.3.27-MariaDB-0+deb10u1
    Esta es la versión de la base de datos corriendo en 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.

Para poder interactuar con la base de datos de la máquina víctima tendremos que tener instalado mysql o mariadb. en caso de no tenerlo instalado podremos hacerlo ejecutando: sudo apt update && sudo apt install mysql*. Una vez instalado comprobaremos que está operativo mirando la ayuda con un mysql --help mysql_help

Conexión a la base de datos y exploración

Para conectarnos a la base de datos usaremos el parámetro -h seguido de la ip de la máquina víctima y el parámetro -u seguido de root con el objetivo de conectarnos como usuario privilegiado en la base de datos y sin proporcionar contraseña.

connected

  • Estamos conectados. Operamos a partir de ahora dentro de MySQL a través de parámetros.

Es importante no olvidar el símbolo ; al final de todas las queries SQL que ejecutemos

  • Listamos las bases de datos disponibles en el servidor usando SHOW DATABASES;

databases

  • De entre todas las disponibles nos llama la atención la que se llama htb por lo que nos conectaremos haciendo uso del comando: USE htb;

use_htb

  • Listamos las tablas disponibles en htb con: SHOW tables; y observamos una tabla users que nos llama la atención

  • Listamos el contenido de users con: SELECT * FROM users; y tenemos una lista de nombres de usuarios y su email. en principio ni rastro de la flag

  • Listamos ahora el contenido de la otra tabla, la config con: SELECT * FROM config y ahí tenemos la flag

flag

Flag

Root Flag

Tasks

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

  1. During our scan, which port do we find serving MySQL?
    3306
  2. What community-developed MySQL version is the target running?
    MariaDB
  3. When using the MySQL command line client, what switch do we need to use in order to specify a login username?
    -u
  4. Which username allows us to log into this MariaDB instance without providing a password?
    root
  5. In SQL, what symbol can we use to specify within the query that we want to display everything inside a table?
    *
  6. In SQL, what symbol do we need to end each query with?
    ;
  7. There are three databases in this MySQL instance that are common across all MySQL instances. What is the name of the fourth that’s unique to this host?
    htb
Esta entrada está licenciada bajo CC BY 4.0 por el autor.