Fonctionnement du système WebDAV

Introduction
Dans cet article, nous verrons comment installer et configurer le protocole WebDAV, et comment envoyer, supprimer.. des fichiers à l'aide de ce protocole là, tout à distance ! Avec une simple requête avec BurpSuite ou cURL, il est tout à fait possible d'envoyer un fichier sur le serveur distant, ou même supprimer.
WebDAVpermet de simplifier la gestion de fichiers avec des serveurs distants. Il permet de récupérer, déposer, synchroniser et publier des fichiers rapidement et facilement dans un serveurHTTP.
🤓 Objectifs
✅ Configurer le protocole WebDAV.
✅ Comprendre le fonctionnement du protocole WebDAV.
✅ Réussir à envoyer des fichiers, supprimer, etc.. à l'aide du protocole WebDAV.
👉 Configuration du protocole WebDAV
Pour commencer, nous devons déjà activer le protocole WebDAV dans notre système, donc, il suffit de taper uniquement les commandes ci-dessous pour l'activer (Il est important d'être root pour exécuter les commandes ci-dessous) :
root@ubuntu:/root# a2enmod dav
Enabling module dav.
To activate the new configuration, you need to run:
systemctl restart apache2
root@ubuntu:/root# a2enmod dav_fs
Module dav already enabled
Enabling module dav_fs.
To activate the new configuration, you need to run:
systemctl restart apache2
Enfin, il est nécessaire de redémarrer le service pour actualiser la configuration de notre système dans le serveur en utilisant la commande ci-dessous :
root@ubuntu:/root# systemctl restart apache2
Nous allons créer un nouveau dossier dans le dossier /var/www/html, où le protocole WebDAV travaillera dessus, c'est-à-dire que il sera uniquement possible d'envoyer des fichiers, supprimer, copier etc.. Et aussi lui donner les permissions nécessaires d'écriture, et j'en passe etc.. (nécessite d'être root encore une fois).
root@ubuntu:/root# mkdir /var/www/html/www
root@ubuntu:/root# chown -R www-data: /var/www/html
root@ubuntu:/root# chmod -R 777 /var/www/html/www
Il nous reste encore une dernière chose à faire, c'est de configurer le chemin du protocole WebDAV pour qu'il communique uniquement avec le dossier /var/www/html/www pour des raisons de sécurité. Nous devrons modifier le fichier /etc/apache2/sites-enabled/000-default.conf, nous ajouterons uniquement 3 lignes dedans la balise <VirtualHost>.
<Directory /var/www/html/www>
DAV On
</Directory>
Finalement, il nous reste plus que à redémarrer le service apache2 pour actualiser nos configurations du serveur.
root@ubuntu:/root# systemctl restart apache2
👉 Utilisation des méthodes avec le protocole WebDAV
Nous pouvons par exemple essayer de créer un fichier dans le serveur en utilisant la commande cURL depuis notre Terminal.
root@ubuntu:/root# curl -X PUT -d "Hello World" http://127.0.0.1/www/my_new_file
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>201 Created</title>
</head><body>
<h1>Created</h1>
<p>Resource /www/my_new_file has been created.</p>
<hr />
<address>Apache/2.4.46 (Debian) Server at 127.0.0.1 Port 80</address>
</body></html>
-Xpermet de choisir la méthode en question, dans notre exemple c'était la méthodePUT.-dcontient les données de notre fichier.- Et enfin, l'
URL, et à la fin, il suffit simplement de mettre le nom du fichier que tu souhaites créer, dans notre casmy_new_file.

Il est également possible de modifier le nom de notre fichier à l'aide de la méthode MOVE, nous allons essayer de remplacer notre nom de fichier par web_dav_test.
curl -X MOVE http://127.0.0.1/www/my_new_file -H "Destination: http://127.0.0.1/www/web_dav_test"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>201 Created</title>
</head><body>
<h1>Created</h1>
<p>Destination /www/web_dav_test has been created.</p>
<hr />
<address>Apache/2.4.46 (Debian) Server at 127.0.0.1 Port 80</address>
</body></html>
- Nous avons utilisé la méthode
MOVEpour modifier le nom d'un fichier (ou d'un dossier). - Ensuite, nous utilisons l'option
-Hpour leHTTP Header, et nous lui envoyons la destination pour le changement du fichier doncDestination: http://127.0.0.1/www/web_dav_test.
Et, si je réactualise la page pour voir si le nom du fichier a bien été modifier, nous pouvons voir que cela fonctionne parfaitement.

Voici la liste complète des méthodes disponibles :
| Méthode | Description |
|---|---|
| COPY | Copie la ressource. |
| DELETE | Supprime la ressource. |
| LOCK | Verrouille la ressource. |
| MKCOL | Crée un dossier spécifiée. |
| MOVE | Déplace la ressource. |
| PROPFIND | Effectue une recherche de propriété sur le serveur. |
| PROPPATCH | Définit ou supprime des propriétés sur le serveur. |
| PUT | Place le contenu de la ressource sur le serveur à l'emplacement spécifié. |
| UNLOCK | Déverrouille la ressource. |
Tu peux encore aller plus loin en mettant par exemple une authentification basée sur un dossier, ou bien d'utiliser le protocole SSL en regardant les ressources ci-dessous.
☝️ Résumé
- WebDAV est une extension du protocole HTTP qui permet aux utilisateurs de gérer des fichiers sur des serveurs distants.