hacktricks/network-services-pentesting/pentesting-web/put-method-webdav.md

12 KiB

WebDav


Utiliza Trickest para construir y automatizar fácilmente flujos de trabajo con las herramientas comunitarias más avanzadas del mundo.
Obtén acceso hoy mismo:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Un servidor HTTP con WebDav activo es un servidor donde probablemente puedas actualizar, eliminar, mover, copiar archivos. A veces, necesitarás tener credenciales válidas (generalmente se verifica con Autenticación Básica HTTP).

Deberías intentar subir una webshell y ejecutarla desde el servidor web para tomar el control del servidor.
Por lo general, para conectarte a un servidor WebDav necesitarás credenciales válidas: WebDav bruteforce (Autenticación Básica).

Otra configuración común es prohibir la carga de archivos con extensiones que serán ejecutadas por el servidor web, deberías verificar cómo burlar esto:

  • Sube archivos con extensiones ejecutables (quizás no esté prohibido).
  • Sube archivos sin extensiones ejecutables (como .txt) e intenta renombrar el archivo (moverlo) con una extensión ejecutable.
  • Sube archivos sin extensiones ejecutables (como .txt) e intenta copiar el archivo (moverlo) con una extensión ejecutable.

DavTest

Davtest intenta subir varios archivos con diferentes extensiones y verifica si la extensión es ejecutada:

davtest [-auth user:password] -move -sendbd auto -url http://<IP> #Uplaod .txt files and try to move it to other extensions
davtest [-auth user:password] -sendbd auto -url http://<IP> #Try to upload every extension

Salida de ejemplo:

Esto no significa que las extensiones .txt y .html se estén ejecutando. Esto significa que puedes acceder a estos archivos a través de la web.

Cadaver

Puedes usar esta herramienta para conectarte al servidor WebDav y realizar acciones (como subir, mover o eliminar) manualmente.

cadaver <IP>

Solicitud PUT

A PUT request is an HTTP method used to update or create a resource on a server. It is commonly used in WebDAV (Web Distributed Authoring and Versioning) to upload files to a remote server.

Una solicitud PUT es un método HTTP utilizado para actualizar o crear un recurso en un servidor. Se utiliza comúnmente en WebDAV (Web Distributed Authoring and Versioning) para cargar archivos en un servidor remoto.

How it works

Cómo funciona

When making a PUT request, the client sends the data to be updated or created in the body of the request. The server then processes the request and updates or creates the resource accordingly. If the resource already exists, it will be overwritten with the new data provided in the request.

Al realizar una solicitud PUT, el cliente envía los datos que se van a actualizar o crear en el cuerpo de la solicitud. El servidor luego procesa la solicitud y actualiza o crea el recurso según corresponda. Si el recurso ya existe, se sobrescribirá con los nuevos datos proporcionados en la solicitud.

WebDAV and PUT

WebDAV y PUT

WebDAV is an extension of the HTTP protocol that allows for more advanced file management capabilities. It includes support for methods like PUT, which enables clients to upload files to a server.

WebDAV es una extensión del protocolo HTTP que permite capacidades de gestión de archivos más avanzadas. Incluye soporte para métodos como PUT, que permite a los clientes cargar archivos en un servidor.

When performing a WebDAV PUT request, the client specifies the destination URL where the file should be uploaded. The server then processes the request and saves the file at the specified location.

Al realizar una solicitud PUT de WebDAV, el cliente especifica la URL de destino donde se debe cargar el archivo. El servidor luego procesa la solicitud y guarda el archivo en la ubicación especificada.

Security Considerations

Consideraciones de seguridad

When using the PUT method, it is important to consider security implications. If the server does not properly validate and sanitize the data provided in the request, it could lead to security vulnerabilities such as code injection or file overwrite.

Al utilizar el método PUT, es importante tener en cuenta las implicaciones de seguridad. Si el servidor no valida y desinfecta correctamente los datos proporcionados en la solicitud, podría dar lugar a vulnerabilidades de seguridad como la inyección de código o la sobrescritura de archivos.

To mitigate these risks, it is recommended to implement proper input validation and sanitization on the server-side. Additionally, access controls should be in place to ensure that only authorized users can perform PUT requests.

Para mitigar estos riesgos, se recomienda implementar una validación adecuada de la entrada y desinfección en el lado del servidor. Además, se deben establecer controles de acceso para garantizar que solo los usuarios autorizados puedan realizar solicitudes PUT.

curl -T 'shell.txt' 'http://$ip'

Solicitud MOVE

The MOVE request is used in WebDAV to move a resource from one location to another. It is similar to the HTTP PUT request, but instead of creating a new resource, it moves an existing resource to a different location.

La solicitud MOVE se utiliza en WebDAV para mover un recurso de una ubicación a otra. Es similar a la solicitud HTTP PUT, pero en lugar de crear un nuevo recurso, mueve un recurso existente a una ubicación diferente.

Syntax

MOVE /source-resource HTTP/1.1
Host: example.com
Destination: /destination-resource

Example

MOVE /files/document.txt HTTP/1.1
Host: example.com
Destination: /archive/document.txt

In this example, the MOVE request moves the document.txt file from the /files directory to the /archive directory on the server.

En este ejemplo, la solicitud MOVE mueve el archivo document.txt del directorio /files al directorio /archive en el servidor.

curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'


Utiliza Trickest para construir y automatizar fácilmente flujos de trabajo con las herramientas comunitarias más avanzadas del mundo.
Obtén acceso hoy mismo:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Vulnerabilidad de WebDav en IIS5/6

Esta vulnerabilidad es muy interesante. El WebDav no permite subir o renombrar archivos con la extensión .asp. Pero puedes burlar esto agregando al final del nombre ";.txt" y el archivo se ejecutará como si fuera un archivo .asp (también puedes usar ".html" en lugar de ".txt" pero NO olvides el ";").

Luego puedes subir tu shell como un archivo ".txt" y copiar/moverlo a un archivo ".asp;.txt". Al acceder a ese archivo a través del servidor web, se ejecutará (cadaver dirá que la acción de mover no funcionó, pero sí lo hizo).

Publicar credenciales

Si el Webdav estaba utilizando un servidor Apache, debes buscar en los sitios configurados en Apache. Comúnmente:
/etc/apache2/sites-enabled/000-default

Dentro de él podrías encontrar algo como:

ServerAdmin webmaster@localhost
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user

Como puedes ver, aquí están los archivos con las credenciales válidas para el servidor webdav:

/etc/apache2/users.password

Dentro de este tipo de archivos encontrarás el nombre de usuario y un hash de la contraseña. Estas son las credenciales que el servidor webdav utiliza para autenticar a los usuarios.

Puedes intentar descifrar las contraseñas, o agregar más si por alguna razón deseas acceder al servidor webdav:

htpasswd /etc/apache2/users.password <USERNAME> #You will be prompted for the password

Para verificar si las nuevas credenciales funcionan, puedes hacer lo siguiente:

wget --user <USERNAME> --ask-password http://domain/path/to/webdav/ -O - -q
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥


Utiliza Trickest para construir y automatizar flujos de trabajo con las herramientas comunitarias más avanzadas del mundo.
Obtén acceso hoy mismo:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}