Maison  >  Article  >  Les sujets  >  Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

coldplay.xixi
coldplay.xixiavant
2021-04-16 17:13:186512parcourir

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

1. Qu'est-ce qu'IIS

Internet Information Services (IIS, anciennement connu sous le nom d'Internet Information Server) Internet Information Services est un Microsoft Le serveur Web évolutif fourni par la société prend en charge HTTP, HTTP/2, HTTPS, FTP, FTPS, SMTP et NNTP, etc. Initialement utilisé dans la série Windows NT, il a ensuite été intégré à Windows 2000, Windows XP Professionnel, Windows Server 2003 et versions ultérieures, mais il n'y a pas d'IIS sur la version Windows XP Home. IIS n'est actuellement disponible que pour les systèmes Windows et non pour les autres systèmes d'exploitation.

Selon les données de Netcraft de février 2017, IIS détenait une part de marché de 10,19 % parmi les « millions de sites Web les plus fréquentés », devenant ainsi le troisième plus grand serveur Web au monde , derrière Apache à 41,41% et Nginx à 28,34%. Actuellement, les versions populaires de Windows ont le service IIS installé par défaut, mais en même temps, la sécurité d'IIS a été critiquée par l'industrie. Une fois qu'une vulnérabilité à haut risque apparaît dans IIS, la menace sera très sérieuse.

Recommandé (gratuit) : iis

Avant d'aborder les vulnérabilités d'IIS, comprenons d'abord la version IIS intégrée par défaut sous différents systèmes Windows . Afin de mieux comprendre et distinguer l'étendue de l'impact des vulnérabilités IIS :

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IISFigure 1 Version IIS par défaut de chaque version de Windows

2. Liste complète. des vulnérabilités IIS

Qianlimu Lab a collecté les vulnérabilités liées à IIS au cours des quinze dernières années. Il existe un total de 39 vulnérabilités à risque moyen et élevé, y compris la télécommande HTTP.sys (MS15-034). vulnérabilité d'exécution de code qui a éclaté en 2015 et 2016. La vulnérabilité d'élévation de privilèges WebDAV (MS16-016) est particulièrement répandue.

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Figure 2 Une liste complète des vulnérabilités IIS au cours des 15 dernières années

Après avoir lu les vulnérabilités IIS ci-dessus au cours des dix dernières années, vous vous demandez peut-être : pourquoi ne l'avez-vous pas vu ? Qu'en est-il du protagoniste de cet article, "IIS Short File Vulnerability" ? ! Avant de comprendre la famille de vulnérabilités IIS, nous découvrons d'abord certaines fonctionnalités d'IIS sous Windows via des fichiers courts IIS.

3. Fichier court IIS

1. L'origine de la vulnérabilité des fichiers courts IIS

Fichier/dossier court Microsoft IIS La fuite d'informations sur le nom a été découverte pour la première fois par Soroush Dalili de l'équipe de recherche sur les vulnérabilités le 1er août 2010, et le fournisseur (Microsoft Corporation) en a été informé le 3 août 2010. Microsoft a répondu le 1er décembre 2010 et le 4 janvier 2011 que la prochaine version serait corrigée. Le 29 juin 2012, cette vulnérabilité a été révélée publiquement (risque moyen).

Cette vulnérabilité est en fait causée par l'ancien tilde (~) de la convention de nom DOS 8.3 (SFN) dans les requêtes HTTP. Il permet aux attaquants distants d'exposer les noms de fichiers et de dossiers sous la racine Web (qui ne devrait pas être accessible). Un attaquant peut trouver des fichiers importants qui ne sont généralement pas directement accessibles de l'extérieur et obtenir des informations sur l'infrastructure de l'application.

La divulgation d'informations provoquée par le tilde Microsoft IIS est la vulnérabilité à risque moyen la plus courante sur les réseaux mondiaux. Ce problème existe depuis au moins 1990, mais s’est avéré difficile à détecter, difficile à résoudre ou facile à ignorer complètement.

2. Portée et dommages de la vulnérabilité des fichiers courts IIS

2.1 Versions concernées :

IIS 1.0, Windows NT 3.51
IIS 3.0, Windows NT 4.0 Service Pack 2
IIS 4.0, Windows NT 4.0 Option Pack
IIS 5.0, Windows 2000
IIS 5.1, Windows XP Professionnel et Windows XP Media Center Edition
IIS 6.0, Windows Server 2003 et Windows XP Professionnel Édition x64
IIS 7.0, Windows Server 2008 et Windows Vista
IIS 7.5, Windows 7 (activé à distance ou pas de fichier web.config)

IIS 7.5, Windows 2008 (mode pipeline classique)

Remarque : IIS n'est pas affecté lors de l'utilisation de .Net Framework 4

(Source de données ci-dessus : https:/ /www.securityfocus.com/archive/1/523424)

Il a été vérifié que la portée concernée ci-dessus concerne principalement la méthode HTTP GET et nécessite l'installation d'applications ASP.NET au niveau en même temps. Le découvreur de cette vulnérabilité a été divulgué à nouveau en 2014 : lors des tests d'IIS 7.5 (Windows 2008 R2) et IIS 8.0 (Windows 2012), lorsque OPTIONS est utilisé à la place de la méthode GET, si le nom de fichier court dans la requête existe, IIS A un message d'erreur différent sera renvoyé. Profitant de cette fonctionnalité, les attaquants peuvent mettre en œuvre une analyse de fichiers ou de répertoires basée sur des noms de fichiers courts dans la dernière version d'IIS.

Actuellement, IIS prend en charge six méthodes HTTP pour deviner les noms de fichiers courts : DEBUG, OPTIONS, GET, POST, HEAD et TRACE Verified by Qianlimu Laboratory, les noms de fichiers courts d'IIS 8.0, IIS 8.5 et IIS. 10.0 Les noms de fichiers peuvent être devinés avec succès grâce aux méthodes OPTIONS et TRACE. Par conséquent, les versions concernées ci-dessus doivent être ajoutées avec les versions suivantes :

IIS 8.0, Windows 8, Windows Server 2012

IIS 8.5, Windows 8.1, Windows Server 2012 R2

IIS 10.0, Windows 10, Windows Server 2016

On peut voir que toutes les versions d'IIS ont un problème de fuite de noms de fichiers courts, et Microsoft semble avoir ignoré ce problème. Il ressort de la réponse de Microsoft au découvreur de la vulnérabilité que la vulnérabilité du fichier court IIS ne répond pas aux normes de mise à jour de sécurité et qu'il doit déterminer quand elle sera résolue dans la prochaine version logique .

2.2 Risques de vulnérabilité :

2.2.1 Utilisation du caractère "~" pour deviner et exposer des noms de fichiers/dossiers courts (danger principal)

Prise en charge de Windows pour générer des noms de fichiers (courts) compatibles MS-DOS au format 8.3 pour permettre aux programmes MS-DOS ou Windows 16 bits d'accéder à ces fichiers. Entrez le répertoire racine du site Web IIS C:inetpubwwwroot sous cmd et entrez « dir /x » pour voir l'effet du nom de fichier court :

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Figure 3 Nom de fichier court IIS

L'image ci-dessus est le répertoire racine du site par défaut d'IIS 10.0 intégré à Windows 10. iisstart.htm et iisstart.png sont les fichiers par défaut du site Web. La longueur des caractères du préfixe du nom de fichier n'atteint pas 9 caractères. , il n'y a donc pas de nom de fichier court. IIS10test.html est un fichier de site Web ajouté manuellement. La longueur du préfixe du nom de fichier atteint 9 caractères et le nom de fichier court correspondant est IIS10T~1.HTM. Selon cette fonctionnalité, nous pouvons accéder indirectement à son fichier correspondant en accédant au nom court du fichier.

Étant donné que la longueur des noms de fichiers courts est fixe (xxxxxx~xxxx), les attaquants peuvent directement forcer brutalement les noms de fichiers courts pour accéder aux fichiers correspondants.

Par exemple, il existe un fichier de sauvegarde de base de données backup_20180101.sql, et son nom de fichier court correspondant est backup~1.sql. Par conséquent, l’attaquant peut télécharger le fichier en craquant brutalement backup~1.sql sans déchiffrer le nom complet du fichier.

Le nom de fichier court IIS a les caractéristiques suivantes :

1 Seuls les six premiers caractères sont affichés directement, et les caractères suivants sont désignés par ~1. . Le numéro 1 peut également être incrémenté s'il existe plusieurs fichiers avec des noms de fichiers similaires (les 6 premiers chiffres du nom doivent être les mêmes et les 3 premiers chiffres du suffixe doivent être les mêmes

) ; 2. Le nom du suffixe ne peut avoir qu'un maximum de 3 chiffres, ce qui est redondant et tronqué, les fichiers longs de plus de 3 caractères généreront des noms de fichiers courts

