Archives Wild Code School
Cybersecurity

Fonctionnement du système WebDAV

Quête 6 sur 13

image

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.

  • WebDAV permet 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 serveur HTTP.

🤓 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) :

bash
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 :

bash
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).

bash
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.

bash
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>
  • -X permet de choisir la méthode en question, dans notre exemple c'était la méthode PUT.
  • -d contient 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 cas my_new_file.

image

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 MOVE pour modifier le nom d'un fichier (ou d'un dossier).
  • Ensuite, nous utilisons l'option -H pour le HTTP Header, et nous lui envoyons la destination pour le changement du fichier donc Destination: 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.

image

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.

↗
Configure WebDAV access with Apache
digitalocean.com
↗
Configure SSL WebDAV file access with authentication using Apache
confluence.jaytaala.com

☝️ Résumé

  • WebDAV est une extension du protocole HTTP qui permet aux utilisateurs de gérer des fichiers sur des serveurs distants.