Lo-Fi
Created by 0xnotkyo

tryhackme.com - © TRYHACKME

Introducción
Lo-Fi es una máquina de TryHackMe donde aloja un sitio web en el puerto 80 (http). En este sitio, explotamos un parámetro vulnerable en una página PHP para obtener LFI en la máquina host y lo usamos para leer la flag.
Reconocimiento con NMAP
Ejecutaremos la instrucción básica de reconocimiento con los parámetros que se explican a continuación:
-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 es rápido y a la vez sigiloso ya que no termina de establecer la conexión y puede pasar desapercibido en los logs de conexión
--min-rate 5000
Acelera el proceso de escaneo 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.
El resultado del comando ejecutado sería el siguiente:

Podemos ver que tenemos dos puertos abiertos: http (80) y ssh (22).
Puerto 22 = ssh→ Protocolo de red que proporciona una conexión segura para acceder y gestionar servidores remotos.
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.
SSH no suele ser vulnerable a menos que tengamos credenciales verificadas, así que vamos a centrarnos en HTTP.
HTTP

Al visitar el sitio web, podemos ver que es un sitio con páginas para varios géneros musicales. Vamos a echar un vistazo al código fuente.

Nos encontramos con el parámetro ?page=, que controla todo el contenido incluido.
El parámetro ?page= es un punto crítico que, generalmente se puede explotar mediante SSRF (Server-Side-Request Forgery) o LFI (Local File Inclusion). Vamos a intentar usar LFI porque el nombre de la máquina es Lo-Fi, por lo que puede sugerir que se trata de LFI.


Como podemos ver, al usar la barra de búsqueda, solo añade ?search= a los parámetros de la página y no tiene una funcionalidad real. Esto hace que agrege un nuevo parámetro a nuestra URL.
Intrusión

Al intentar acceder directamente a /etc/passwd en la URL, el servidor nos devuelve un mensaje de error bastante peculiar. Esto nos confirma dos cosas:
El parámetro es sensible a lo que escribimos
Existe un filtro o WAF básico que impide el acceso a rutas absolutas, intentando bloquear ataques de LFI
Para evadir esto, utilizamos la técnica de Path Traversal (salto de directorios). Usamos la secuencia ../../../../ para "subir" niveles en el árbol de directorios hasta llegar a la raíz y luego entrar en etc/passwd.

Como podemos ver, el servidor nos devuelve el contenido del archivo, confirmando la vulnerabilidad LFI.
Vamos a probar el clásico intento de adivinar el archivo flag.txt directamente en la raíz del sistema.

El servidor nos devuelve la flag, confirmando que nuestra teoría era correcta.
Como podemos ver, ¡hemos capturado la bandera para esta máquina!

~Happy Hacking
Última actualización