Symfonos_1 VulnHub
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>nmap -sCV -p<PORTS> <IP>Info:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-10 15:10 EDT
Nmap scan report for 192.168.5.179
Host is up (0.00026s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
| ssh-hostkey:
| 2048 ab:5b:45:a7:05:47:a5:04:45:ca:6f:18:bd:18:03:c2 (RSA)
| 256 a0:5f:40:0a:0a:1f:68:35:3e:f4:54:07:61:9f:c6:4a (ECDSA)
|_ 256 bc:31:f5:40:bc:08:58:4b:fb:66:17:ff:84:12:ac:1d (ED25519)
25/tcp open smtp Postfix smtpd
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=symfonos
| Subject Alternative Name: DNS:symfonos
| Not valid before: 2019-06-29T00:29:42
|_Not valid after: 2029-06-26T00:29:42
|_smtp-commands: symfonos.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Site doesn't have a title (text/html).
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.5.16-Debian (workgroup: WORKGROUP)
MAC Address: 00:0C:29:8D:BE:D4 (VMware)
Service Info: Hosts: symfonos.localdomain, SYMFONOS; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.5.16-Debian)
| Computer name: symfonos
| NetBIOS computer name: SYMFONOS\x00
| Domain name: \x00
| FQDN: symfonos
|_ System time: 2024-06-10T14:10:22-05:00
|_clock-skew: mean: 1h40m00s, deviation: 2h53m12s, median: 0s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2024-06-10T19:10:23
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
|_nbstat: NetBIOS name: SYMFONOS, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.12 secondsenum4linux
Info:
Vemos varias cosas interesantes, a parte de un usuario llamado helios, pero nos conectaremos de forma anonima de la siguiente manera a este recurso compartido llamado anonymous...
Si entramos aqui y hacemos un ls veremos lo siguiente...
Veremos ese archivo el cual nos lo descargaremos...
Una vez descargado nos salimos y lo leemos, contendra lo siguiente...
Al parecer nos da pistas de 3 posibles contraseñas para algun usuario, por lo que haremos lo siguiente...
Probaremos que el usuario existe realmente en el servidor ya que tenemos un puerto 25 corriendo...
Info:
Vemos que el usuario helios existe en el servidor ya que recibimos la siguiente linea...
Probando una de las 3 password's que conseguimos nos conectaremos con helios en smb de la siguiente manera...
Y la password sera qwerty...
Una vez dentro si hacemos un ls veremos lo siguiente...
Nos lo descargamos de la siguiente manera...
Y el contenido de cada uno sera...
research.txt
todo.txt
Vemos interesante el nombre de /h3l105 ya que si lo ponemos en la URL como si fuera un directorio, veremos que contiene un Wordpress...
Pero no nos cargara bien, por lo que tendremos que actualizar nuestro archivo hosts para que nos cargue...
En el intento de ver si helios era un usuario del sistema, tambien vimos el dominio que utiliza la pagina web llamado symfonos.local por lo que sera eso lo que pongamos...
Una vez hecho esto, cuando la recarguemos veremos el wordpress perfectamente...
Info:
Vemos que nos descubrio el usuario llamado admin...
Info:
Vemos que hay un plugin llamado mail-masta y tenemos el puerto 25 abierto por lo que buscaremos algun exploit que sea vulnerable al plugin mail-masta...
URL = https://www.exploit-db.com/exploits/40290
En ExploitDB vemos que con la siguiente URL podemos hacer LFI (Local File Inclusion)...
Por lo que lo ajustaremos a nuestras necesidades...
Info:
Veremos que funciona...
Por lo que copiaremos el siguiente script para automatizar todo esto mas, utilizaremos la tecnica de LFI utilizando Wrappers...
URL = https://github.com/synacktiv/php_filter_chains_oracle_exploit/blob/main/filters_chain_oracle_exploit.py
Una vez copiado ese script a nuestro host lo utilizaremos de la siguiente manera...
Info:
Esto lo que hara sera crear el payload que nosotros queramos usar de manera "codificada" para que nosotros lo pongamos en el parametro vulnerable, en este caso seria en el pl=, lo que estoy haciendo es crear un parametro llamado cmd en el que pueda ejecutar comandos de forma libre...
Por lo que una vez generado eso anterior, todo ese contenido lo pondremos despues del = de pl y como habremos creado el parametro cmd que es donde ejecutaremos todos los comandos haremos un ls para probar quedando de esta manera...
Info:
Por lo que vemos funciono, por lo que ahora intentaremos hacer una Reverse Shell...
Comprobaremos que curl esta instalado y funcional...
Y ahora estando a la escucha de alguna peticion, nos haremos una peticion con curl para comprobarlo...
Si enviamos eso y volvemos a nuestra terminal viendo que sucedio en python veremos la siguiente peticion, por lo que sabemos que curl esta instalado...
Una vez sabiendo eso, haremos lo siguiente...
Entraremos a la escucha para estar preparados para la Reverse Shell....
Tendremos todavia nuestro python abierto a la escucha para ver que las peticiones viajan bien...
Crearemos un archivo con una Reverse Shell llamado index.html...
index.html
Guardamos el archivo y ahora lo ejecutaremos desde curl de la siguiente manera...
Una vez hecho esto habremos conseguido una conexion con el usuario helios...
Sanitizamos la shell...
Una vez sanitizada la shell, si vamos a la siguiente ruta...
Veremos un archivo tipico de configuracion de mysql que contiene credenciales llamado wp-config.php si lo leemos veremos las siguientes lineas bastante interesantes...
Te da un usuario y una contraseña, pero no funciona en ningun usuario...
Si nos vamos a la siguiente ruta /opt veremos un archivo llamado statuscheck que tiene los siguientes permisos...
Tiene el SUID activado y si vemos que hace de forma interna de la siguiente manera...
Info:
Vemos que ejecuta el binario system y curl por lo que haremos lo siguiente para ser root...
Igualmente todo esta recogido en esta pagina tambien...
URL = https://medium.com/purplebox/linux-privilege-escalation-with-path-variable-suid-bit-6b9c492411de
Vemos que se haya creado todo correctamente en nuestra carpeta /tmp...
Ahora lo que vamos hacer es cambiar el PATH para que se ejecute antes lo que hay en /tmp antes de que se ejecute en /usr/bin, de la siguiente forma podemos ver que la ruta cambia antes de exportar el PATH...
Info:
Pero si lo exportamos...
Con esto lo que estamos haciendo es de antes tener el PATH asi...
A tenerlo de esta manera...
Por lo que ahora mismo /tmp lo que haya dentro y coincida con lo que se esta ejecutando el binario se va a ejecutar antes en /tmp que en /usr/bin y si le hacemos lo siguiente veremos lo que digo...
Info:
Por lo que la ruta logica cambio correctamente a la de /tmp...
Una vez ejecutado el archivo statuscheck si hacemos lo siguiente...
Veremos lo siguiente...
Que los permisos se cambiaron correctamente y podremos ser root de esta manera...
Y con esto ya seriamos root, por lo que leeremos la flag...
proof.txt (flag_final)
Last updated