# DockerLabs Vulnvault

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 2 archivos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689365588/b482688b-dacd-419c-9c48-540772476739.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/v1724689371191/377b9495-3a48-4303-8408-a6e1aa000727.png align="center")

Realizamos el escaneo de la dirección IP y podemos observar que tenemos dos puertos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689378219/d22152e9-9963-4790-8ee7-1c994efb9ced.png align="center")

Ingresamos al navegador y podemos observar la siguiente página.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689414841/2689a68b-6331-480f-9e69-ba39b920e1a0.png align="center")

La parte que llama nuestra atención es la de `subir archivos` así que nos dirigimos y podemos observar que podemos subir archivos y no indica alguna restricción.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689427410/cb9596cf-bcb6-414e-97a4-bcf603739586.png align="center")

Realizamos un fuzzing de directorios para observar si encontramos alguna carpeta donde se suban los archivos, pero no observamos nada así, pero sí una carpeta `old`, y dos archivos `upload` con diferente extensión.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689457013/c49df93d-3ecb-45b8-bf43-0a98ac18f7f5.png align="center")

El archivo `upload.html` corresponde al que observamos primero, el segundo al abrirlo notamos lo siguiente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689478849/1360c222-8b3c-458e-8726-5e51f1773043.png align="center")

Ya que podemos subir archivos, probaremos subiendo una revershell, esta la podemos obtener de la página de [Pentestmonkey](https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet).

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689511173/12d5c5aa-9b6d-43c0-884c-41ea44b7c619.png align="center")

Luego de subirlo tenemos una notificación, pero no nos indica donde se subió, pero eso no es problema.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689516302/d1e5a6fd-83fc-4f4e-b2a3-8254c1217d30.png align="center")

Vamos a la página `upload.php`, pero notamos que no nos indica que subió algún archivo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689530602/2d12a616-7d72-478a-b03c-c8eed2ce4a2b.png align="center")

Probaremos subiendo un TXT, pero este lo interceptaremos para ver si hay algún error.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689546224/74a6bdc6-4c4d-4d71-9388-c1dcb21f67a8.png align="center")

Luego de recibir la intercepción con burpsuite lo enviamos por a `repeater`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689570457/05ebd3d9-df7c-4609-ba63-65737b225107.png align="center")

En repeater le damos a `send` y podemos observar que en `response` nos indica que tuvo un error al subir el archivo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689578570/e6db1e8e-9378-4b77-9717-65d26776210a.png align="center")

Así que podemos ver que no es por ese lado probaremos con la sección de generar reportes.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689598266/b87fb1eb-43b8-4a67-a095-9fda0b8c88db.png align="center")

Probando diferentes maneras de escapar los comandos podemos observar que esto ocurre cuando insertamos `;` y luego un comando, es válido en cualquiera de los campos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689610565/ee03e2ba-5911-4aba-81bb-b2aaa316b657.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689623064/9de73feb-a388-48ee-a52d-64f1b2e462cb.png align="center")

Listamos los archivos que hay en el directorio y podemos observar lo siguiente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689630432/d0ddb26b-c7f9-4acd-bd3c-8e1e84f676f1.png align="center")

Ya que podemos realizar acciones básicas, leeremos el archivo de `/etc/passwd`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689639590/38f3c08d-fe17-4c57-8af2-db1562191102.png align="center")

Podemos observar que tenemos solo al usuario `samara`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689651226/fe40846a-2102-4993-b7ba-e0ed645fb7ec.png align="center")

Tratamos de hacer fuerza bruta al usuario, pero no podemos acceder.

Intentamos listar los archivos de `samara` y podemos observar que podemos ver el contenido de la carpeta de `samara`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689658827/e716b1c9-940e-4523-8b6f-ecb377559f6b.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689675467/1394e22a-4e2e-4810-a028-95c8c396710f.png align="center")

Tratamos de leer ambos archivos, pero no podemos leerlo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689682264/3ec6489c-e5fb-4100-9ea8-b80bea0d33f0.png align="center")

Notamos que tiene la carpeta `.ssh` y la listamos y podemos observar el `id_rsa`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689691389/3fa0d3f3-b080-4cc3-813a-59f02e498445.png align="center")

Abrimos el `id_rsa` y luego lo copiamos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689704404/d80faf30-6023-4a14-9796-998034c7169b.png align="center")

Creamos el archivo, damos permisos, luego ejecutamos y podemos observar que ingresamos como `samara`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689710916/05c6a166-b536-464b-aaf5-259552f5e969.png align="center")

Revisamos permisos SUID y las capabilities y podemos observar que no tenemos nada que nos pueda ser útil.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689726503/73a9ceb8-102d-4fa3-a9e1-c7125bf81601.png align="center")

Usaremos `pspy64` para ver si tenemos algún archivo que nos pueda ser útil. Copiamos el archivo en nuestro directorio actual e indicamos nuestro servidor en Python.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689730771/c9a4f1be-8a31-4506-a925-a9a02de97135.png align="center")

Descargamos el archivo en la carpeta `tmp`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689748453/b57b8ac7-6171-4af2-bfee-8334f7373beb.png align="center")

Damos permisos de ejecución y luego ejecutamos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689753714/75e85ce9-e261-4cfe-a939-9e58d1ab0f4e.png align="center")

Revisando los archivos podemos observar que se está ejecutando constantemente el archivo [`echo.sh`](http://echo.sh).

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689768851/c215fcc1-be22-4c60-8ba9-62922cc92892.png align="center")

Vamos al directorio y podemos observar que este script generaba el archivo que vimos en el directorio de `samara`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689788382/48d39e6c-346c-4238-9e9c-9c704f402e23.png align="center")

Editamos el archivo y agregamos un comando que le dé permisos suid a bash.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689802405/db4eed54-a449-4ba8-841c-a7f6e0e7aeb8.png align="center")

Como se está ejecutando con frecuencia esperamos un momento e ingresamos el comando `bash -p` y podemos observar que ya somos `root`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724689813753/6fbc6f7e-1bf7-4c8c-9d18-61a9c20c682d.png align="center")
