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

155 lines
10 KiB
Markdown
Raw Normal View History

2023-06-05 20:33:24 +02:00
# WebDav
![](<../../.gitbook/assets/image (9) (1) (2).png>)
\
Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y automatizar fácilmente flujos de trabajo impulsados por las herramientas comunitarias más avanzadas del mundo.\
Obtenga acceso hoy:
{% 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>
* ¿Trabaja en una **empresa de ciberseguridad**? ¿Quiere ver su **empresa anunciada en HackTricks**? ¿O quiere tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenga el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únase al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígame** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparta sus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Un servidor **HTTP con WebDav** activo es un servidor donde probablemente se puedan **actualizar, eliminar, mover, copiar** archivos. **A veces** se **necesitan** credenciales **válidas** (generalmente se comprueba con la autenticación básica HTTP).
Debe intentar **cargar** algún **webshell** y **ejecutarlo** desde el servidor web para tomar el control del servidor.\
Por lo general, para **conectar** un servidor WebDav necesitará **credenciales válidas**: [**fuerza bruta de WebDav**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) _(Autenticación básica)_.
Otra configuración común es **prohibir la carga** de archivos con **extensiones** que serán **ejecutados** por el servidor web, debe verificar cómo **burlar esto:**
* **Cargar** archivos con **extensiones ejecutables** (tal vez no esté prohibido).
* **Cargar** archivos **sin extensiones ejecutables** (como .txt) e intentar **renombrar** el archivo (mover) con una **extensión ejecutable**.
* **Cargar** archivos **sin extensiones ejecutables** (como .txt) e intentar **copiar** el archivo (mover) con una **extensión ejecutable.**
## DavTest
**Davtest** intenta **cargar varios archivos con diferentes extensiones** y **verifica** si se **ejecuta** la extensión:
```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>)
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>
```
## Petición PUT
---
### Description
### Descripción
The HTTP PUT request method creates or updates a resource with the data enclosed in the request body. The resource can be an HTML page, a CSS file, an image, or any other type of file. In the context of web applications, PUT is used to update existing resources or create new ones.
El método de petición HTTP PUT crea o actualiza un recurso con los datos incluidos en el cuerpo de la petición. El recurso puede ser una página HTML, un archivo CSS, una imagen o cualquier otro tipo de archivo. En el contexto de las aplicaciones web, PUT se utiliza para actualizar recursos existentes o crear nuevos.
---
### PUT method and WebDAV
### Método PUT y WebDAV
PUT method is also used by WebDAV (Web Distributed Authoring and Versioning) to upload files to a web server. WebDAV extends the HTTP protocol to allow clients to perform remote Web content authoring operations.
El método PUT también es utilizado por WebDAV (Web Distributed Authoring and Versioning) para subir archivos a un servidor web. WebDAV extiende el protocolo HTTP para permitir a los clientes realizar operaciones de autoría de contenido web remoto.
---
### PUT request and file upload vulnerabilities
### Petición PUT y vulnerabilidades de carga de archivos
PUT requests can be used to upload files to a web server. If the server does not properly validate the uploaded file, it can lead to file upload vulnerabilities such as file inclusion, remote code execution, or even server takeover.
Las peticiones PUT pueden ser utilizadas para subir archivos a un servidor web. Si el servidor no valida adecuadamente el archivo subido, puede llevar a vulnerabilidades de carga de archivos como inclusión de archivos, ejecución remota de código o incluso toma de control del servidor.
```
curl -T 'shell.txt' 'http://$ip'
```
## Petición MOVE
```
curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'
```
![](<../../.gitbook/assets/image (9) (1) (2).png>)
Utiliza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir y automatizar fácilmente flujos de trabajo impulsados por 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 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 **añadiendo** al final del nombre **";.txt"** y el archivo será **ejecutado** como si fuera un archivo .asp (también podrías **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, será **ejecutado** (cadaver dirá que la acción de mover no funcionó, pero sí lo hizo).
![](<../../.gitbook/assets/image (18) (1) (1).png>)
## Publicar credenciales
Si el Webdav estaba usando un servidor Apache, deberías 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, hay 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** la contraseña, o **añadir más** si por alguna razón deseas **acceder** al servidor **webdav**:
```bash
htpasswd /etc/apache2/users.password <USERNAME> #You will be prompted for the password
```
Para comprobar si las nuevas credenciales funcionan, puedes hacer lo siguiente:
```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 la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** 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).
</details>
![](<../../.gitbook/assets/image (9) (1) (2).png>)
\
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas de la comunidad más avanzadas del mundo.\
Obtén acceso hoy mismo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}