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

194 lines
13 KiB
Markdown
Raw Normal View History

2023-06-05 18:33:24 +00:00
# WebDav
<figure><img src="/.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
\
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y automatizar fácilmente flujos de trabajo con las herramientas comunitarias más avanzadas del mundo.\
Obtén acceso hoy mismo:
2023-06-05 18:33:24 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2023-06-05 18:33:24 +00:00
</details>
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).
2023-06-05 18:33:24 +00:00
Deberías intentar **subir** un **webshell** y **ejecutarlo** 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**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) _(Autenticación Básica)_.
2023-06-05 18:33:24 +00:00
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**:
2023-06-05 18:33:24 +00:00
* **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**.
2023-06-05 18:33:24 +00:00
## DavTest
**Davtest** intenta **subir varios archivos con diferentes extensiones** y **verifica** si la extensión es **ejecutada**:
2023-06-05 18:33:24 +00:00
```bash
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:
![](<../../.gitbook/assets/image (19) (1).png>)
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
### How it works
2023-06-05 18:33:24 +00:00
### Cómo funciona
2023-06-05 18:33:24 +00:00
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.
2023-06-05 18:33:24 +00:00
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 URL of the resource to be updated or created, along with the data to be sent in the request body. The server then processes the request and performs the necessary actions.
Al realizar una solicitud PUT de WebDAV, el cliente especifica la URL del recurso que se va a actualizar o crear, junto con los datos que se enviarán en el cuerpo de la solicitud. El servidor luego procesa la solicitud y realiza las acciones necesarias.
### Security Considerations
### Consideraciones de seguridad
When using the PUT method, it is important to consider security implications. If the server does not have proper access controls in place, an attacker could potentially overwrite or create sensitive files on the server.
Al utilizar el método PUT, es importante tener en cuenta las implicaciones de seguridad. Si el servidor no tiene controles de acceso adecuados, un atacante podría sobrescribir o crear archivos sensibles en el servidor.
To mitigate this risk, it is recommended to implement proper authentication and authorization mechanisms, as well as input validation to prevent malicious data from being uploaded.
Para mitigar este riesgo, se recomienda implementar mecanismos adecuados de autenticación y autorización, así como validación de entrada para evitar que se carguen datos maliciosos.
### Conclusion
### Conclusión
The PUT method is a powerful tool for updating or creating resources on a server. When used in conjunction with WebDAV, it allows for advanced file management capabilities. However, it is important to ensure proper security measures are in place to prevent unauthorized access or data manipulation.
El método PUT es una herramienta poderosa para actualizar o crear recursos en un servidor. Cuando se utiliza en conjunto con WebDAV, permite capacidades avanzadas de gestión de archivos. Sin embargo, es importante asegurarse de que se implementen medidas de seguridad adecuadas para evitar el acceso no autorizado o la manipulación de datos.
2023-06-05 18:33:24 +00:00
```
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.
2023-06-05 18:33:24 +00:00
```
curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'
```
<figure><img src="/.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
\
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y automatizar fácilmente flujos de trabajo con las herramientas comunitarias más avanzadas del mundo.\
Obtén acceso hoy mismo:
2023-06-05 18:33:24 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Vulnerabilidad de WebDav en IIS5/6
2023-06-05 18:33:24 +00:00
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 ";"**).
2023-06-05 18:33:24 +00:00
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).
2023-06-05 18:33:24 +00:00
![](<../../.gitbook/assets/image (18) (1) (1).png>)
## Publicar credenciales
Si el Webdav estaba utilizando un servidor Apache, debes buscar en los sitios configurados en Apache. Comúnmente:\
2023-06-05 18:33:24 +00:00
_**/etc/apache2/sites-enabled/000-default**_
Dentro de él podrías encontrar algo como:
2023-06-05 18:33:24 +00:00
```
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
2023-06-05 18:33:24 +00:00
```
Como puedes ver, aquí están los archivos con las **credenciales** válidas para el servidor **webdav**:
2023-06-05 18:33:24 +00:00
```
/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**:
2023-06-05 18:33:24 +00:00
```bash
htpasswd /etc/apache2/users.password <USERNAME> #You will be prompted for the password
```
Para verificar si las nuevas credenciales funcionan, puedes hacer lo siguiente:
2023-06-05 18:33:24 +00:00
```bash
wget --user <USERNAME> --ask-password http://domain/path/to/webdav/ -O - -q
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**merchandising oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2023-06-05 18:33:24 +00:00
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="/.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
\
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias más avanzadas del mundo.\
2023-06-05 18:33:24 +00:00
Obtén acceso hoy mismo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}