Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

File Upload Vulnerability

hacking

Définition

Les vulnérabilités d'upload de fichiers permettent à un attaquant de téléverser des fichiers malveillants sur un serveur web, pouvant mener à l'exécution de code (via des webshells), au stockage de malwares pour la distribution, au défacement de sites web, et à d'autres attaques. Elles surviennent quand l'application ne valide pas correctement le type, le contenu ou la destination des fichiers uploadés. Les vecteurs d'exploitation incluent : l'upload d'un webshell PHP (si le serveur exécute PHP dans le répertoire d'upload), le bypass des validations basées sur l'extension (en renommant shell.php en shell.php.jpg, shell.php%00.jpg, shell.pHp, shell.php5, shell.phtml), le bypass de la validation MIME basée uniquement sur le Content-Type (l'en-tête HTTP peut être modifié par l'attaquant), l'injection de code dans les métadonnées d'images (EXIF, commentaires JPEG) parsées par des bibliothèques vulnérables, et le double-extension bypass (shell.jpg.php). Des techniques avancées incluent : l'upload de fichiers SVG contenant du JavaScript (XSS via image), l'upload de fichiers HTML (phishing stocké), le path traversal dans le nom de fichier (pour écrire dans un répertoire inattendu), et l'upload de fichiers archives (ZIP, tar) contenant des liens symboliques ou des chemins de traversée. L'impact d'un webshell PHP uploadé avec succès est la RCE : le webshell est accessible via HTTP et permet l'exécution de commandes OS arbitraires avec les permissions du processus web. Des webshells comme c99, r57, et b374k offrent des interfaces complètes de gestion. Des outils comme upload-scanner (Burp extension), weevely, et des listes de bypass d'extensions (SecLists Fuzzing/extensions) facilitent les tests d'upload.

Fonctionnement

Test d'upload : téléverser un fichier nommé shell.php avec Content-Type: image/jpeg contenant <?php system($_GET['cmd']); ?>. Si bloqué par extension, tester shell.phtml, shell.php5, shell.PHP, shell.php%00.jpg. Si bloqué par contenu, injecter dans les métadonnées EXIF : exiftool -Comment='<?php system($_GET["c"]);?>' image.jpg -o shell.jpg.php. Accéder au fichier uploadé via son URL et passer ?cmd=id. Weevely génère des webshells obfusqués : weevely generate PASSWORD shell.php.

Exploitation offensive

Les fonctionnalités d'upload (avatars, pièces jointes, imports CSV/XML) sont testées systématiquement dans tout pentest web. Un webshell PHP sur un serveur shared hosting peut mener à la compromission d'autres sites hébergés sur le même serveur (via l'accès au système de fichiers commun). Les CMS (WordPress, Joomla, Drupal) avec des plugins d'upload vulnérables ont été massivement exploités.

Détection et mitigation

Valider les fichiers par leur contenu réel (magic bytes), pas uniquement l'extension ou le Content-Type. Stocker les uploads hors du webroot ou dans un répertoire sans exécution PHP/script configurée. Renommer les fichiers uploadés avec des noms aléatoires. Utiliser un CDN ou un serveur de fichiers séparé pour servir les uploads. Les WAF avec détection de webshells (patterns PHP dans des images) ajoutent une couche de protection.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis