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

175 lines
12 KiB
Markdown

# WebDav
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e automatizar facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
Acesse hoje:
{% 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>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? Ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Um servidor **HTTP com WebDav** ativo é um servidor onde você provavelmente pode **atualizar, excluir, mover, copiar** arquivos. Às vezes, você precisa ter **credenciais válidas** (geralmente verifique com Autenticação Básica HTTP).
Você deve tentar **fazer upload** de algum **webshell** e **executá-lo** a partir do servidor web para assumir o controle sobre o servidor.\
Normalmente, para **conectar** a um servidor WebDav, você precisará de **credenciais válidas**: [**WebDav bruteforce**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) _(Autenticação Básica)_.
Outra configuração comum é **proibir o upload** de arquivos com **extensões** que serão **executadas** pelo servidor web, você deve verificar como **burlar isso:**
* **Fazer upload** de arquivos com **extensões executáveis** (talvez não seja proibido).
* **Fazer upload** de arquivos **sem extensões executáveis** (como .txt) e tentar **renomear** o arquivo (mover) com uma **extensão executável**.
* **Fazer upload** de arquivos **sem extensões executáveis** (como .txt) e tentar **copiar** o arquivo (mover) com **extensão executável**.
## DavTest
**Davtest** tenta **fazer upload de vários arquivos com diferentes extensões** e **verifica** se a extensão é **executada**:
```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
```
Saída de exemplo:
![](<../../.gitbook/assets/image (19) (1).png>)
Isso não significa que as extensões **.txt** e **.html estão sendo executadas**. Isso significa que você pode **acessar esses arquivos** através da web.
## Cadaver
Você pode usar essa ferramenta para **conectar-se ao servidor WebDav** e realizar ações (como **upload**, **mover** ou **excluir**) **manualmente**.
```
cadaver <IP>
```
## Pedido PUT
The PUT method is used to update or create a resource on a server. In the context of web applications, it is commonly used to upload files or modify existing data.
O método PUT é usado para atualizar ou criar um recurso em um servidor. No contexto de aplicações web, é comumente usado para fazer upload de arquivos ou modificar dados existentes.
### WebDAV and PUT
WebDAV (Web Distributed Authoring and Versioning) is an extension of the HTTP protocol that allows for more advanced file management capabilities. One of the features provided by WebDAV is the ability to use the PUT method to upload files to a server.
WebDAV (Web Distributed Authoring and Versioning) é uma extensão do protocolo HTTP que permite recursos avançados de gerenciamento de arquivos. Uma das funcionalidades fornecidas pelo WebDAV é a capacidade de usar o método PUT para fazer upload de arquivos para um servidor.
### Exploiting PUT Requests
In some cases, the server may not properly validate or restrict the use of the PUT method, allowing an attacker to upload arbitrary files to the server. This can be exploited to gain unauthorized access or to perform other malicious activities.
Em alguns casos, o servidor pode não validar corretamente ou restringir o uso do método PUT, permitindo que um atacante faça upload de arquivos arbitrários para o servidor. Isso pode ser explorado para obter acesso não autorizado ou realizar outras atividades maliciosas.
To exploit this vulnerability, an attacker can send a PUT request to the target server with a specially crafted payload. The payload can be a malicious file that, when executed on the server, allows the attacker to gain control over the system.
Para explorar essa vulnerabilidade, um atacante pode enviar um pedido PUT para o servidor de destino com uma carga útil especialmente criada. A carga útil pode ser um arquivo malicioso que, quando executado no servidor, permite ao atacante obter controle sobre o sistema.
### Mitigating the Risk
To mitigate the risk of exploitation through PUT requests, it is important to properly validate and restrict the use of the PUT method on the server. This can be done by implementing access controls, input validation, and file type restrictions.
Para mitigar o risco de exploração por meio de pedidos PUT, é importante validar corretamente e restringir o uso do método PUT no servidor. Isso pode ser feito implementando controles de acesso, validação de entrada e restrições de tipo de arquivo.
```
curl -T 'shell.txt' 'http://$ip'
```
## Pedido 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 new location.
O pedido MOVE é usado no WebDAV para mover um recurso de uma localização para outra. É semelhante ao pedido HTTP `PUT`, mas em vez de criar um novo recurso, move um recurso existente para uma nova localização.
### 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 is used to move the `document.txt` file from the `/files` directory to the `/archive` directory.
Neste exemplo, o pedido `MOVE` é usado para mover o arquivo `document.txt` do diretório `/files` para o diretório `/archive`.
```
curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e automatizar facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
Acesse hoje mesmo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Vulnerabilidade do WebDav no IIS5/6
Essa vulnerabilidade é muito interessante. O **WebDav** não permite **fazer upload** ou **renomear** arquivos com a extensão **.asp**. Mas você pode **burlar** isso adicionando ao final do nome **";.txt"** e o arquivo será **executado** como se fosse um arquivo .asp (você também pode **usar ".html" em vez de ".txt"**, mas **NÃO esqueça do ";"**).
Então você pode **fazer upload** do seu shell como um arquivo ".**txt"** e **copiá-lo/movê-lo para um arquivo ".asp;.txt"**. Ao acessar esse arquivo pelo servidor web, ele será **executado** (o cadaver dirá que a ação de movimento não funcionou, mas funcionou).
![](<../../.gitbook/assets/image (18) (1) (1).png>)
## Postar credenciais
Se o Webdav estiver usando um servidor Apache, você deve procurar nos sites configurados no Apache. Comumente:\
_**/etc/apache2/sites-enabled/000-default**_
Dentro dele, você pode 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 você pode ver, aqui estão os arquivos com as **credenciais** válidas para o servidor **webdav**:
```
/etc/apache2/users.password
```
Dentro deste tipo de arquivos, você encontrará o **nome de usuário** e um **hash** da senha. Essas são as credenciais que o servidor webdav está usando para autenticar os usuários.
Você pode tentar **quebrá-las**, ou **adicionar mais** se, por algum motivo, você quiser **acessar** o servidor **webdav**:
```bash
htpasswd /etc/apache2/users.password <USERNAME> #You will be prompted for the password
```
Para verificar se as novas credenciais estão funcionando, você pode fazer o seguinte:
```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>
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com facilidade, utilizando as ferramentas comunitárias mais avançadas do mundo.\
Obtenha acesso hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}