3.

4. Les noms de fichiers longs contiennent plusieurs ". », utilisez le dernier « » dans le nom de fichier comme suffixe court du nom de fichier ;

5. Le préfixe du nom de fichier long/nom de dossier. la longueur des caractères est conforme à la plage de 0 à 9 et Aa à Zz et doit être supérieure ou égale à 9 caractères. Un nom de fichier court sera généré s'il contient des espaces ou d'autres caractères spéciaux, un fichier court sera généré malgré tout. de la longueur ;

Nous pouvons utiliser la méthode GET pour énumérer violemment les noms de fichiers courts sous IIS avec .net activé. La raison est que l'attaquant utilise les caractères génériques "*" et "?" une requête vers IIS Lorsque IIS reçoit un chemin de fichier contenant une requête "~", sa réponse est différente, c'est-à-dire que le code d'état HTTP renvoyé et le message d'erreur sont différents. Sur la base de cette fonctionnalité, un fichier disponible ou indisponible peut être distingué en fonction de la réponse HTTP. Comme le montre la figure ci-dessous, la différence dans les informations renvoyées par les différentes versions d'IIS :

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Figure 4 IIS 5.0 ~ IIS 7.X, fichier court devinant les informations de réponse HTTP

L'image est une illustration des informations légales et illégales de réponse de devinette de fichier court IIS données par Soroush Dalili, le découvreur de cette vulnérabilité, dans son rapport de recherche :

L'accès à un nom de fichier court existant construit retournera 404 ;

L'accès à un nom de fichier court construit qui n'existe pas renverra 400 ;

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Figure 5 Utilisation du processus de devinette du code d'état IIS

La méthode ci-dessus consiste à utiliser la méthode GET pour deviner à plusieurs reprises dans une version inférieure de l'environnement IIS + ASP.NET jusqu'à ce que le nom de fichier court soit deviné.

Cependant, Qianlimu Lab a vérifié dans l'environnement réel que dans les versions supérieures d'IIS (telles que : IIS 8.0/IIS 8.5/IIS 10.0), même si asp.net n'est pas installé, via les OPTIONS et méthodes TRACE Vous pouvez deviner avec succès . Les types de codes d'état HTTP renvoyés par ces deux méthodes sont légèrement différents des captures d'écran ci-dessus, mais ils constituent une autre façon de les utiliser.

2.2.2 Attaque par déni de service .Net Framework (risque secondaire)

Selon les recherches de Soroush Dalili, si un attaquant envoie un fichier .Net illégal dans la demande de nom de dossier, .NeFramework effectuera une recherche récursive dans tous les répertoires racine, consommant les ressources du site Web et provoquant des problèmes DOS. Microsoft estime que ce risque est récupérable sous DOS et sera modifié dans les versions ultérieures du SP ; il ne sera donc pas abordé ici.

3. Reproduction et exploitation de la vulnérabilité des fichiers courts IIS 

3.1 Reproduction de la vulnérabilité des fichiers courts IIS

3.1.1 Construction de l'environnement de vulnérabilité

