Το Freelancer ξεκινά με το να αποκτήσεις πρόσβαση σαν employer, μετά κάνεις escalate σε admin μέσω μιας ευπάθειας IDOR στο flow login OTP του QR-Code. Από εκεί, ένα SQL terminal εκθέτει εντολές MSSQL που επιτρέπουν impersonation του sa και ενεργοποίηση του xp_cmdshell για ένα reverse shell. Αφού κάνεις pivot μέσα από χρήστες μέσω αρχείων credentials και ένα memory dump, το μονοπάτι προς Domain Admin περνά μέσα από Resource-Based Constrained Delegation (RBCD).
Ένα πλήρες port scan αποκαλύπτει έναν domain controller Windows. Αξιοσημείωτο: MSSQL στη θύρα 55297 και WinRM στη 5985.
nmap
SP1R4@kali)-[~]└$ nmap -sC -sV -p- -oN nmap_results.txt 10.129.159.108PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http nginx 1.25.5
88/tcp open kerberos-sec Microsoft Windows Kerberos
135/tcp open msrpc Microsoft Windows RPC
389/tcp open ldap Microsoft Windows Active Directory LDAP
445/tcp open microsoft-ds?
5985/tcp open http Microsoft HTTPAPI httpd 2.0
55297/tcp open ms-sql-s Microsoft SQL Server 2019 15.00.2000.00
| DNS_Domain_Name: freelancer.htb
| DNS_Computer_Name: DC.freelancer.htb
Service Info: Host: DC; OS: Windows
RPC & SMB — Access Denied
rpcclient / smbclient
SP1R4@kali)-[~]└$ rpcclient -U "" -N 10.10.11.5rpcclient $> enumdomusers
result was NT_STATUS_ACCESS_DENIEDSP1R4@kali)-[~]└$ smbclient -L 10.10.11.5Anonymous login successful
Unable to connect with SMB1 -- no workgroup available
Website — TCP 80
Το site είναι μια πλατφόρμα job board με εγγραφή Freelancer και Employer.
Κάνε εγγραφή σαν freelancer πρώτα. Δεν βρέθηκε τίποτα χρήσιμο κατά την καταμέτρηση σαν freelancer.
Κάνε εγγραφή σαν employer μετά — αλλά το login αποτυγχάνει αμέσως μετά την εγγραφή:
Bypass account recovery
Χρησιμοποίησε τη φόρμα Account Recovery. Οι ερωτήσεις ασφαλείας δέχονται τετριμμένα-μαντεμένες απαντήσεις (όλες ορισμένες στην ίδια τιμή κατά την εγγραφή). Αυτό επανενεργοποιεί τον λογαριασμό και επιτρέπει reset password:
Τώρα μέσα σαν employer bob:
IDOR — Insecure Direct Object Reference
Τμήμα QR-Code
Το στοιχείο μενού QR-Code δημιουργεί ένα URL login OTP. Το σκανάρισμα αποκαλύπτει ότι το token κωδικοποιεί το αριθμητικό ID του τρέχοντος χρήστη σε base64:
Format URL OTP: http://freelancer.htb/accounts/login/otp/<base64_uid>/<token>
Το να αντικαταστήσεις την τιμή base64 με το κωδικοποιημένο ID οποιουδήποτε άλλου χρήστη κάνει login σαν εκείνον τον χρήστη — κλασικό IDOR.
Escalation σε admin
Περιήγηση στα σχόλια του blog για να βρεις το username του admin. Η καταμέτρηση URL προφίλ επιβεβαιώνει ότι ο admin έχει ID 2. Κωδικοποίησέ το: echo -n "2" | base64 → Mg==.
IDOR payload
# bob (ID 10011)http://freelancer.htb/accounts/login/otp/MTAwMTE=/e4ff26...# admin (ID 2)http://freelancer.htb/accounts/login/otp/Mgo=/e4ff26...
/admin — SQL Terminal
Το admin panel εκθέτει ένα SQL Terminal κάτω από τα Development Tools:
PS C:\Users\mikasaAckerman\Desktop> type mail.txt
Hello Mikasa,
Liza has requested me to generate a full memory dump on the DC.
The file is on the Desktop.
Ένα memory dump (MEMORY.7z) είναι στο Desktop. Κάν' το extract, τρέξε το Mimikatz για να απομονώσεις το lsass.exe, μετά τράβηξε το password του lorra199 από το SAM:
Το AD Recycle Bin έχει GenericWrite πάνω στον Domain Controller DC$:
Το GenericWrite στο DC$ επιτρέπει κατάχρηση RBCD — μπορούμε να ορίσουμε το attribute msDS-AllowedToActOnBehalfOfOtherIdentity και να κάνουμε impersonate οποιονδήποτε χρήστη συμπεριλαμβανομένου του Administrator.