
dernière version des scanners pour la vulnérabilité de divulgation de noms de fichiers courts (8.3) d'IIS
Dernière présentation :
Dernier article de blog :
Je recommande à tout le monde d'essayer le nouvel outil de @bitquark en Go avant d'utiliser cet ancien outil : https://github.com/bitquark/shortscan
La dernière version du scanner pour la vulnérabilité de divulgation des noms de fichiers courts (8.3) d'IIS utilisant le caractère tilde (~). Ce problème a été découvert en 2010 mais a évolué plusieurs fois depuis.
C'est un ancien outil et le code est un véritable plat de spaghettis, mais il est capable de s'attaquer même au dernier IIS (IIS 10 sur Windows Server 2022 au moment de l'écriture de ceci) ! Il a récemment été mis à jour pour prendre en charge l'envoi de méthodes HTTP personnalisées sans astuces de réflexion en Java. Cependant, certains chercheurs formidables ont essayé de réimplémenter cet outil en utilisant d'autres technologies comme Go, et lorsqu'ils deviendront matures, ils fonctionneront probablement mieux que celui-ci.
Microsoft IIS contient une faille qui peut conduire à une divulgation non autorisée d'informations. Le problème est déclenché lors de l'analyse d'une requête contenant un caractère tilde (~). Cela peut permettre à un attaquant distant d'accéder aux noms de fichiers et de dossiers.
Ce scanner a été déplacé de https://code.google.com/p/iis-shortname-scanner-poc/ vers GitHub pour un meilleur support.
Fichier de recherche original : http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Il est possible de détecter les noms courts des fichiers et répertoires qui ont un équivalent 8.3 dans Windows en utilisant certains vecteurs dans plusieurs versions de Microsoft IIS. Par exemple, il est possible de détecter tous les noms courts des fichiers ".aspx" car ils ont 4 lettres dans leurs extensions.
Remarque : de nouvelles techniques ont été introduites dans les dernières versions de ce scanner, et il peut désormais scanner IIS10 lorsqu'il est vulnérable.
Il n'est pas facile de trouver les noms de fichiers ou dossiers originaux à partir des noms courts. Cependant, les méthodes suivantes sont recommandées à titre d'exemple :
La version récente a été compilée en utilisant Open JDK 18 (les anciens fichiers jar pour d'autres JDK ont été supprimés mais peuvent être trouvés dans l'historique Git).
Vous devrez télécharger les fichiers dans le répertoire /release pour utiliser cette ancienne application !
Vous pouvez également compiler cette application vous-même. Veuillez soumettre tout problème sur GitHub pour une enquête plus approfondie.
UTILISATION 1 (Pour vérifier si la cible est vulnérable avec le fichier de configuration par défaut) :
java -jar iis_shortname_scanner.jar [URL]
UTILISATION 2 (Pour trouver les noms de fichiers 8.3 avec le fichier de configuration par défaut) :
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
UTILISATION 3 (Pour vérifier si la cible est vulnérable avec un nouveau fichier de configuration) :
java -jar iis_shortname_scanner.jar [URL] [configFile]
UTILISATION 4 (Pour trouver les noms de fichiers 8.3 avec un nouveau fichier de configuration) :
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
UTILISATION 5 (Pour scanner plusieurs cibles en utilisant une machine Linux) :
./multi_targets.sh <scope file> <is_default_https (1=https)>
DÉTAILS :
[ShowProgress]: 0= Afficher uniquement les résultats finaux - 1= Afficher les résultats finaux étape par étape - 2= Afficher la progression
[ThreadNumbers]: 0= Pas de thread - Nombre entier = Nombre de threads simultanés [attention au déni de service IIS]
[URL]: Une URL complète - commence par le protocole http/https
[configFile]: chemin vers un nouveau fichier de configuration basé sur config.xml
Exemples :
- Exemple 0 (pour voir si la cible est vulnérable) :
java -jar iis_shortname_scanner.jar http://example.com/folder/
- Exemple 1 (utilise aucun thread - très lent) :
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- Exemple 2 (utilise 20 threads - recommandé) :
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- Exemple 3 (enregistre la sortie dans un fichier texte) :
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- Exemple 4 (contourne l'authentification de base IIS) :
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- Exemple 5 (en utilisant un nouveau fichier de configuration) :
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- Exemple 6 (scanning de plusieurs cibles en utilisant une machine Linux) :
./multi_targets.sh scope.txt 1
Remarque 1 : Modifiez le fichier config.xml pour changer les paramètres du scanner et ajouter des en-têtes supplémentaires. Remarque 2 : Parfois, cela ne fonctionne pas du premier coup et vous devez réessayer.
Dans les exemples suivants, IIS répond avec un message différent lorsqu'un fichier existe :
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
Cependant, différents serveurs IIS peuvent répondre différemment, et par exemple certains peuvent fonctionner avec les modèles suivants ou d'autres similaires :
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
La méthode d'envoi de la requête telle que GET, POST, OPTIONS, DEBUG, ... est également importante.
Je crois que surveiller les requêtes à l'aide d'un proxy est la meilleure façon de comprendre ce problème et ce scanner.
Microsoft ne corrigera pas ce problème de sécurité. Leur dernière réponse est la suivante :
Merci d'avoir contacté le Microsoft Security Response Center. Nous apprécions que vous ayez porté cela à notre attention. Nos recommandations précédentes restent valables : déployez IIS avec les noms 8.3 désactivés.
Par conséquent, il est recommandé de déployer IIS avec les noms 8.3 désactivés en créant la clé de registre suivante sur un système d'exploitation Windows :
Key: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Name: NtfsDisable8dot3NameCreation
Value: 1
Remarque : Le dossier Web doit être recréé, car la modification de l'entrée de registre NtfsDisable8dot3NameCreation n'affecte que les fichiers et répertoires créés après la modification, donc les fichiers déjà existants ne sont pas affectés.
construire l'image :
docker build . -t shortname
mode fichier :
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
mode unique :
docker run shortname 2 20 http://example.com
écraser le fichier de configuration :
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://example.com
Liens de recherche :
Référence Web :
Vidéos :
Autres liens :