Installer IIS 10.0 par défaut basé sur Win 10 (APS.NET n'est pas installé)

Programme Java d'analyse des vulnérabilités des fichiers courts IIS (Java l'environnement doit être configuré (Variables)

3.1.2 Préparation au débogage de l'environnement de vulnérabilité

Une fois IIS installé avec succès, le répertoire intpub sera généré par défaut dans le répertoire du lecteur C. Le répertoire racine du site Web se trouve dans C:inetpubwwwroot. Vérifiez s'il existe un nom de fichier court dans le répertoire racine :

.

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Comme le montre l'image ci-dessus, le répertoire racine du site Web IIS 10.0 par défaut n'a pas de noms de fichiers courts, uniquement des fichiers htm et png par défaut, et la longueur du nom ne répond pas aux exigences pour générer des fichiers courts. Ce qui suit utilise l'analyseur de fichiers courts IIS pour détecter s'il existe une vulnérabilité de fuite d'informations sur les fichiers courts :

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

3.1.3 Reproduction de l'environnement de vulnérabilité

Manuellement créer des fichiers longs de site Web Nom "IIS10test.html", générer automatiquement le nom de fichier court correspondant "IIS10T~1.HTM"

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Utilisez le scanner de fichiers courts IIS pour numériser à nouveau, et l'analyse a révélé qu'il existe une vulnérabilité de fichier court et a réussi à deviner le nom du fichier court : IIS10T.HTM via la méthode HTTP OPTIONS. Il existe d'autres méthodes HTTP qui peuvent être devinées avec succès.

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

La vérification a révélé qu'en plus de la méthode OPTIONS, la méthode HTTP

TRACE

peut également deviner avec succès les noms de fichiers courts. Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

3.1.4 OPTIONS de vulnérabilité IIS et analyse de devinette de la méthode TRACE

Analyse de devinette de la méthode OPTIONS

Parce que la méthode OPTIONS ci-dessus a demandé 196 fois pour deviner le nom de fichier court, si le la supposition est réussie, 404 sera renvoyée. Si la supposition échoue, 200 sera renvoyée. Il existe de nombreuses combinaisons échouées, donc ce qui suit analyse principalement comment la requête avec une supposition réussie peut obtenir le nom de fichier court IIS10T.HTM via les OPTIONS. méthode. Comme indiqué ci-dessous :

Analyse de prédiction de la méthode TRACE

Le processus de deviner via la méthode TRACE est fondamentalement le même que ci-dessus, sauf que cette méthode HTTP Le code d'état renvoyé en cas d'échec de la tentative n'est pas 200, mais Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS501

(non exécuté).

3.

2

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS Vulnérabilité des fichiers courts IISExploiter1. profondeur Explosion pour deviner le nom complet du fichier Le nom de fichier court deviné via la vulnérabilité du fichier court IIS doit continuer à deviner le nom complet avant de pouvoir y accéder sur IIS, c'est-à-dire qu'IIS ne prend pas en charge accès aux noms de fichiers courts pour des raisons de sécurité. Voici plusieurs méthodes pour deviner le nom complet d'un fichier donné par Soroush Dalili :

1) En explorant le ou les sites Web cibles du même type, explorez et créez une bibliothèque de dictionnaires, puis utilisez le obtenu un nom de fichier court pour deviner les caractères restants ;

2) Utilisez fuzzdb (une base de données de fuzzing d'application) pour deviner

3) Combiné avec le dirbuster d'OWASP (un craquage par force brute de chemin et de page Web ; outils).

Un chercheur sur Github a implémenté la méthode ci-dessus en utilisant Python et a obtenu le nom d'utilisateur et le mot de passe du backend du site Web, en faisant bon usage de la vulnérabilité des fichiers courts d'IIS.

Remarque : Adresse du rapport de recherche : https://webbreacher.com/2014/10/23/tilde-enumeration/ (recommandé)

Téléchargement du programme Python : https://github.com /WebBreacher/tilde_enum (recommandé)

2. Combiné avec un logiciel prenant en charge les fonctionnalités de fichiers courts (Apache, WordPress)

