Whoiam DockerLabs (Easy)

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

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

bash auto_deploy.sh whoiam.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 una pagina vemos algo normal, por lo que vamos a realizar un poco de fuzzing.

Info:

Vemos que hay un wordpress, por lo que vamos a utilizar una herramienta llamada wpscan.

wpscan

Info:

Vemos que hay un plugin llamado modern-events-calendar-lite, por lo que vamos a ver si tuviera algun exploit asociado.

Vemos que hay un exploit, pero tendremos que tener las credenciales de worpress para ello:

URL = Exploit GitHub

Si realizamos un poco mas de fuzzing.

Gobuster

Info:

Vemos que encontramos un directorio llamado /backups que contiene lo siguiente:

Escalate user www-data

Nos lo descargamos y lo descomprimimos:

Y veremos el siguiente archivo:

Info:

Por lo que vemos ya tendremos las credenciales, por lo que con el exploit que encontramos anteriromente lo utilizaremos de la siguiente forma:

Info:

Y vemos que nos creo un shell.php en la siguiente ruta.

Si entramos a ella veremos lo siguiente:

Vemos que tendremos una shell interactiva, por lo que haremos lo siguiente.

Escalate user rafa

Vamos a enviarnos una shell.

Antes de enviarlo nos pondremos a la escucha:

Lo ejecutamos el codigo anterior y si volvemos a donde tenemos la escucha, veremos lo siguiente:

Sanitización de shell (TTY)

Si hacemos sudo -l veremos lo siguiente:

Vemos que podremos ejecutar el binario find como el usuario rafa, por lo que haremos lo siguiente:

Con esto seremos el usuario rafa.

Escalate user ruben

Si hacemos sudo -l veremos lo siguiente:

Vemos que podemos ejecutar el binario debugfs como el usuario ruben, por lo que haremos lo siguiente:

Y con esto ya seremos dicho usuario.

Escalate Privileges

Si hacemos sudo -l veremos lo siguiente:

Veremos que podremos ejecutar el binario bash junto al script llamado penguin.sh como el usuario root, por lo que haremos lo siguiente:

Si leemos el script, veremos lo siguiente:

Por lo que vemos si ponemos el numero 42 nos da la frase correcta, por lo que podremos aprovechar esto para hacer lo siguiente:

Metemos este codigo:

Explicacion:

  • prueba[ ... ]+42 → Se ve como un intento de asignación de un array en Bash. Pero lo importante es lo que está dentro del [ ... ].

  • $(chmod u+s /bin/bash >&2)

    • La expresión $() ejecuta el comando dentro de ella en un subproceso.

    • chmod u+s /bin/bash da permisos SUID a /bin/bash, lo que significa que cualquier usuario que ejecute /bin/bash tendrá privilegios de root.

    • >&2 redirige la salida estándar a stderr, aunque en este caso no es esencial.

  • prueba[ ... ]+42

    • Bash ejecuta primero el contenido de $() antes de asignarlo a una variable.

    • Al ejecutar chmod u+s /bin/bash, la bash del sistema ahora tiene permisos de root.

    • Luego, read asigna lo que queda (prueba[ ]+42), pero el daño ya está hecho.

¿Por qué funciona si el script se ejecuta como root?

  • Si este script es ejecutado por root, cualquier comando dentro de $() también se ejecuta con privilegios de root.

  • chmod u+s /bin/bash solo puede ser ejecutado por root, pero en este caso, el usuario aprovecha el script que ya está corriendo como root para que lo haga por él.

  • Después de la ejecución, /bin/bash se convierte en un binario SUID, lo que significa que cualquier usuario puede abrir una sesión Bash con privilegios de root

Info:

Y con esto vamos a comprobar que se haya aplicado correctamente.

Info:

Vemos que ha funcionado estableciendo los permisos SUID a la bash, por lo que haremos lo siguiente:

Info:

Y con esto veremos que seremos el usuario root, por lo que habremos termiando la maquina.

Last updated