Creative
Last updated
Last updated
Vamos a comenzar lanzando un nmap:
Y vemos como tenemos abierto el ssh y http con un nginx 1.18.0
Luego lanzamos varias enumeraciones con gobuster , owasp zap , etc pero no encontro nada
Lo siguiente que lanzamos sera un ffuf para ver si hay subdominios:
ffuf -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt -u http://creative.thm/ -H "Host:FUZZ.creative.thm" -fw 6
Y encotramos un subdominio llamado beta :
Parece que tenemos una pagina que te dice si un dominio esta muerto o video , vamos a comenzar haciendo command injection:
Y vemos que no funciona asi que vamos a hacer ssrf. Para ello primero nos descargaremos el fuzzer ssrfmap:
Una vez descargado vamos a capturar una peticion como el file///etc/passwd de antes con la burpsuite:
Lo guardamos a un archivo request.txt , y ahora ya si una vez tenemos la peticion vamos a usar ssrfmap para fuzzear en busca de vulnerabilidades , para ello vamos a utilizar el modulo portscan:
python ssrfmap.py -r ../requestfinal.txt -p url -m portscan
Y vemos como el puerto 1337 lo tiene abierto.
Otra forma de encontrar este puerto seria con el ffuf , para ello primero debemos crear un archivo con todos los puertos :
Y luego lanzar el ffuf:
ffuf -w ports.txt -u http://beta.creative.thm/ -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "url=http://127.0.0.1:FUZZ" -fw 3
Una vez tenemos el puerto vamos a pedirle en la web anterior:
Y parece que tenemos el directorio root.Tras hacer un poco de enumeracion en home tenemos el usuario saad con la flag de user:
Ahora vamos a por la flag de root. Para ello vamos a volver al usuario saad del que sacamos la flag:
Y vemos como tenemos el directorio oculto del ssh:
Y vemos como tenemos la clave privada id_rsa , vamos a seleccionarla y guardarla:
Pero vemos que nos esta pidiendo una contraseña , asi que vamos a pasar el archivo al john y vamos a romperla:
Y una vez tenemos la contraseña vamos a acceder:
Una vez accedemos intentamos tirar un sudo -l pero nos pide contraseña , vamos a mirar el historial del terminal a ver si vemos algo:
Y vemos la pass del usuario. asi que con ella vamos a lanzar de nuevo el sudo -l :
Y aunque tiene el ping para ejecutarse como root , no nos vale por si mismo , para conseguir root debemos hacer uso de otra variable :
Esta variable de entorno carga librerias antes e ejecutar el programa en este caso el ping , y mediante este enlace podemos ver formas de escalar privilegios a traves de esta variable:
Asi que primero nos creamos el siguiente archivo:
#include <stdio.h> #include <sys/types.h> #include <stdlib.h> void _init() { unsetenv("LD_PRELOAD"); setgid(0); setuid(0); system("/bin/sh"); }
Lo primero que hacemos es irnos al directorio /tmp y alli creamos un archivo llamado shell.c con el contenido anterior. Luego lo compilamos de la siguiente forma:
Y por ultimo cargamos la variable con el archivo generado al compilar y llamando al proceso ping que es el que tiene permiso de root: