hacktricks/network-services-pentesting/pentesting-web/put-method-webdav.md
2024-02-10 13:03:23 +00:00

12 KiB

WebDav


Utilizza Trickest per creare facilmente e automatizzare flussi di lavoro supportati dagli strumenti della comunità più avanzati al mondo.
Ottieni l'accesso oggi stesso:

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

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Quando si tratta di un server HTTP con WebDav abilitato, è possibile manipolare i file se si dispone delle credenziali corrette, di solito verificate tramite autenticazione di base HTTP. Ottenere il controllo su un tale server spesso comporta caricare ed eseguire un webshell.

L'accesso al server WebDav richiede tipicamente credenziali valide, con WebDav bruteforce che è un metodo comune per acquisirle.

Per superare le restrizioni sul caricamento dei file, in particolare quelle che impediscono l'esecuzione di script lato server, è possibile:

  • Caricare file con estensioni eseguibili direttamente se non sono limitate.
  • Rinominare i file non eseguibili caricati (come .txt) con un'estensione eseguibile.
  • Copiare i file non eseguibili caricati, cambiando la loro estensione in una che è eseguibile.

DavTest

Davtest cerca di caricare diversi file con estensioni diverse e verifica se l'estensione viene eseguita:

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

Esempio di output:

Questo non significa che le estensioni .txt e .html vengano eseguite. Significa che puoi accedere a questi file tramite il web.

Cadaver

Puoi utilizzare questo strumento per connetterti al server WebDav e eseguire azioni (come caricare, spostare o eliminare) manualmente.

cadaver <IP>

Richiesta PUT

A PUT request is an HTTP method used to upload or update a resource on a server. It is commonly used in WebDAV (Web Distributed Authoring and Versioning) to modify files on a remote server. The PUT method allows the client to specify the URI (Uniform Resource Identifier) of the resource to be created or updated, and the server will handle the rest.

Una richiesta PUT è un metodo HTTP utilizzato per caricare o aggiornare una risorsa su un server. È comunemente utilizzato in WebDAV (Web Distributed Authoring and Versioning) per modificare file su un server remoto. Il metodo PUT consente al client di specificare l'URI (Uniform Resource Identifier) della risorsa da creare o aggiornare, e il server si occuperà del resto.

PUT Method in WebDAV

Metodo PUT in WebDAV

In WebDAV, the PUT method is used to create or update a file on a remote server. It allows the client to send the file content in the request body, along with the necessary headers to specify the file name, location, and other metadata.

In WebDAV, il metodo PUT viene utilizzato per creare o aggiornare un file su un server remoto. Consente al client di inviare il contenuto del file nel corpo della richiesta, insieme agli header necessari per specificare il nome del file, la posizione e altri metadati.

To perform a PUT request in WebDAV, the client needs to send an HTTP request with the following format:

Per eseguire una richiesta PUT in WebDAV, il client deve inviare una richiesta HTTP con il seguente formato:

PUT /path/to/file HTTP/1.1
Host: example.com
Content-Type: text/plain
Content-Length: 123

File content goes here...

The PUT keyword indicates that it is a PUT request. The /path/to/file specifies the location and name of the file on the server. The Host header specifies the hostname of the server. The Content-Type header specifies the type of content being sent (e.g., text/plain for plain text). The Content-Length header specifies the length of the file content in bytes. Finally, the file content is included in the request body.

La parola chiave PUT indica che si tratta di una richiesta PUT. /path/to/file specifica la posizione e il nome del file sul server. L'header Host specifica il nome host del server. L'header Content-Type specifica il tipo di contenuto inviato (ad esempio, text/plain per testo normale). L'header Content-Length specifica la lunghezza del contenuto del file in byte. Infine, il contenuto del file è incluso nel corpo della richiesta.

PUT Method Security Considerations

Considerazioni sulla sicurezza del metodo PUT

When using the PUT method, it is important to consider security implications. If the server does not properly validate and sanitize the user input, it can lead to various security vulnerabilities, such as directory traversal, file overwriting, or even remote code execution.

Quando si utilizza il metodo PUT, è importante considerare le implicazioni sulla sicurezza. Se il server non convalida e sanifica correttamente l'input dell'utente, possono verificarsi varie vulnerabilità di sicurezza, come la traversa di directory, la sovrascrittura di file o addirittura l'esecuzione remota di codice.

To mitigate these risks, it is recommended to implement proper input validation and sanitization on the server-side. Additionally, access control mechanisms should be in place to restrict unauthorized users from performing PUT requests.

Per mitigare questi rischi, si consiglia di implementare una corretta convalida e sanificazione dell'input lato server. Inoltre, dovrebbero essere presenti meccanismi di controllo degli accessi per limitare gli utenti non autorizzati nell'esecuzione di richieste PUT.

Conclusion

Conclusioni

The PUT method is a powerful HTTP method used to create or update resources on a server. In WebDAV, it is commonly used to modify files on a remote server. However, it is important to consider security implications and implement proper safeguards to prevent potential vulnerabilities.

Il metodo PUT è un potente metodo HTTP utilizzato per creare o aggiornare risorse su un server. In WebDAV, viene comunemente utilizzato per modificare file su un server remoto. Tuttavia, è importante considerare le implicazioni sulla sicurezza e implementare le opportune protezioni per prevenire potenziali vulnerabilità.

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

Richiesta MOVE

The MOVE request is used to move a resource from one location to another on the server. It is commonly used in WebDAV (Web Distributed Authoring and Versioning) to move or rename files and directories.

La richiesta MOVE viene utilizzata per spostare una risorsa da una posizione all'altra sul server. Viene comunemente utilizzata in WebDAV (Web Distributed Authoring and Versioning) per spostare o rinominare file e directory.

curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'


Usa Trickest per creare facilmente e automatizzare flussi di lavoro supportati dagli strumenti comunitari più avanzati al mondo.
Ottieni l'accesso oggi stesso:

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

Vulnerabilità WebDav IIS5/6

Questa vulnerabilità è molto interessante. Il WebDav non permette di caricare o rinominare file con l'estensione .asp. Ma puoi aggirare questo problema aggiungendo alla fine del nome ";.txt" e il file verrà eseguito come se fosse un file .asp (puoi anche usare ".html" al posto di ".txt" ma NON dimenticare il ";").

Quindi puoi caricare la tua shell come file ".txt" e copiarla/spostarla in un file ".asp;.txt". Accedendo a quel file tramite il server web, verrà eseguito (cadaver dirà che l'azione di spostamento non ha funzionato, ma in realtà ha funzionato).

Credenziali di posta

Se il Webdav utilizzava un server Apache, dovresti cercare nei siti configurati in Apache. Comunemente:
/etc/apache2/sites-enabled/000-default

All'interno potresti trovare qualcosa come:

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

Come puoi vedere, ci sono i file con le credenziali valide per il server webdav:

/etc/apache2/users.password

All'interno di questo tipo di file troverai il nome utente e un hash della password. Queste sono le credenziali che il server webdav utilizza per autenticare gli utenti.

Puoi provare a craccarle, o aggiungerne altre se per qualche motivo desideri accedere al server webdav:

htpasswd /etc/apache2/users.password <USERNAME> #You will be prompted for the password

Per verificare se le nuove credenziali funzionano, puoi fare quanto segue:

wget --user <USERNAME> --ask-password http://domain/path/to/webdav/ -O - -q

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:


Usa Trickest per creare e automatizzare flussi di lavoro con gli strumenti comunitari più avanzati al mondo.
Ottieni l'accesso oggi stesso:

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