
Neueste Version von Scannern für die IIS-Short-Filename-(8.3)-Offenlegungsschwachstelle
Neuester Vortrag:
Neuester Blogbeitrag:
Ich empfehle allen, zuerst @bitquarks neues Tool in Go auszuprobieren, bevor Sie dieses alte Tool verwenden: https://github.com/bitquark/shortscan
Die neueste Version des Scanners für die IIS-Kurznamens-Offenlegung (8.3) unter Verwendung des Tilde-Zeichens (~). Dieses Problem wurde 2010 entdeckt, hat sich aber seitdem mehrmals weiterentwickelt.
Dies ist ein altes Tool und der Code ist ein Spaghettihaufen, aber es kann selbst die neuesten IIS-Versionen (IIS 10 unter Windows Server 2022 zum Zeitpunkt des Schreibens) bewältigen! Es wurde kürzlich aktualisiert, sodass es benutzerdefinierte HTTP-Methoden ohne Reflektion-Hacks in Java unterstützen kann. Einige großartige Forscher haben jedoch versucht, dieses Tool mit anderen Technologien wie Go neu zu implementieren, und sobald diese ausgereift sind, funktionieren sie wahrscheinlich besser als dieses.
Microsoft IIS enthält eine Schwachstelle, die zu einer unbefugten Informationsoffenlegung führen kann. Das Problem tritt während der Analyse einer Anfrage auf, die ein Tilde-Zeichen (~) enthält. Dies kann einem entfernten Angreifer ermöglichen, auf Datei- und Ordnernameninformationen zuzugreifen.
Dieser Scanner wurde von https://code.google.com/p/iis-shortname-scanner-poc/ nach GitHub verschoben, um eine bessere Unterstützung zu bieten.
Ursprüngliche Forschungsarbeit: http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Es ist möglich, Kurznamen von Dateien und Verzeichnissen zu erkennen, die ein 8.3-Äquivalent in Windows haben, indem man einige Vektoren in verschiedenen Versionen von Microsoft IIS verwendet. Beispielsweise ist es möglich, alle Kurznamen von ".aspx"-Dateien zu erkennen, da diese 4 Buchstaben in ihren Erweiterungen haben.
Hinweis: In den neuesten Versionen dieses Scanners wurden neue Techniken eingeführt, und er kann jetzt IIS10 scannen, wenn es anfällig ist.
Es ist nicht einfach, die ursprünglichen Datei- oder Ordnernamen basierend auf den Kurznamen zu finden. Die folgenden Methoden werden jedoch als Beispiele empfohlen:
Die aktuelle Version wurde mit Open JDK 18 kompiliert (die alten Jar-Dateien für andere JDKs wurden entfernt, sind aber in der Git-Historie zu finden).
Sie müssen Dateien im Verzeichnis /release herunterladen, um diese alte Anwendung zu verwenden!
Sie können diese Anwendung auch selbst kompilieren. Bitte melden Sie alle Probleme in GitHub zur weiteren Untersuchung.
VERWENDUNG 1 (Um zu überprüfen, ob das Ziel mit der Standardkonfigurationsdatei anfällig ist):
java -jar iis_shortname_scanner.jar [URL]
VERWENDUNG 2 (Um 8.3-Dateinamen mit der Standardkonfigurationsdatei zu finden):
java -jar iis_shortname_scanner.jar [FortschrittAnzeigen] [ThreadAnzahl] [URL]
VERWENDUNG 3 (Um zu überprüfen, ob das Ziel mit einer neuen Konfigurationsdatei anfällig ist):
java -jar iis_shortname_scanner.jar [URL] [KonfigDatei]
VERWENDUNG 4 (Um 8.3-Dateinamen mit einer neuen Konfigurationsdatei zu finden):
java -jar iis_shortname_scanner.jar [FortschrittAnzeigen] [ThreadAnzahl] [URL] [KonfigDatei]
VERWENDUNG 5 (Um mehrere Ziele mit einer Linux-Box zu scannen):
./multi_targets.sh <Scope-Datei> <ist_standard_https (1=https)>
DETAILS:
[FortschrittAnzeigen]: 0= Nur Endergebnisse anzeigen - 1= Endergebnisse Schritt für Schritt anzeigen - 2= Fortschritt anzeigen
[ThreadAnzahl]: 0= Kein Thread - Ganze Zahl = Anzahl gleichzeitiger Threads [Vorsicht vor IIS Denial of Service]
[URL]: Eine vollständige URL - beginnt mit http/https Protokoll
[KonfigDatei]: Pfad zu einer neuen Konfigurationsdatei, die auf config.xml basiert
Beispiele:
- Beispiel 0 (um zu sehen, ob das Ziel anfällig ist):
java -jar iis_shortname_scanner.jar http://example.com/folder/
- Beispiel 1 (verwendet keinen Thread - sehr langsam):
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- Beispiel 2 (verwendet 20 Threads - empfohlen):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- Beispiel 3 (speichert die Ausgabe in einer Textdatei):
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- Beispiel 4 (umgeht die IIS-Basisauthentifizierung):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- Beispiel 5 (unter Verwendung einer neuen Konfigurationsdatei):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- Beispiel 6 (Scannen mehrerer Ziele mit einer Linux-Box):
./multi_targets.sh scope.txt 1
Hinweis 1: Bearbeiten Sie die config.xml-Datei, um die Scannereinstellungen zu ändern und zusätzliche Header hinzuzufügen. Hinweis 2: Manchmal funktioniert es nicht beim ersten Mal, und Sie müssen es erneut versuchen.
In den folgenden Beispielen antwortet IIS mit einer anderen Nachricht, wenn eine Datei existiert:
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
Verschiedene IIS-Server können jedoch unterschiedlich antworten, und einige funktionieren möglicherweise mit den folgenden oder anderen ähnlichen Mustern:
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
Die Methode zum Senden der Anfrage, wie GET, POST, OPTIONS, DEBUG, ..., ist ebenfalls wichtig.
Ich glaube, die Überwachung der Anfragen mit einem Proxy ist der beste Weg, um dieses Problem zu verstehen, und dieser Scanner.
Microsoft wird dieses Sicherheitsproblem nicht patchen. Ihre letzte Antwort lautet wie folgt:
Vielen Dank, dass Sie sich an das Microsoft Security Response Center gewandt haben.
Wir schätzen, dass Sie uns darauf aufmerksam gemacht haben. Unser vorheriger Rat bleibt bestehen: Stellen Sie IIS mit deaktivierten 8.3-Namen bereit.
Daher wird empfohlen, IIS mit deaktivierten 8.3-Namen bereitzustellen, indem der folgende Registrierungsschlüssel unter einem Windows-Betriebssystem erstellt wird:
Schlüssel: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Name: NtfsDisable8dot3NameCreation
Wert: 1
Hinweis: Das Webverzeichnis muss neu erstellt werden, da die Änderung des Registrierungseintrags NtfsDisable8dot3NameCreation nur Dateien und Verzeichnisse betrifft, die nach der Änderung erstellt werden. Bestehende Dateien sind daher nicht betroffen.
Erstellen des Images:
docker build . -t shortname
Dateimodus:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
Einzelmodus:
docker run shortname 2 20 http://example.com
Konfigurationsdatei überschreiben:
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://example.com
Forschungsliteratur:
Website-Referenz:
Video-Links:
Weitere Links: