Catching Files over HTTP/S

🔗 Protocole HTTP/S pour les transferts

Le transfert de fichiers via HTTP ou HTTPS est l'une des méthodes les plus répandues, notamment car ces protocoles sont généralement autorisés à travers les pare-feux. HTTPS apporte un avantage supplémentaire important : le chiffrement des données en transit, ce qui est essentiel pour éviter que des systèmes de détection d'intrusion (IDS) ne repèrent des fichiers sensibles circulant en clair.

L'utilisation d'un serveur web pour le transfert est donc particulièrement adaptée lors de tests d'intrusion. Nous avons déjà abordé l'utilisation du module uploadserver en Python3 pour créer un serveur avec des capacités de téléversement. Dans cette section, nous nous concentrerons sur la mise en place d'un serveur sécurisé pour le téléversement de fichiers avec Nginx.


🤖 Mise en place d'un serveur Nginx avec support PUT

🔧 Pourquoi choisir Nginx ?

Nginx est une bonne alternative à Apache, notamment parce que :

  • Sa configuration est plus simple.

  • Son système de modules est plus minimaliste, limitant les risques d'exécution involontaire de fichiers (ex. : les fichiers PHP avec Apache).

📂 Création du répertoire de téléversement

sudo mkdir -p /var/www/uploads/SecretUploadDirectory
sudo chown -R www-data:www-data /var/www/uploads/SecretUploadDirectory

📁 Configuration Nginx pour le téléversement

Créer le fichier /etc/nginx/sites-available/upload.conf avec le contenu suivant :

server {
    listen 9001;
    
    location /SecretUploadDirectory/ {
        root    /var/www/uploads;
        dav_methods PUT;
    }
}

➔ Activation du site

sudo ln -s /etc/nginx/sites-available/upload.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service

Si une erreur se produit, consulter les logs :

tail -2 /var/log/nginx/error.log

❌ Problème fréquent : port 80 déjà utilisé

ss -lnpt | grep 80
ps -ef | grep <PID>

Si Nginx entre en conflit avec un processus écoutant sur le port 80 (comme un serveur Python), supprimer la configuration par défaut :

sudo rm /etc/nginx/sites-enabled/default

🚀 Test de téléversement avec cURL

🔄 Envoi d'un fichier

curl -T /etc/passwd http://localhost:9001/SecretUploadDirectory/users.txt

🔍 Vérification du résultat

tail -1 /var/www/uploads/SecretUploadDirectory/users.txt

⚠️ Empêcher l'indexation des répertoires

Avec Apache, les répertoires sans fichier index.html listent leur contenu, ce qui pose un risque pour la discrétion. Nginx, en revanche, n'active pas cette fonctionnalité par défaut, ce qui constitue un avantage.


📚 Ressources utiles


Mis à jour