File Upload via WebDAV (PUT + MOVE)
Arsenal completo de comandos en la cheatsheetWebDAV (Web Distributed Authoring and Versioning) es una extensión de HTTP que añade métodos para gestionar ficheros en un servidor web: PUT (subir), DELETE (borrar), COPY, MOVE (renombrar / mover), MKCOL (crear directorios), PROPFIND/PROPPATCH, LOCK/UNLOCK. Si está mal configurado, esos métodos convierten un servidor web en un disco de escritura para el atacante.
El bypass PUT + MOVE. Un control de seguridad habitual es filtrar por extensión en la subida: el servidor bloquea .asp/.aspx (lo que IIS ejecutaría) pero permite subir .txt, .html, etc. El fallo es que el filtro solo se aplica al PUT, no al renombrado. La técnica:
- Subir la webshell con una extensión permitida (
.txt):
` curl -s -X PUT http://<ip>/cmdasp.txt -d @cmdasp.txt `
- Renombrarla a la extensión ejecutable con
MOVE:
` curl -s -X MOVE -H "Destination: http://<ip>/cmdasp.aspx" http://<ip>/cmdasp.txt `
Una vez convertida en .aspx, IIS la interpreta y se logra ejecución de comandos. La validación cubría la operación de subida pero no la de renombrado: ese es el agujero.
Enumeración previa. La herramienta davtest prueba qué tipos de fichero acepta el servidor y deja claro el escenario:
davtest -url http://<ip>Si reporta que sube txt/html pero rechaza asp/aspx, el bypass con MOVE es el camino.
Dónde aparece. Fue el vector de entrada de Granny (IIS 6.0 con PUT/MOVE habilitados), gemela de Grandpa, que en cambio cae por la vulnerabilidad de la versión. La webshell da una shell como NETWORK SERVICE y de ahí churrasco eleva a SYSTEM.
Cómo detectarlo. La firma en el log de IIS son los verbos WebDAV poco habituales: un PUT de un .txt/.html seguido de un MOVE con cabecera Destination que lo renombra a .aspx/.asp, una secuencia que ningún cliente normal ejecuta. Un pico de PUT/MOVE/PROPFIND desde una IP (típico de davtest) es el reconocimiento. La confirmación es un fichero ejecutable nuevo en el directorio de subida (FIM) y, al pedirlo, w3wp.exe lanzando cmd/powershell (4688/Sysmon 1 con ppid=w3wp). Un WAF que bloquee MOVE/COPY con Destination a extensiones ejecutables lo corta.
Defensa. No habilitar métodos de escritura de WebDAV salvo necesidad expresa; si se usan, validar el tipo de fichero en TODAS las operaciones (incluido MOVE/COPY), no solo en la subida; aplicar listas blancas de extensiones por contenido (no por nombre) y denegar la ejecución de scripts en directorios de carga.
Máquinas donde se aplica
- GrannyHackTheBox
- MedJedProving Grounds Practice
- SickOs 1.2VulnHub