1. Was ist IIS
Internet Information Services (IIS, früher bekannt als Internet Information Server) Internet Information Services ist ein erweiterbarer Webserver von Microsoft, der HTTP, HTTP/2, HTTPS, FTP unterstützt. FTPS, SMTP und NNTP usw. Ursprünglich in der Windows NT-Serie verwendet, wurde es später in Windows 2000, Windows XP Professional, Windows Server 2003 und nachfolgende Versionen integriert, in der Windows XP Home-Version gibt es jedoch kein IIS. IIS ist derzeit nur für Windows-Systeme verfügbar und nicht für andere Betriebssysteme.
Laut Daten von Netcraft im Februar 2017 hatte IIS einen Marktanteil von 10,19 % unter den „Millions of Busiest Websites“ und ist damit der „drittgrößte Webserver der Welt“ hinter Apache 41,41 % und Nginx 28,34 %. . Derzeit ist in den beliebten Windows-Versionen der IIS-Dienst standardmäßig installiert, aber gleichzeitig wird die Sicherheit von IIS von der Industrie kritisiert. Sobald eine Sicherheitslücke mit hohem Risiko in IIS auftritt, wird die Bedrohung sehr ernst sein.
Empfohlen (kostenlos):iisBevor wir uns mit IIS-Schwachstellen befassen, wollen wir zunächst die standardmäßig integrierten IIS-Versionen unter verschiedenen Windows-Systemen verstehen, um den Umfang der Auswirkungen von IIS-Schwachstellen besser zu verstehen und zu unterscheiden:
Abbildung 1 Die Standard-IIS-Version jeder Windows-Version
2.
Qianlimu Lab hat in den letzten fünfzehn Jahren IIS-bezogene Schwachstellen gesammelt, und es gibt insgesamt 39 Schwachstellen mit mittlerem und hohem Risiko Besonders weit verbreitet sind die Sicherheitslücken, die innerhalb von 15 Jahren aufgetreten sind (die Sicherheitslücke MS15-034 HTTP.sys zur Remotecodeausführung und die Sicherheitslücke 2016 (MS16-016) bezüglich der Eskalation von WebDAV-Berechtigungen).
Abbildung 2 Eine vollständige Liste der IIS-Schwachstellen der letzten 15 Jahre
Nachdem Sie die oben genannten IIS-Schwachstellen der letzten zehn Jahre gelesen haben, fragen Sie sich vielleicht, warum Sie den Protagonisten dieses Artikels, „IIS“, nicht gesehen haben kurze Datei-Schwachstelle“? ! Bevor wir die IIS-Schwachstellenfamilie verstehen, lernen wir zunächst einige Funktionen von IIS unter Windows anhand von IIS-Kurzdateien kennen.
3.
IIS-Kurzdatei1. Der Ursprung der IIS-Kurzdatei-/Ordnernamen-Sicherheitslücke wurde erstmals 2010 von Soroush Dalili vom Vulnerability Research Team entdeckt 1, und der Anbieter (Microsoft Corporation) wurde am 3. August 2010 benachrichtigt. Microsoft antwortete am 1. Dezember 2010 und 4. Januar 2011, dass die nächste Version behoben werden würde. Am 29. Juni 2012 wurde diese Schwachstelle öffentlich bekannt gegeben (mittleres Risiko).
Diese Schwachstelle wird tatsächlich durch die alte DOS 8.3 Name Convention (SFN)-Tilde (~) in HTTP-Anfragen verursacht. Es ermöglicht Remote-Angreifern, Datei- und Ordnernamen im Web-Root (auf den nicht zugegriffen werden sollte) offenzulegen. Ein Angreifer kann wichtige Dateien finden, die normalerweise nicht direkt von außen zugänglich sind, und Informationen über die Anwendungsinfrastruktur erhalten.
Informationslecks durch Microsoft IIS Tilde sind die häufigste Schwachstelle mit mittlerem Risiko in den Netzwerken der Welt. Dieses Problem besteht seit mindestens 1990, hat sich jedoch als schwer zu erkennen, schwer zu lösen oder leicht ganz zu ignorieren erwiesen. S2.IIS kurze Datei-Schwachstelle
2.1 Betroffene Version:
IIS 4.0, Windows NT 4.0 Option Packs IIS 5.0 , Windows 2000 IIS 5.1, Windows XP Professional und Windows XP Media Center Edition
IIS 6.0, Windows Server 2003 und Windows XP Professional x64 EditionIIS 7.0, Windows Server 2008 und Windows VistaDerzeit unterstützt IIS sechs HTTP-Methoden zum Erraten kurzer Dateinamen: DEBUG, OPTIONS, GET, POST, HEAD und TRACE. Das Qianlimu Laboratory hat bestätigt, dass die kurzen Dateinamen von IIS 8.0, IIS 8.5 und IIS 10.0 können alle mit den Methoden OPTIONS und TRACE verwendet werden. Daher müssen die oben genannten betroffenen Versionen mit den folgenden Versionen hinzugefügt werden:IIS 7.5, Windows 7 (Remoteaktivierung oder keine web.config)
https: //www.securityfocus .com/archive/1/523424)
IIS 7.5, Windows 2008 (klassischer Pipeline-Modus)
Hinweis: IIS ist bei Verwendung von .Net Framework 4
nicht betroffen (obige Datenquelle:Es wurde bestätigt, dass der oben genannte betroffene Bereich hauptsächlich für die HTTP-GET-Methode gilt und gleichzeitig die Installation von ASP.NET-Anwendungen erfordert. Der Entdecker dieser Schwachstelle hat 2014 erneut offengelegt: Beim Testen von IIS 7.5 (Windows 2008 R2) und IIS 8.0 (Windows 2012), wenn OPTIONS anstelle der GET-Methode verwendet wird und der kurze Dateiname in der Anfrage vorhanden ist, IIS A Es wird eine andere Fehlermeldung zurückgegeben. Mithilfe dieser Funktion können Angreifer Datei- oder Verzeichnisscans basierend auf kurzen Dateinamen in der neuesten IIS-Version implementieren.
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
Es ist ersichtlich, dass alle IIS-Versionen das Problem des Verlusts kurzer Dateinamen haben, und Microsoft scheint dieses Problem ignoriert zu haben. Aus der Antwort von Microsoft an den Entdecker der Sicherheitslücke geht hervor, dass die Sicherheitslücke in IIS-Kurzdateien nicht den Sicherheitsupdatestandards entspricht und ermittelt werden muss, wann sie in der nächsten „logischen Version“ behoben wird.
2.2 Gefahren durch Sicherheitslücken:2.2.1 Verwenden Sie das Zeichen „~“, um kurze Datei-/Ordnernamen zu erraten und anzuzeigen (Hauptgefahr)
Windows unterstützt die Generierung von (kurzen) Dateinamen, die mit MS-DOS in der Version 8.3 kompatibel sind formatieren, um MS-DOS oder 16-Bit-Windows-basierten Programmen den Zugriff auf diese Dateien zu ermöglichen. Geben Sie unter cmd das Stammverzeichnis der IIS-Website C:inetpubwwwroot ein und geben Sie „dir /x“ ein, um die Auswirkung des kurzen Dateinamens zu sehen:
Abbildung 3 IIS-Kurzdateiname
Das Bild oben zeigt das standardmäßig erstellte IIS 10.0 In Windows 10 sind iisstart.htm und iisstart.png im Stammverzeichnis der Website die Standarddateien der Website. Die Länge der Dateinamen-Präfixzeichen beträgt nicht 9 Zeichen, daher gibt es keinen kurzen Dateinamen. IIS10test.html ist eine manuell hinzugefügte Website-Datei. Die Zeichenlänge des Dateinamens beträgt 9 Zeichen, und der entsprechende kurze Dateiname lautet IIS10T~1.HTM. Gemäß dieser Funktion können wir indirekt auf die entsprechende Datei zugreifen, indem wir auf den kurzen Dateinamen zugreifen.
Da die Länge kurzer Dateinamen festgelegt ist (
xxxxxx~xxxx), können Angreifer die kurzen Dateinamen direkt brutal erzwingen, um auf die entsprechenden Dateien zuzugreifen. Zum Beispiel gibt es eine Datenbanksicherungsdatei „backup_20180101.sql“ und der entsprechende kurze Dateiname lautet „backup~1.sql“. Daher kann der Angreifer die Datei durch Brute-Force-Knacken von „backup~1.sql“ herunterladen, ohne den vollständigen Dateinamen zu knacken.
IIS-Kurzdateiname hat die folgenden Eigenschaften:1 Nur die ersten sechs Zeichen werden direkt angezeigt, und auf nachfolgende Zeichen wird mit ~1 verwiesen. Die Nummer 1 kann auch erhöht werden, wenn mehrere Dateien mit ähnlichen Dateinamen vorhanden sind (die ersten 6 Ziffern des Namens müssen gleich sein und die ersten 3 Ziffern des Suffixnamens müssen gleich sein); Der Name hat eine maximale Länge von 3 Ziffern und der Überschuss wird abgeschnitten. Alle Kleinbuchstaben werden in Großbuchstaben umgewandelt mehrere „.“ und das letzte „.“ im Dateinamen wird als kurzes Dateinamensuffix verwendet
Zugriff auf a Der Zugriff auf einen konstruierten kurzen Dateinamen, der nicht existiert, gibt 400 zurück; Abbildung 5 Der Prozess zum Erraten des Statuscodes mithilfe von IISDie obige Methode ist zu verwenden die GET-Methode in einer niedrigeren Version von IIS + ASP.NET-Umgebung, um wiederholt in einer Schleife zu raten, bis der kurze Dateiname erraten ist. Das Qianlimu-Labor hat jedoch in einer realen Umgebung überprüft, dass Sie in höheren Versionen von IIS (z. B. IIS 8.0/IIS 8.5/IIS 10.0), auch wenn asp.net nicht installiert ist,5. 9 und Aa-Zz und erfordert mehr als oder gleich 9 Zeichen, um einen kurzen Dateinamen zu generieren, unabhängig von der Länge.
Wir können GET verwenden Methode zur Brute-Force-Aufzählung kurzer Dateinamen unter IIS mit aktiviertem .net. Der Grund dafür ist, dass der Angreifer die Platzhalter „*“ und „?“ verwendet, um eine Anfrage an IIS zu senden , seine Antwort ist unterschiedlich, das heißt, der zurückgegebene HTTP-Statuscode und die Fehlermeldung sind unterschiedlich. Basierend auf dieser Funktion kann anhand der HTTP-Antwort eine verfügbare oder nicht verfügbare Datei unterschieden werden. Wie in der folgenden Abbildung dargestellt, ist der Unterschied in den von verschiedenen IIS-Versionen zurückgegebenen Informationen:Abbildung 4 IIS 5.0 ~ IIS 7. Die Abbildung der legalen und illegalen IIS-Kurzdatei-Antwortinformationen wird dargestellt:
Sie mithilfe der OPTIONEN und TRACE erfolgreich raten können Methoden
. Die von diesen beiden Methoden zurückgegebenen HTTP-Statuscodetypen unterscheiden sich geringfügig von den obigen Screenshots, bieten jedoch eine andere Möglichkeit, sie zu verwenden.2.2.2 Denial-of-Service-Angriff auf das .Net Framework (Nebengefahr)
Laut einer Untersuchung von Soroush Dalili durchsucht .NeFramework rekursiv das gesamte Stammverzeichnis, wenn ein Angreifer eine illegale .Net-Dateianforderung im Ordnernamen sendet, was viel Zeit in Anspruch nimmt Website-Ressourcen und verursacht DOS-Probleme. Microsoft geht davon aus, dass diese Gefahr unter DOS behebbar ist und in nachfolgenden SP-Versionen geändert wird, sodass sie hier nicht besprochen wird.
3.
Wiedergabe und Ausnutzung von Sicherheitslücken in kurzen IIS-DateienInstallieren Sie den Standard-IIS 10.0 basierend auf Win 10 (APS ist nicht installiert. NET)
IIS kurzes Java-Programm zum Scannen von Dateischwachstellen (Java-Umgebungsvariablen müssen konfiguriert werden)
3.1.2 Vorbereitung für das Debuggen der SchwachstellenumgebungWie aus dem obigen Bild ersichtlich ist, verfügt das Standard-Stammverzeichnis der IIS 10.0-Website nicht über kurze Dateinamen, sondern nur über Standard-HTM- und PNG-Dateien, und die Namenslänge entspricht nicht den Anforderungen zum Generieren kurzer Dateien. Im Folgenden wird der IIS-Kurzdateiscanner verwendet, um zu erkennen, ob eine Sicherheitsanfälligkeit bezüglich Informationslecks in kurzen Dateien vorliegt:
3.1.3 Reproduktion der Schwachstellenumgebung
Erstellen Sie manuell den langen Dateinamen der Website „IIS10test.html“. und generiert automatisch den entsprechenden kurzen Dateinamen „IIS10T~1.HTM“
Beim erneuten Scannen mit dem IIS-Kurzdateiscanner wurde festgestellt, dass eine Sicherheitslücke in einer kurzen Datei besteht, und der kurze Dateiname wurde erfolgreich erraten die HTTP OPTIONS-Methode: IIS10T.HTM
Ändern Sie den Schwachstellenscanner, achten Sie auf die OPTIONS-Methode und versuchen Sie herauszufinden, ob es andere HTTP-Methoden gibt, die erfolgreich erraten werden können.
Die Überprüfung ergab, dass zusätzlich zur OPTIONS-Methode auch die HTTP-Methode TRACE kurze Dateinamen erfolgreich erraten kann.
3.1.4 Vermutungsanalyse der OPTIONS- und TRACE-Methode für IIS-Schwachstellen
Vermutungsanalyse der OPTIONS-Methode
Da die obige OPTIONS-Methode 196 Mal zum Erraten des kurzen Dateinamens angefordert hat, gibt der Ratenerfolg 404 und der Ratenfehler 200 zurück. Dort Da es viele fehlgeschlagene Kombinationen gibt, wird im Folgenden hauptsächlich analysiert, wie die 404-vermutete erfolgreiche Anfrage über die OPTIONS-Methode den kurzen Dateinamen IIS10T.HTM erhält. Wie unten gezeigt:
TRACE-Methoden-Schätzungsanalyse
Der Prozess des Erratens mithilfe der TRACE-Methode ist grundsätzlich derselbe wie oben, außer dass der zurückgegebene Statuscode nicht 200 ist, wenn die HTTP-Methode fehlschlägt 501 (nicht ausgeführt).
3.2 IIS-Kurzdatei-SicherheitslückeExploit
1. Ausführliche Suche, um den vollständigen Namen der Datei zu erraten
Der kurze Dateiname wurde durch die IIS-Kurzdatei-Sicherheitslücke erraten, Sie Sie müssen weiterhin den vollständigen Namen erraten. Der Zugriff kann über IIS erfolgen, d. h. IIS unterstützt aus Sicherheitsgründen keinen Zugriff auf kurze Dateinamen. Im Folgenden finden Sie mehrere Methoden zum Erraten des vollständigen Namens einer von Soroush Dalili angegebenen Datei:
1) Crawlen Sie die Zielwebsite oder Websites desselben Typs, kriechen Sie heraus und erstellen Sie eine Wörterbuchbibliothek, und verwenden Sie dann den erhaltenen kurzen Dateinamen um die restlichen Zeichen zu erraten;
2) Verwenden Sie fuzzdb (eine Anwendungs-Fuzzing-Datenbank), um zu erraten;
3) Kombiniert mit OWASPs Dirbuster (einem Pfad- und Webseiten-Brute-Force-Cracking-Tool).
Ein Forscher auf Github hat die obige Methode mit Python implementiert und den Benutzernamen und das Passwort des Website-Backends erhalten, wobei er die IIS-Sicherheitslücke in kurzen Dateien gut ausgenutzt hat.
Hinweis: Adresse des Forschungsberichts: https://webbreacher.com/2014/10/23/tilde-enumeration/ (empfohlen)
Python-Programm-Download: https://github.com/WebBreacher/tilde_enum (empfohlen)
2. In Kombination mit Software, die Funktionen für kurze Dateien unterstützt (Apache, WordPress)
Acunetix-Untersuchungen zeigen, dass bei der Ausführung von Apache unter Windows keine Notwendigkeit besteht, die lange Datei zu erraten, sondern die kurze Die Datei kann direkt heruntergeladen werden. Beispielsweise enthält eine lange Datei „backup_20180101.sql“ eine kurze Datei „BACKUP~1.SQL“. Ein Angreifer muss nur „BACKUP~1.SQL“ übermitteln, um direkt auf die Datei zuzugreifen und sie herunterzuladen.
Darüber hinaus haben einige Wissenschaftler gezeigt, dass sie nach der Installation des WordPress-Backup-Plug-Ins über den kurzen Dateinamen erfolgreich auf die Backup-Datei des WordPress-Blogs zugegriffen haben.
3. Basis- und Windows-Authentifizierung umgehen
Soroush Dalilide hat in seiner Untersuchung auch erwähnt, dass unter bestimmten IIS-Serverkonfigurationen die Basis- und Windows-Authentifizierung umgangen werden kann und die Dateien im Authentifizierungsverzeichnis erraten werden können. Wenn Sie beispielsweise auf eine Datei in einem Verzeichnis mit aktivierter Authentifizierung zugreifen müssen, beispielsweise dieses Verzeichnis „AuthNeeded“ ist, können Sie auf folgende Weise darauf zugreifen:
/AuthNeeded::$Index_Allocation/*~1*/ .aspx oder
/AuthNeeded :$I30:$Index_Allocation/*~1*/.aspx
Diese Sicherheitslücke weist die folgenden Einschränkungen auf:
1) Diese Sicherheitslücke kann nur ermittelt werden die ersten 6 Zeichen, wenn die folgenden Zeichen zu lang sind oder Sonderzeichen enthalten, ist es schwierig zu erraten
2) Wenn der Dateiname selbst zu kurz ist (kein kurzer Dateiname), ist es auch unmöglich, ihn zu erraten;
3) Wenn die ersten 6 Ziffern des Dateinamens Leerzeichen enthalten, wird der kurze Dateiname im 8.3-Format ergänzt und stimmt nicht mit dem tatsächlichen Dateinamen überein4) Wenn die ersten 6 Zeichen des Ordnernamens mit „.“ versehen sind, geht der Scanner davon aus, dass es sich um eine Datei und nicht um einen Ordner handelt, und es wird möglicherweise ein Fehlalarm angezeigt 5) Chinesische Dateinamen werden nicht unterstützt. Chinesische Dateien und chinesische Ordner werden nicht unterstützt. Ein chinesisches Zeichen entspricht zwei englischen Zeichen, sodass bei mehr als vier chinesischen Zeichen ein kurzer Dateiname generiert wird. IIS unterstützt das Erraten von Chinesisch jedoch nicht.
5.IIS Short File Vulnerability Solution
5.1 Universal Vulnerability Fix Solution
1) CMD deaktiviert die Unterstützung für das NTFS 8.3-DateiformatAbfrage, ob die Funktion für kurze Dateinamen aktiviert ist:
fsutil
8
Der Befehl zum Herunterfahren unterscheidet sich geringfügig in verschiedenen Systemen. Diese Funktion ist standardmäßig aktiviert und muss für die meisten Benutzer nicht aktiviert werden .dot3name queryDiese Funktion ausschalten: fsutil 8dot3name set. 1 Windows Server 2003:
Diese Funktion ausschalten: fsutil behaviour set unlock8dot3 1
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem. Setzen Sie den Wert von NtfsDisable8dot3NameCreation auf 1 , 1 bedeutet, dass kein kurzes Dateinamenformat erstellt wird Nachdem die Änderung abgeschlossen ist, müssen Sie das System neu starten, damit sie wirksam wird Hinweis: Diese Methode kann nur die Erstellung von Dateinamen im NTFS8.3-Format verhindern der vorhandenen Dateien können nicht entfernt werden und müssen neu gestartet werden. Die Kopie verschwindet. Die folgenden beiden Methoden eignen sich nur zur Abschwächung der GET-Methode, andere Methoden können noch erraten werden. 3) Deaktivieren Sie die Webdiensterweiterung – ASP.NET4) Aktualisieren Sie netFramework auf Version 4.0 oder höher2) Ändern Sie die Registrierung, um die Funktion für kurze Dateinamen zu deaktivieren. Tastenkombination Win+R, um das Befehlsfenster zu öffnen. Geben Sie regedit ein, um das Registrierungsfenster zu öffnen. Suchen Sie den Pfad:
Das obige ist der detaillierte Inhalt vonEinführung des Fixes für die Sicherheitslücke bezüglich des Durchsickerns kurzer IIS-Dateinamen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!