Reverse DockerLabs (intermediate)
Instalación
Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzip reverse.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_deploy.sh reverse.tarInfo:
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
___ ____ ____ _ _ ____ ____ _ ____ ___ ____
| \ | | | |_/ |___ |__/ | |__| |__] [__
|__/ |__| |___ | \_ |___ | \ |___ | | |__] ___]
Estamos desplegando la máquina vulnerable, espere un momento.
Máquina desplegada, su dirección IP es --> 172.17.0.2
Presiona Ctrl+C cuando termines con la máquina para eliminarlaPor lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Si entramos en la pagina vemos una bienvenida normal y corriente, pero si inspeccionamos la pagina y vamos al javascript veremos lo siguiente:
Basicamente cuando nosotros hacemos click muchas veces exactamente 20 nos aparece una alerta con el mensaje secret_dir:

Si nosotros metemos en la URL lo siguiente:
veremos un archivo llamado secret, si nos lo descargamos y vemos que tipo de archivo es:
Info:
Vemos que es una aplicacion .elf que si la ejecutamos vemos lo siguiente:
Info:
Vemos que esta procesando algo, si intentamos desbordar el buffer no lo conseguiremos, por lo que tendremos que probar otra cosa.
Ingenieria inversa
Vamos a utilizar Ghidra para decompilar el binario y ver si podemos encontrar la contraseña.
Esto nos abrira el programa, cargaremos el binario que queremos analizar, una vez cargado, veremos el codigo, de primeras veremos el main que contiene lo principal del codigo:
Aqui vemos una funcion interesante llamada containsRequiredChars que es la que verifica si la contraseña que hemos introducido es correcta o no.
Por lo que vamos a buscar el codigo de la funcion en el buscador donde pone filter de la parte izquierda del programa:

Seleccionando la funcion podremos ver en C en la parte de la izquierda el programa de esta funcion que seria el siguiente:
Por lo que vemos estamos viendo la contraseña en texto plano en varias partes de comparacion del programa, por lo que si las juntamos, veremos lo siguiente:
Probaremos esa contraseña en el programa.
Info:
Vemos que lo hemos conseguido y a cambio nos proporciona una cadena en base64, que se veria de la siguiente forma decodificado:
Parece ser un subdominio junto a un dominio, por lo que vamos a ingresarlo en nuestro archivo hosts, y posteriormente entrar a ver que nos encontramos.
Lo guardamos y pondremos lo siguiente en la URL:
Veremos algo tal que esto:

Local File Inclusion (LFI)
Si nos metemos en el siguiente link llamado experimentos interactivos veremos una URL asi:
Por lo que probaremos a poner /etc/passwd ya que tiene pinta de que puede ser vulnerable.
Info:
Vemos que funciona un LFI, por lo que vamos a probar a realizar un LOG POISONING, primero veremos si podemos entrar en los logs:
LOG POISONING
Info:
Veremos que si podemos entrar, por lo que probaremos a poner un whoami a ver si funciona:
Ahora si recargamos la pagina, veremos lo sisguiente:
Vemos que se nos esta ejecutando, por lo que nos haremos una reverse shell de la siguiente forma:
shell.sh
Creamos ese archivo y abriremos un servidor de python3 para pasarnos el archivo.
Por lo que pondremos lo siguiente:
Y cuando recarguemos la pagina es cuando se va a ejecutar el comando, por lo que la recargamos y si vamos al server de python3 vemos que ha funcionado por que veremos lo siguiente:
Vemos que lo ha pillado, ahora le pondremos permisos de ejecuccion de la siguiente forma:
Ahora lo ejecutaremos, pero antes nos pondremos a la escucha:
Y ponemos lo siguiente:
Recargamos la pagina y si vamos a donde tenemos la escucha, veremos lo siguiente:
Por lo que vemos ha funcionado, ahora sanitizaremos la TTY.
Escalate user nova
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el script password_nova como el usuario nova, si lo ejecutamos veremos lo siguiente:
Info:
Vamos a crearnos un script en bash que nos automatice esta tarea y pasarnos el rockyou a la maquina victima con wget.
brute.sh
Ahora nos pasaremos el rockyou.txt:
Y en la maquina victima ponemos lo siguiente:
Con esto ya podremos ejecutar el script:
Info:
Despues de un rato habremos encontrado la contraseña que seria BlueSky_42!NeonPineapple.
Por lo que haremos lo siguiente:
Metemos como contraseña BlueSky_42!NeonPineapple y seremos dicho usuario.
Escalate user maci
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar /lib64/ld-linux-x86-64.so.2 como el usuario maci, por lo que haremos lo siguiente:
Vamos a crear un archivo que sera el siguiente:
malicious_binary.c
Y ahora vamos a compilarlo:
Hecho todo esto anterior, lo ejecutaremos de la siguiente forma bajo el usuario maci:
Y con esto ya seremos dicho usuario.
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario clush bajo el usuario root, por lo que haremos lo siguiente:
Investigando mucho en internet vemos la siguiente pagina:
URL = ClusterShell
Y en un apartado de la pagina pone lo siguiente:
Por lo que vamos a probar entrando en una shell interactiva y ejecutando los comandos con una ! delante, tal y como pone en el ejemplo:
Info:
Vemos que funciona, por lo que haremos lo siguiente:
Y ahora nos saldremos con quit, comprobaremos que ciertamente estan puestos los permisos SUID en las bash:
Info:
Por lo que vemos a funcionado, haremos lo siguiente:
Y con esto ya seremos root, por lo que ya la habremos termiando.
Last updated