DoubleTrouble DockerLabs (Hard)

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 doubletrouble.zip

Nos lo descomprimira y despues montamos la maquina de la siguiente forma.

bash auto_deploy.sh doubletrouble.tar

Info:

                            ##        .         
                      ## ## ##       ==         
                   ## ## ## ##      ===         
               /""""""""""""""""\___/ ===       
          ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
               \______ 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 eliminarla

Por 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 un panel de login, en el que si intentamos un SQL Injection se lo tragara y nos mostrara la opcion de cuando nos hemos logeado:

En esta veremos lo que parece ser un 2FA por lo que vamos a realizar fuerza bruta con un script que nos montaremos en python3 (hay que tener en cuenta que cuando se alcanza 3 intentos te lleva al login, por lo que tambien hay que controlar eso en el script):

2faBrute.py

generate2fadic.py

Primero vamos a ejecutar el generate2fadic.py para que nos genere el diccionario de nuemro:

Info:

Y una vez echo esto, ejecutaremos el siguiente script de la siguiente forma:

Info:

Vemos que el numero es el 0150 por lo que si lo ingresamos, veremos lo siguiente:

Escalate user www-data

Vamos a probar a subir un archivo con una reverse shell, pero vemos que solo nos deja los archivos .py por lo que haremos lo siguiente.

shell.py

Si subimos este archivo veremos lo siguiente en la pagina:

Por lo que vamos a ofuscarlo un poco mas con la siguiente pagina:

URL = Ofuscador de codigo Python3

Y se veria de la siguiente forma:

Antes de subirlo nos pondremos a la escucha:

Ahora si subimos el archivo y carga la pagina, cuando volvamos a la escucha veremos lo siguiente:

Sanitización de shell (TTY)

Escalate user maci

Si vemos que archivos ha creado el usuario maci:

Info:

Vemos que es un .zip pero tiene toda la pinta de que hay 500 ZIPs comprimidos, por lo que tendremos que crear un script para descomprimir todos a la vez, pero que se quede en el ultimo ZIP, por lo que cuando el script detecte que esta en el archivo0.zip que pare:

unzip.sh

Pero antes de ejecutarlo nos pasaremos el archivo a nuestro host:

Y en nuestro host haremos lo siguiente:

Ahora si ejecutaremos el script en nuestro host.

Info:

Vemos que nos pide una contraseña en el archivo0.zip por lo que vamos a intenta crackearlo de la siguiente forma:

Info:

Ahora vamos a crackeral:

Info:

Vemos que la contraseña del ZIP es 12345678 por lo que haremos lo siguiente:

Metemos como contraseña 12345678 y veremos que se descomprimio bien, viendo lo siguiente:

Info:

Info:

Por lo que vemos obtenemos las credenciales del usuario maci, por lo que nos cambiaremos a dicho ususario.

En la maquina victima pondremos lo siguiente:

Metemos como contraseña 49392923 y veremos que somos dicho usuario.

Escalate user darksblack

Si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ejecutar el binario irssi como el usuario darksblack, por lo que vamos a buscar informacion sobre dicho binario.

En la siguiente pagina vemos informacion bastante importante, se explica que se puede ejecutar un script con /run cuando se ejecuta el binario y que solo utiliza lenguaje de programacion en Perl:

URL = Info irssi

Vamos a crear el siguiente script en perl para crearnos una reverse shell:

Le ponemos permisos de ejecuccion:

Y en nuestro host nos pondremos a la escucha:

Y ahora en la maquina victima haremos lo siguiente:

Info:

Ahora si nos vamos a donde teniamos la escucha, veremos lo siguiente:

Veremos que somos dicho usuario.

Escalate user juan

Si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ejecutar los siguientes comandos como el usuario juan por lo que primero ejecutaremos el cat para visualizar el script y ver que hace:

Info:

Vemos que hay muchos numeros, pero que parece tener un patron ascii por lo que vamos a crear un script para eliminar todo lo que no sea numeros y dejarlo limpio con solo numeros.

clearAscii.sh

Vamos a ejecutarlo de la siguiente forma (Hay que copiar el contenido del shell.py y pasarnoslo a nuestro host para realizar todo esto):

Info:

Ahora leemos los numeros...

Info:

Ahora vamos a crearnos un script que nos decodifique esto a texto plano, para enternder el codigo:

decodeAscii.sh

Lo ejecutaremos de la siguiente forma:

Info:

Y si leemos el codigo decodificado:

===============================================================

NOTA:

Tambien podremos utilizar la siguiente pagina en tal caso de que no se quiera crear un script:

URL = Decode Ascii a Texto

===============================================================

Vemos que el codigo nos lo esta proporcionando en Base64 y Base32 por lo que vamos a probar a decodificarlo, creando el siguiente script de python3 super simple:

decodeBases.py

Lo utilizamos de la siguiente forma:

Info:

Vemos que el codigo de shell.py esta haciendo una reverse shell hacia un puerto e IP en concreto, por lo que tendremos que cambiar nuestra IP por la del script y escuchar en dicho puerto.

En nuestra maquina host haremos lo siguiente:

Ahora si vemos que IP tenemos:

Info:

Vemos que ahora tenemos 2 IP's, por lo que ha funcionado añadiendo la IP del script, por lo que si ahora nos ponemos a la escucha:

Y en la maquina victima ejecutamos lo siguiente:

Si nos volvemos a la escucha veremos lo siguiente:

Por lo que vemos ha funcionado y seremos el usuario juan.

Escalate Privileges

Cuando pasa un rato vemos que nos echa de la shell por lo que vamos a ponernos de nuevo a la escucha:

Y en la maquina victima ejecutamos otra vez esto:

Volviendo a la escucha, veremos que obtenemos de nuevo la shell pero esta vez rapidamente vamos a ejecutar de forma seguida lo siguiente con el usuario juan:

Pero antes de enviarlo nos pondremos a la escucha sobre dicho puerto que vamos a enviar:

Y cuando ejecutemos lo anterior si volvemos a donde estabamos escuchando, veremos que hemos obtenido una shell con el mismo usuario juan pero esta vez no nos echara.

Sanitización de shell (TTY)

Si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ejecutar el script mensajes.sh como el usuario root, por lo que haremos lo siguiente:

Si vemos donde esta ubicado el archivo, vemos que esta en nuestra home por lo que podremos eliminar el archivo y crear uno llamado de la misma forma para poner con permisos SUID la bash.

Una vez que lo hayamos eliminado, crearemos el mismo archivo con esto dentro:

Lo guardamos y le damos permisos de ejecuccion:

Una vez echo todo esto, lo ejecutaremos como el usuario root.

Ahora si listamos la bash veremos lo siguiente:

Info:

Vemos que ha funcionado por lo que haremos lo siguiente:

Y con esto ya seremos root.

Last updated