unityGrandpa

Dificultad: Easy - OS: Windows

chevron-right¯\_( ͡° ͜ʖ ͡°)_/¯ Machine infohashtag

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.

chevron-right📌CVE-2017-7269hashtag

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

chevron-right📌MS14-070hashtag

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   
chevron-right📌 Parámetroshashtag
  • 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:

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

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

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

Procedimiento manual

Para la intrusión manual vamos a usar el exploit iis6-exploit-2017-CVE-2017-7269arrow-up-right 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

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.

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

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

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

2) Levantamos un servidor smb desde el directorio donde se encuentra el payload usando impacket-smbserver

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

Bingo! ( ͡• ͜ʖ ͡•)

Last updated