# DockerLabs Hackpenguin

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/v1722554117545/86a14fe5-8390-45ce-a7c1-3a8bb4fd93e4.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/v1722554123287/8e301b3c-9a46-47f2-9512-e3500dabd4b6.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554130029/460d94fe-a940-41ef-9845-5e60d82ac98a.png align="center")

Vamos a la página web podemos observar que solo tenemos la página default de `apache2`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554150053/b52143b7-9a9d-4b2a-8072-ebd49e56fa2b.png align="center")

Realizamos un primer escaneo y podemos observar que no tuvimos éxito debido a que no obtuvimos alguna información extra.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554157922/d8ff939b-9477-48a6-8e34-fbcbd0d186fc.png align="center")

Por ello realizamos uno más profundo y podemos observar que encontramos un archivo adicional llamado `penguin.html`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554171169/ada519df-abfa-45b4-9933-436b8dc7a873.png align="center")

Al dirigirnos a la página a simple vista parece que solo se trata de una página de prueba.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554180285/32668ad9-a871-42dd-8b0e-fa664d34f9ee.png align="center")

Revisamos el código, pero no encontramos alguna información que nos pueda ser de utilidad.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554203862/e073018d-d82a-4fa8-957e-8003b1556b03.png align="center")

Por ello descargamos la imagen para analizarla y usando `steghide` tratamos de extraer la imagen, pero no tenemos el password.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554212511/cba19182-8ead-454e-947d-d99d52216541.png align="center")

Para este paso haremos uso de `stegcracker`, ya que con esta herramienta podemos realizar un ataque de fuerza bruta. Ejecutamos la herramienta y podemos observar que el password es `chocolate`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554221724/e3570aa9-67ab-4184-888c-f9fece925f9b.png align="center")

Volvemos a ejecutar `steghide` y observamos que pudimos extraer el archivo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554243131/ce1f2d74-cce0-4e03-8ee5-5e374e3d9cd4.png align="center")

Si revisamos podemos observar que el archivo es de KeePass.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554252642/01b0c74e-1afe-4424-b8b2-0773b998679e.png align="center")

Intentamos abrirlo, pero tiene contraseña así que podemos optar por aplicar fuerza bruta, para ello primero debemos obtener el hash y usaremos `keepass2john`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554269326/8b261e81-b879-494d-baa7-5e355ade2ac2.png align="center")

Una vez obtenido el hash usamos `john` para romper el hash, luego de un momento observamos que el password es `password1`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554278079/ab7bee3a-f686-489c-870c-dfee5d51839b.png align="center")

Usamos `keepassxc`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554285564/89e63369-2e37-46e0-b744-61c330859610.png align="center")

Ingresamos el password y podemos observar que tenemos un usuario y un password `pinguinomaravilloso123`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554296484/fa13bdf7-b222-475b-b542-b833907b2ed3.png align="center")

Probamos ingresar, pero no es posible.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554305323/0168d778-2672-4b53-a834-ba07573a82fd.png align="center")

Revisando la sesión de KeePass podemos observar que dice `penguin /pingucontraseña`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554321026/af3409d6-a195-4a45-8b39-63dc5302e78f.png align="center")

Usamos ese nombre para comprobar si es posible ingresar.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554327012/7267318d-0e0e-436d-8fdd-b99a830b4aa4.png align="center")

Como la shell no es muy práctica ingresamos el siguiente comando y ya tenemos una mucho mejor.

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554374597/5e725775-3062-42ad-b112-2e894bbdf955.png align="center")

Una vez hecho eso, realizamos un `pwd` para ver donde estamos y luego un `ls` y podemos observar 2 archivos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554384574/add2e11d-b88e-42ad-a083-91967401a5ab.png align="center")

Si leemos ambos archivos observamos que el primero indica un texto y el segundo nos indica como se genera ese archivo con el texto.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554405003/b23a8672-a2f4-4aba-b71c-923a27b101f7.png align="center")

Revisando los permisos podemos observar en ambos archivos que todos los usuarios (el propietario, el grupo y otros) tienen permiso total sobre el archivo: pueden leerlo, escribir en él y ejecutarlo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554416901/0cd3c1f3-a896-430f-942b-05d06b3124d9.png align="center")

Y como podemos ejecutar archivos procedemos a modificar el archivo para que de permisos a la bash. Ejecutamos el archivo y primero nos da un error. Pero luego volvemos a intentarlo y podemos observar que sí funciona y ya obtuvimos el root.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554441884/d7ff4657-39c6-468d-8116-57044a155077.png align="center")

Suponemos que fue por una tarea programada para el archivo llamado [script.sh](http://script.sh) para ello probamos tratando de leer las tareas `crontab`, pero no es posible porque no encuentra el comando.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554459740/d24c936e-4389-4b3a-977e-9885ee536abc.png align="center")

Para ver si es correcto que se ejecutó por una tarea programada usaremos `pspy64`. Por eso una vez con el archivo en nuestro directorio iniciaremos un servidor para poder descargarlo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554471581/012ce712-4f19-4f49-927d-bc7993ec751d.png align="center")

Descargamos el archivo en la máquina víctima y podemos observar que ya tenemos el archivo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554483193/3dca79c1-a3d4-4dc2-b1a6-a8623c06b805.png align="center")

Le damos permisos de ejecución.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554493451/db49b368-a923-4dd2-b4b8-fc018eef44c8.png align="center")

Podemos observar que efectivamente el archivo se está ejecutando muchas veces como root y por ello se puedo ejecutar el comando que agregamos al script.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1722554506126/dc668b1c-be30-4b1f-bb33-8b3ad8c2147d.png align="center")

Con esa última revisión sobre lo sucedido podemos dar por concluida esta máquina de manera exitosa.
