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

12 KiB

WebDav


Use Trickest 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" %}

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

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 (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:

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:

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'


Use Trickest 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).

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:

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:

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


Use Trickest 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" %}