Titulo: TryHackMe - Road |
Fecha: 29-11-2021 |
Descripcion: Enumeracion - HTTP - Burp Suite - MongoDB |
TryHackMe - Road Writeup
## Ping:
ping -c1 10.10.235.69
Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos
Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.
## Enumeracion :
Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:
Mediante el parametro --min-rate 5000 va a emitir paquetes no mas lento que 5000 paquetes por segundo
Ahora vamos aplicar una enumeracion de puertos mas exhaustiva , aplicando scripts basicos para determinar la version y servicio que corren en los puertos activos.
Mediante la herramienta WhatWeb vamos a inspeccionar un poco mas el servicio HTTP en busca de algun CMS o alguna redireccion
No vemos gran cosa , por lo que vamos abrir la pagina web y proceder a inspeccionarla
## Enumeracion Web:
Como no encontramos nada interesante vamos a tirar de la tecnica Fuzzing , para buscar directorios web aplicando fuerza bruta mediante la herramienta Wfuzz
Nos va a reportar un directorio llamado /v2 , el cual contiene un panel de autentificacion , actualmente no disponemos de credenciales validas, pero podemos registrarnos
Por lo que vamos a registrarnos en el sistema con unas credenciales inventadas
En los primeros intentos la maquina al ser reciente contaba con un error en la parte de backend cuando se conectaba a la base de datos para registrar el usuario
Tras esperarme un dia ya funcionaba el servicio y tenemos acceso al panel mediante las credenciales registradas anteriormente
Tras un rato investigando el panel , nos encontramos ante un apartado de Perfil , donde encontramos el correo del administrador del sistema
Podemos pensar en realizar un secuestro del correo , tenemos un apartado para cambiar la contraseña del usuario registrado teniendo la contraseña anterior , podemos intentar poner mi usuario y mis credenciales y capturar la peticion mediante Burp Suite y cambiar mi usuario por el de administrador
Asi podremos cambiar la contraseña del usuario Administrador y tendremos acceso a la parte de subir ficheros
Por lo que vamos a realizar el ataque
Activamos nuestro proxy para nuestro Burp Suite actue de intermediario entre el Cliente y el Servidor
Podemos ver que tenemos el campo del correo nuestro , el que vamos a cambiar por el correo del administrador
Ahora ya solo nos queda enviar la peticion y ingresar con las credenciales que hemos cambiado al usuario Administrador
Ahora vamos a crear una shell reversa en php y la vamos a proceder a subir mediante el campo que tenemos en el apartado Perfil
Si capturamos esa peticion de subida mediante Burp Suite vamos a ver que se sube al directorio web /v2/profileimages
Tiene deshabilitado la opcion de listado de contenido , por lo que tenemos que poner el fichero en cuestion en este caso reverse.php y ponernos a la escucha mediante NetCat por el puerto configurado en la shell reversa
## Escalada de Privilegios:
Actualmente tenemos una shell como el usuario www-data , y tenemos que conseguir una shell como el usuario Root para obtener el flag
Si nos vamos al directorio del usuario vamos a poder listar el flag de user.txt
Mediante la enumeracion del sistema en busqueda de algun proceso que nos ayude a escalar privilegios , nos encontramos con el proceso de ejecucion de MongoDB
Si entramos dentro del cliente de MongoDB , vamos a ver que tipo de contenido tiene y nos reporta 4 tablas interesantes que iremos enumerando la informacion que contienen
Y en la tabla User contiene un campo con credenciales del usuario "Developer" usuario del sistema
Realizamos un pivoting de Usuario mediante el servicio SSH que teniamos abierto , y ahora ya como el usuario Developer tenemos la ejecucion de un proceso como Root que se puede explotar llamado LD_Reload
Crearemos una shell en C:
#include
#include
#include
void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/sh");
}
Ahora procedemos a compilar el fichero y ejecutarlo y ya tendremos una shell como Root
gcc -fPIC -shared -o shell.so shell.c -nostartfiles
sudo LD_PRELOAD=/tmp/shell.so find
Y tendriamos terminada la maquina Road , de TryhackMe con una dificultad de Media!