Appointment
Created by 0xnotkyo

hackthebox.com - © HACKTHEBOX

Os: Linux
Difficulty: Very Easy
0. Introducción
Appointment es una de las máquinas de Starting Point en HackTheBox. Es una máquina Linux que cuenta con un servicio web vulnerable, el cual tendremos que analizar y explotar para obtener la flag. Además, durante la explotación de la máquina tendremos que ir respondiendo a preguntas que tienen la función de guiar en la resolución de estas máquinas.

1. Ping
Para comenzar, hacemos ping a la dirección IP del objetivo para verificar si nuestros paquetes llegan a su destino.
Como estamos recibiendo paquetes desde el ordenador de destino, sabemos que la conexión está establecida correctamente.
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

2. Reconocimiento con NMAP
Ejecutaremos la instrucción básica de reconocimiento
Podemos ver que el puerto 80/tcp está abierto y ejecutando el servicio http.
Puerto 80 = http
→ El servicio HTTP es el encargado de servir contenido web, permitiendo la interacción del usuario con la aplicación a través de un navegador.

3. Intrusión
Como nuestro objetivo es un servidor que aloja un sitio web, podemos acceder a él desde el navegador ingresando la dirección IP del objetivo en la barra de direcciones.

Observamos que se trata de un formulario de inicio de sesión muy común que nos solicita un nombre de usuario y una contraseña, por lo que vamos a realizar fuerza bruta utilizando Gobuster, con el objetivo de descubrir rutas ocultas que puedan contener información útil para la explotación.
🔴🟡🟢
gobuster dir --url http://10.129.150.228/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -t 10 2>/dev/null
dir
Ejecuta Gobuster en modo búsqueda de directorios
-url http://10.129.150.228/
URL objetivo donde se realizará la enumeración
--wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
Lista de palabras que Gobuster usará para probar posibles rutas
-t 10
Número de hilos simultáneos para acelerar la búsqueda
2>/dev/null
Oculta mensajes de error en la salida
El resultado del comando ejecutado sería el siguiente:
Los directorios válidos identificados mediante el escaneo con Gobuster son típicos en la mayoría de los sitios web, por lo que es poco probable que contengan archivos sensibles o confidenciales. No obstante, siempre es recomendable revisarlos, ya que en ocasiones pueden alojarse archivos importantes de forma accidental.

A continuación, comenzaremos a responder las preguntas que nos indica la plataforma:
Task 1:
What does the acronym SQL stand for?
structured query language
Task 2:
What is one of the most common type of SQL vulnerabilities?
sql injection
Task 3:
What is the 2021 OWASP Top 10 classification for this vulnerability?
A03:2021-Injection (https://owasp.org/Top10/)
Task 4:
What does Nmap report as the service and version that are running on port 80 of the target?
Apache httpd 2.4.38 ((Debian))
Task 5:
What is the standard port used for the HTTPS protocol?
443
Task 6:
What is a folder called in web-application terminology?
directory
Task 7:
What is the HTTP response code is given for 'Not Found' errors?
404
Task 8:
Gobuster is one tool used to brute force directories on a webserver. What switch do we use with Gobuster to specify we're looking to discover directories, and not subdomains?What is the HTTP response code is given for 'Not Found' errors?
dir

4. Inyección SQL
Como el único punto de entrada es el formulario de inicio de sesión, nos centraremos en él. En ves de probar credenciales normales, vamos a evaluar el formulario para identificar posibles vulnerabilidades, centrándonos principalmente en la inyección SQL, que es una falla común en este tipo de formularios.
Como primer intento, ponemos admin'# en el campo de usuario. El apóstrofo (') corta la consulta SQL, ignorando lo que venga después. Entonces, si la consulta original pide usuario y contraseña, el apóstrofo elimina la parte de la contraseña.
El símbolo # comenta todo lo que sigue, así solo se revisa el usuario. Eso quiere decir que la consulta solo busca si existe el usuario admin, sin fijarse en la contraseña.
Por eso, lo que pongamos en la contraseña no importa; podemos poner cualquier cosa y aún así entrar.
En la petición enviada, el usuario se codificó así:
¡Al iniciar sesión , conseguimos acceder a la aplicación web como el usuario 'admin' sin problemas!

Ya tenemos toda la información necesaria para completar el resto de preguntas:
Task 9:
What single character can be used to comment out the rest of a line in MySQL?
#
Task 10:
If user input is not handled carefully, it could be interpreted as a comment. Use a comment to login as admin without knowing the password. What is the first word on the webpage returned?
Congratulations
Como podemos ver, ¡hemos capturado la bandera para esta máquina!
~Happy Hacking
Última actualización