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

11 KiB

WebDav

Use Trickest para construir e automatizar facilmente fluxos de trabalho com 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" %}

☁️ 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 carregar algum webshell e executá-lo a partir do servidor web para assumir o controle do servidor.
Normalmente, para conectar um servidor WebDav, você precisará de credenciais válidas: WebDav brute force (Autenticação Básica).

Outra configuração comum é proibir o upload de arquivos com extensões que serão executados pelo servidor web, você deve verificar como burlar isso:

  • Carregar arquivos com extensões executáveis (talvez não seja proibido).
  • Carregar arquivos sem extensões executáveis (como .txt) e tentar renomear o arquivo (mover) com uma extensão executável.
  • Carregar arquivos sem extensões executáveis (como .txt) e tentar copiar o arquivo (mover) com extensão executável.

DavTest

Davtest tenta carregar vários arquivos com diferentes extensões e verificar 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 pela 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>

Requisição PUT


Description

The HTTP PUT method is used to update a resource on a server. In the context of web applications, this method is commonly used to update files on a web server. The PUT method is part of the WebDAV protocol, which is an extension of the HTTP protocol that allows clients to perform remote web content authoring operations.

Descrição

O método HTTP PUT é usado para atualizar um recurso em um servidor. No contexto de aplicações web, este método é comumente usado para atualizar arquivos em um servidor web. O método PUT faz parte do protocolo WebDAV, que é uma extensão do protocolo HTTP que permite que clientes realizem operações de autoria de conteúdo web remoto.


Vulnerability

The PUT method can be vulnerable to attacks if the server does not properly validate the input data. An attacker can use the PUT method to upload a malicious file to the server, overwrite an existing file, or modify the content of an existing file. This can lead to a variety of attacks, including remote code execution, file inclusion, and data leakage.

Vulnerabilidade

O método PUT pode ser vulnerável a ataques se o servidor não validar corretamente os dados de entrada. Um atacante pode usar o método PUT para fazer upload de um arquivo malicioso para o servidor, sobrescrever um arquivo existente ou modificar o conteúdo de um arquivo existente. Isso pode levar a uma variedade de ataques, incluindo execução remota de código, inclusão de arquivo e vazamento de dados.


Exploitation

To exploit this vulnerability, an attacker can use a web client or a command-line tool to send a PUT request to the server. The request should include the file to be uploaded and the location where the file should be stored on the server. If the server does not properly validate the input data, the file will be uploaded to the server and can be accessed by the attacker.

Exploração

Para explorar essa vulnerabilidade, um atacante pode usar um cliente web ou uma ferramenta de linha de comando para enviar uma requisição PUT para o servidor. A requisição deve incluir o arquivo a ser enviado e o local onde o arquivo deve ser armazenado no servidor. Se o servidor não validar corretamente os dados de entrada, o arquivo será enviado para o servidor e pode ser acessado pelo atacante.


Mitigation

To mitigate this vulnerability, the server should properly validate the input data and restrict access to sensitive files. The server should also use access controls to limit the actions that can be performed by users and applications. Additionally, the server should log all PUT requests and monitor for any suspicious activity.

Mitigação

Para mitigar essa vulnerabilidade, o servidor deve validar corretamente os dados de entrada e restringir o acesso a arquivos sensíveis. O servidor também deve usar controles de acesso para limitar as ações que podem ser realizadas por usuários e aplicativos. Além disso, o servidor deve registrar todas as requisições PUT e monitorar qualquer atividade suspeita.

curl -T 'shell.txt' 'http://$ip'

Requisição MOVE

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.
Obtenha acesso hoje:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Vulnerabilidade IIS5/6 WebDav

Essa vulnerabilidade é muito interessante. O WebDav não permite o upload ou renomeação de 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, há 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. Estas são as credenciais que o servidor webdav está usando para autenticar 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:

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 facilmente, alimentados pelas 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" %}