La recherche Acunetix souligne que lorsqu'Apache s'exécute sous Windows, s'il s'agit d'un fichier long. est créé, alors pas besoin de deviner les fichiers longs, vous pouvez télécharger directement les fichiers courts. Par exemple, un fichier long de backup_20180101.sql contient un fichier court de BACKUP~1.SQL. Un attaquant n'a qu'à soumettre BACKUP~1.SQL pour accéder directement au fichier et le télécharger.

De plus, certains chercheurs ont déclaré qu'après avoir installé le plug-in de sauvegarde WordPress, ils avaient réussi à accéder au fichier de sauvegarde du blog WordPress via le nom de fichier court.

3. Contourner l'authentification de base et Windows

Les recherches de Soroush Dalilide ont également mentionné que sous certaines configurations de serveur IIS, l'authentification de base et Windows peut être contournée, en devinant le fichier du répertoire d'authentification. Par exemple, si vous devez accéder à un fichier dans un répertoire avec l'authentification activée, par exemple, ce répertoire est "AuthNeeded", vous pouvez y accéder de la manière suivante :

/AuthNeeded::$Index_Allocation/* ~1*/.aspx Ou

/AuthNeeded:$I30:$Index_Allocation/*~1*/.aspx

4

Limites de vulnérabilité des fichiers courts IIS

Cette vulnérabilité Il existe plusieurs limitations :

1) Cette vulnérabilité ne peut déterminer que les 6 premiers caractères. Si les caractères suivants sont trop longs ou contiennent des caractères spéciaux, il est difficile de les deviner . 2) Si le nom du fichier lui-même est trop court (pas de nom de fichier court) et ne peut pas être deviné

3) Si les 6 premiers chiffres du nom de fichier contiennent des espaces, le nom de fichier court dans le Le format 8.3 sera complété et ne correspond pas au vrai nom du fichier

;

4) Si les 6 premiers caractères du nom du dossier sont pointés par ".", le scanner pensera qu'il s'agit d'un fichier au lieu d'un dossier, et éventuellement une fausse alarme apparaîtra ;

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

Présentation du correctif pour la vulnérabilité de fuite de nom de fichier court IIS

5) Ne prend pas en charge les noms de fichiers chinois, y compris les fichiers chinois et les dossiers chinois. Un caractère chinois équivaut à deux caractères anglais, donc plus de 4 caractères chinois généreront un nom de fichier court, mais IIS ne prend pas en charge la supposition chinoise.

5. Solution de vulnérabilité des fichiers courts IIS

5.1 Solution générale de réparation des vulnérabilités

1) CMD ferme le format de fichiers NTFS 8.3 support

Exemple : (1 signifie désactivé, 0 signifie activé)

Windows Server 2008 R2 :

Demande si la fonction de nom de fichier court est activée :fsutil 8requête dot3name

Désactivez cette fonction : fsutil 8dot3name set 1

Windows Server 2003 :

Désactivez cette fonctionnalité : fsutil behavior set Disable8dot3 1

Les commandes d'arrêt des différents systèmes sont légèrement différentes. Cette fonction est activée par défaut et n'a pas besoin d'être activée pour la plupart des utilisateurs.

2) Modifiez le registre pour désactiver la fonction de nom de fichier court

Touche de raccourci Win+R pour ouvrir la fenêtre de commande, entrez regedit pour ouvrir la fenêtre de registre

Trouvez le chemin :

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem, définissez la valeur de NtfsDisable8dot3NameCreation sur 1, 1 signifie ne pas créer de format de nom de fichier court

Une fois la modification terminée, vous devez redémarrer le système pour prendre effet

Remarque : cette méthode uniquement. Elle peut interdire la création de noms de fichiers au format NTFS8.3. Les noms de fichiers courts des fichiers existants ne peuvent pas être supprimés et doivent être copiés à nouveau avant de disparaître.

Les deux méthodes suivantes ne conviennent que pour atténuer la méthode GET, d'autres méthodes peuvent encore être devinées.

3) Désactiver l'extension du service Web - ASP.NET

4) Mettre à niveau netFramework vers la version 4.0 ou supérieure

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer