Un serveur de fichiers HTTP expose une arborescence de répertoires via HTTP pour la navigation et le téléchargement, et souvent pour le téléversement. Ils vont du serveur intégré en une ligne (le http.server de Python, le serveur intégré de PHP) à des applications dédiées (HFS HTTP File Server, diverses interfaces web de NAS et d'appliances). La surface est constante : listage de répertoire qui cartographie l'arborescence servie et révèle les fichiers, traversée de chemin qui s'échappe de la racine servie pour lire des fichiers arbitraires, et fonctionnalité de téléversement qui devient exécution de code lorsque le fichier téléversé atterrit dans un chemin que le serveur sert ou interprète.
# fingerprint the server and look for listing/upload
curl -sI http://<target>:<port>/ # Server header identifies the product
curl -s http://<target>:<port>/ # directory listing present?
curl -s -X OPTIONS http://<target>:<port>/ -i # methods (PUT => upload)
Sous-thèmes#
- Listage de répertoire : cartographier l'arborescence servie.
- Traversée de chemin : lire des fichiers hors de la racine servie.
- Téléversement de fichier vers RCE : transformer le téléversement en exécution de code.
- Exploits serveur connus : vulnérabilités de serveurs de fichiers propres à un produit.