- Die Standard-IIS-Seite ist keine Sackgasse, sondern der Ausgangspunkt für Bug-Bounty-Aufklärung; mit Shodan, Google Dorks und Response-Headern lassen sich exponierte Server und versteckte vHosts eingrenzen
- HTTP/1.0-Anfragen,
HTTPAPI 2.0 404, SSL-Zertifikate und Brute-Forcing desHost-Headers liefern erste Hinweise auf interne IPs, Exchange-Hostnamen und virtuelle Hosts - Die auf DOS 8.3 basierende Tilde-Shortname-Enumeration von IIS kann auch bei deaktiviertem Directory Listing kurze Datei- und Verzeichnisnamen offenlegen; mit GitHub-Suche, BigQuery, LLM und crunch lassen sich Kandidaten für die vollständigen Namen ableiten
- IIS/.NET-spezifisches Fuzzing zielt zuerst auf hochwertige Pfade und Erweiterungen wie
web.config,trace.axd,elmah.axd,appsettings.*.json,.aspx/.ashx/.asmx/.config - Freigelegte
web.config, Cookieless-Session-Pfadnormalisierung, Reverse-Proxy-Path-Confusion, NTFS Alternate Data Streams, Upload-Erweiterungs-Bypässe und HPP zeigen, dass Fehlkonfigurationen und Legacy-Verhalten zur Angriffsfläche werden können
Aufklärungsmethoden zum Auffinden von IIS-Servern
- IIS-Ziele lassen sich zuerst über Suchmaschinen und Internet-Asset-Suchdienste finden
- Shodan-Abfragen verengen IIS-Server über die SSL-Zertifikate der Zieldomain, den Organisationsnamen und die Kombination
http.title:"IIS"- Beispielziele umfassen Staging-Server, vergessene Admin-Panels und intern gedachte Tools, die im Internet exponiert sind
- Neben Shodan bieten auch fofa, censys, netlas und odin unterschiedliche Internet-Indizes
- Google Dorking wird verwendet, um Seiten mit indexierten IIS-Spuren zu finden
- Der Ordner
aspnet_clientund_vti_bingelten als IIS-Signale ext:aspxfindet ASP.NET-Seiten und deutet darauf hin, dass darunter IIS läuft- Wildcard-Suchen wie
site:*.target.comundsite:*.*.target.comwerden genutzt, um verschachtelte Subdomains zu finden, die bei grundlegender Subdomain-Enumeration übersehen wurden
- Der Ordner
- Response-Header sind der einfachste Hinweis zur Identifikation von IIS
Server: Microsoft-IIS/10.0X-Powered-By: ASP.NET- Für Prüfungen im großen Maßstab lässt sich mit
httpxodernucleieine Liste von IIS-Zielen erstellen
Erste Hinweise nach der Bestätigung von IIS
- Einige IIS-Konfigurationen, insbesondere Exchange- oder OWA-Frontends, können bei HTTP/1.0-Anfragen interne Informationen offenlegen
- Im
Location-Header kann eine interne IP wiehttps://192.168.5.237/owa/enthalten sein - Der
X-FEServer-Header kann den internen Hostnamen eines Exchange-Servers preisgeben - Solche Informationen führen später zu nutzbarer Informationspreisgabe
Automatisierung und das Finden versteckter virtueller Hosts
- Nachdem eine IIS-Zielliste vorliegt, lässt sich
nucleimit Tags wiemicrosoft,windows,asp,aspx,iis,azure,config,exposureausführen, um Wiederholungsarbeit zu reduzieren HTTPAPI 2.0 404bedeutet nicht zwingend, dass tatsächlich nichts vorhanden ist- Eine IIS-Instanz kann an einen bestimmten virtuellen Host gebunden sein, und weil der
Host-Header der Anfrage nicht passt, wird 404 zurückgegeben
- Eine IIS-Instanz kann an einen bestimmten virtuellen Host gebunden sein, und weil der
- Es gibt zwei Wege, versteckte vHosts zu finden
- Den benötigten Hostnamen aus dem Subject- oder SAN-Feld des SSL-Zertifikats ermitteln
- Wenn das Zertifikat nicht hilft, mit
ffufund einerHost-Header-Wordlist vHosts bruteforcen
- Wird der richtige Hostname gefunden, kann statt einer generischen 404-Antwort die eigentliche Anwendung antworten
IIS-Tilde-Shortname-Enumeration
- IIS kann aufgrund eines Verhaltens aus den alten DOS-8.3-Dateinamensregeln mit speziellen Anfragen kurze Namen von Dateien und Verzeichnissen enumerieren
- Selbst wenn Directory Listing deaktiviert ist, können Fragmente wie
WEB~1.CON,GLOBAL~1.ASA,SITEBA~1.ZIP,ADMIN~1sichtbar werden - shortscan wird als Tool zur IIS-Shortname-Enumeration verwendet
- burp’s IIS Tilde Enumeration Scanner kann ebenfalls als Alternative genutzt werden
- Es gibt mehrere Wege, kurze Namen in vollständige Dateinamen umzuwandeln
- LLM: Erzeugt mögliche Dateinamenskandidaten, die die Shortname-Fragmente enthalten
- GitHub Code Search: Sucht anhand der ersten 6 Zeichen vor
~1und der Erweiterung nach echten Dateinamen - GSNW: Nimmt Shortname-Fragmente entgegen und sammelt passende Dateinamen aus der GitHub Code Search
- GitHub-IIS-Shortname-Generator: Erzeugt auf ähnliche Weise Wortlisten
- shortnameguesser: Fragt anhand der Scanner-Ausgabe mehrere Quellen ab und erstellt eine zielgerichtete Wordlist
- Der BigQuery-Ansatz sucht im öffentlichen GitHub-Datensatz von Google BigQuery nach Dateipfaden, die zum Shortname-Muster passen
- Für
SITEBA~1.ZIPlassen sich Kandidaten aus realen Projekten wiesitebackup.zipodersitebase.zipableiten - Dieser Ansatz ist von Assetnotes BigQuery-Untersuchung zu versteckten IIS-Dateien inspiriert
- Für
- Wenn LLM, GitHub und BigQuery scheitern, lässt sich mit crunch eine Wordlist der verbleibenden Zeichenkombinationen erstellen und mit
ffuftesten- Dabei werden auch Dateinamensvarianten mit Bindestrich, Unterstrich, URL-kodierten Leerzeichen und ohne Trennzeichen geprüft
- Windows erlaubt Leerzeichen in Dateinamen, und IIS kann diese ebenfalls ausliefern
IIS/.NET-spezifisches Fuzzing
- Mit allgemeinen Wordlists allein lassen sich die spezifischen Dateien und Endpunkte des IIS/.NET-Ökosystems leicht übersehen
- Zu den hochwertigen Zielen, die zuerst geprüft werden sollten, gehören:
/web.config,/web.config.bak,/web.config.old,/web.config.txt/global.asax/trace.axd/elmah.axd/connectionstrings.config/appsettings.json,/appsettings.Development.json,/appsettings.Staging.json,/appsettings.Production.json,/appsettings.Local.json/secrets.json/WS_FTP.LOG/_vti_pvt/service.cnf
trace.axdist der ASP.NET-Trace-Viewer; wenn er aktiv ist, können Request-/Response-Logs inklusive Headern, Cookies und manchmal auch Zugangsdaten offengelegt werdenelmah.axdkann als Debug-Endpunkt, den Entwickler nicht deaktiviert haben, bestehen bleiben und Fehlerprotokolle anzeigen- Zu den fuzzing-relevanten IIS-spezifischen Erweiterungen gehören
.asp,.aspx,.ashx,.asmx,.wsdl,.wadl,.config,.xml,.zip,.txt,.dll,.json - Nützliche Wordlists sind unter anderem:
- secLists IIS.txt: Enthält grundlegende IIS-Pfade, allgemeine Handler und Legacy-Dateien
- orwa’s iis.txt: Wird als IIS-Liste vorgestellt, die in realen Bug-Bounty-Programmen verwendet wurde
- orwa’s aspx.txt: Eine auf
.aspx-Endpunkte fokussierte Liste - wfuzz iis.txt: Eine kleine Liste mit Fokus auf bekannte verwundbare IIS-Pfade
- dirbuster-ng iis.txt: Eine kompakte Liste, die auf IIS-spezifische Schwachstellen zielt
- Assetnote wordlists: Automatisch aus realen Crawling-Daten erzeugt, monatlich aktualisiert; empfohlen werden die ASP- und ASPX-Listen
- OneListForAll:
onelistforallshort.txteignet sich für zielgerichtete Läufe, die vollständige Liste für lange Scans
- Da IIS nicht zwischen Groß- und Kleinschreibung unterscheidet, können Mixed-Case-Wordlists doppelte Anfragen erzeugen
- Verwendet werden daher Listen in Kleinbuchstaben oder eine Normalisierung mit
tr '[:upper:]' '[:lower:]' | sort -u
- Verwendet werden daher Listen in Kleinbuchstaben oder eine Normalisierung mit
web.config und Code-Exposition
- Wenn sich
web.configper Path Traversal, über falsch freigelegte Backups oder per shortname-basierter Entdeckung lesen lässt, kann die Auswirkung bei IIS-Zielen erheblich sein - In IIS-
web.configkönnen Machine Keys enthalten sein, die für die Signierung und Verschlüsselung von ViewState verwendet werden - Sind Machine Keys vorhanden, lassen sich bösartige serialisierte ViewState-Payloads fälschen, was zu deserialisierungsbasierter Remote Code Execution führen kann
- ysoserial.net ist ein Tool, das bei vorhandenen Keys die Payload-Erzeugung unterstützt
- Gibt es Parameter für Dateidownload oder Dateilesen, folgt daraus typischerweise der Versuch mit
../../web.configund URL-kodierten Varianten - Das Legacy-Feature Cookieless Session von ASP.NET kann Sitzungstoken im Format
(S(X))in den URL-Pfad einfügen- Wenn IIS dieses Segment bei der Pfadnormalisierung entfernt, kann dadurch die Zugriffssperre auf das Verzeichnis
/binumgangen werden Newtonsoft.Json.dllist als Bibliothek für sich genommen Standard und muss keine Anwendungsgeheimnisse enthalten- Erhält man jedoch echte Anwendungs-DLLs, lassen sie sich mit dotPeek oder dnSpy dekompilieren, um hartkodierte Zugangsdaten, API-Keys, Logik interner Endpunkte oder benutzerdefinierte Authentifizierungsimplementierungen zu sehen
- Wenn IIS dieses Segment bei der Pfadnormalisierung entfernt, kann dadurch die Zugriffssperre auf das Verzeichnis
Pfadnormalisierung, NTFS, Uploads und WAF-Umgehung
- Wenn IIS hinter einem Reverse Proxy steht oder selbst als Reverse Proxy arbeitet, können Unterschiede in der Pfadnormalisierung zur Umgehung von Zugriffskontrollen führen
- Der Proxy kann einen kodierten Pfad als andere Ressource weiterleiten, während IIS
%2fzu/dekodiert und Traversal interpretiert, sodass geschützte Pfade ausgeliefert werden
- Der Proxy kann einen kodierten Pfad als andere Ressource weiterleiten, während IIS
- IIS 7.5 und ähnliche Versionen können durch NTFS-Alternate Data Streams und Index-Allocation-Verhalten eine Umgehung von Basic Authentication ermöglichen
- Das Authentifizierungsmodul erkennt den geschützten Pfad dann nicht, während das Dateisystem ihn als tatsächliches Verzeichnis interpretiert
- Bei Dateiupload-Funktionen kann selbst bei blockierten
.aspx- oder.asp-Dateien über Erweiterungen, die IIS standardmäßig als HTML ausliefert, Stored XSS möglich sein- Beispiele für HTML-rendernde Erweiterungen:
.cer,.hxt,.htm - Beispiele für XML-basierte XSS-Vektorerweiterungen:
.dtd,.mno,.vml,.xsl,.xht,.svg,.xml,.xsd,.xsf,.svgz,.xslt,.wsdl,.xhtml
- Beispiele für HTML-rendernde Erweiterungen:
- IIS entfernt Punkte am Ende von Dateinamen, wodurch Upload-Filter etwa mit
shell.aspx.,shell.aspx..,shell.aspx...umgangen werden können - Für Server-Side-Includes werden die Erweiterungen
.stm,.shtm,.shtmlgenannt - Wenn eine WAF Payloads blockiert, lässt sich mit HTTP Parameter Pollution die Payload auf doppelte Parameter verteilen
- IIS und ASP.NET verketten doppelte Parameterwerte standardmäßig mit Kommas, sodass die Payload hinter der WAF wieder zusammengesetzt werden kann
Lehren und Materialien aus IIS-Bug-Bounties
- Die Angriffsfläche von IIS in Bug-Bounty-Programmen ist groß, wird aber oft nicht ausreichend getestet
- Exponierte Windows-/IIS-Server können Informationen in Form von internen IPs, Konfigurationsdateien oder Shortname-Enumeration preisgeben
- In der Praxis ist es wichtig, nicht bei der IIS-Standardseite stehen zu bleiben, sondern tiefer aufzuklären
- Referenzen
1 Kommentare
Hacker-News-Kommentare
Der Grund, warum vor jedem Honeypot eine IIS-Landingpage steht, ist genau der, Black Hats anzulocken
Der Gedanke, dass sie Stunden damit verschwendet haben, ihrem eigenen Schwanz hinterherzujagen, ist einfach herrlich
Die besseren Black Hats gehen auf große Ziele, und die schlechteren konzentrieren sich auf leichte Beute aus Shodan oder auf Application-Zero-Days, die sie selbst gefunden haben
Wenn es Wege gibt, Port-Scannern eins auszuwischen, würde ich gern mehr darüber wissen
aspnet_client/admin.phpanzulegen und dann WebObjects-Header zurückzugeben, klingt ebenfalls nach einem netten HobbyMit der Aussage, „IIS habe ein Legacy-Verhalten geerbt, das aus den alten DOS-8.3-Dateinamensregeln stammt“, frage ich mich, ob damit gemeint ist, dass durch den standardmäßigen IIS-Dokumentenstamm
C:\Inetpubdas Verhalten des zugrunde liegenden Betriebssystems offengelegt wirdUnter Windows 10/11 sind 8.3-Dateinamen auf Laufwerk C standardmäßig aktiviert, auf anderen Laufwerken aber standardmäßig deaktiviert
PS> (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').DisplayVersion→24H2fsutil 8dot3name query C:ergibt8dot3 name creation is ENABLED,fsutil 8dot3name query U:dagegenDISABLEDc:\inetpubangelegt hatte, aus dem vagen Grund „verbesserter Schutz“https://www.pcworld.com/article/2684062/why-is-windows-11-la...
DisplayVersion-Befehl keine Antwort, und bei älteren Versionen wie LTSC muss man offenbar stattdessenReleaseIdverwenden(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').ReleaseId→1809Der Schreibstil des Artikels ist ziemlich eigenartig
Wow, das weckt sofort alte Erinnerungen
Früher gab es so viele IIS-Scanner, dass Server-Logs praktisch unbrauchbar waren
Es gab eine Directory-Traversal-Schwachstelle, bei der man nur
../URL-encoden musste, und sie hat monatelang das ganze Internet in Brand gesetztGibt es überhaupt noch Leute, die IIS verwenden?
HOST/MACHINE.DOMAINWindows-Dienste und IIS-App-Pool-Identitäten melden sich mit (g)MSA oder virtuellen Konten (
NT Service*) an, sodass eine sauber verwaltete Kerberos-Umgebung funktioniert, ohne dass man selbst 30/60/90-Tage-Passwortwechsel handhaben mussMan meldet sich per Kerberos bei MS SQL Server an, und auch in OAuth2-Flows anderer Web-Apps per Kerberos, und das funktioniert alles ganz natürlich
WinRM lässt sich aus der Standard-Windows-Shell ebenfalls ohne große Konfiguration nutzen, und technisch kann man damit sogar 2FA umgehen, weil es in der Praxis genau so funktioniert
Ob das unter Linux auch geht? Ja, aber wie wahrscheinlich es ist, dass es dort sauber eingerichtet wird, hängt vom Arbeitsumfeld ab, und meiner Erfahrung nach ist die Wahrscheinlichkeit nicht besonders hoch
Es gibt extrem viele alte Anwendungen, und darunter sind etliche sehr wichtige
Wenn ein Großunternehmen groß genug für ein Intranet ist, läuft irgendwo darin — vielleicht sogar überall — IIS
Es integriert sich gut mit AD und macht selbst sehr komplexe Aufgaben absurd einfach
Die Nutzung nimmt ab, weil die Welt zu AWS wechselt, aber das bedeutet nur, sich wieder an das proprietäre Produkt eines einzelnen Anbieters zu ketten (Amazon), was genauso töricht ist. Der einzige Unterschied ist, dass man diesmal nicht einmal die Hardware besitzt
Der öffentliche Sektor mag IIS. Wenn man sich kommunale Steuer- oder Immobilien-Websites ansieht, findet man mit hoher Wahrscheinlichkeit jede Menge
.aspx-SkripteIch habe das auch in Web-Apps des öffentlichen Sektors in Europa gesehen, wo maßgeschneiderte .NET-Anwendungen mit SQL-Server-Backend oft ganze Kommunalverwaltungen tragen
Asien, besonders China und Taiwan, schien IIS zu mögen und es für alle möglichen Hosting-Zwecke einzusetzen
Die Welt ist größtenteils weitergezogen, aber es gibt immer noch gewaltige Mengen Legacy-Code auf IIS, die Städte und wichtige Organisationen am Laufen halten, und das wird sich wohl nicht ändern
Wenn du das schlimm findest: Es gibt immer noch Orte, die AS/400, Lotus Notes und Novell GroupWise im Web betreiben
Stell dir ein kleines Unternehmen vor, das Enterprise-Code für .NET Framework baut, komplett auf Windows setzt, Kunden hat, die Cloud nicht akzeptieren, bei denen SOAP noch Mainstream ist und der einzige IT-Verantwortliche keine Zeit hatte, sich dafür zu interessieren, was seit 2010 passiert ist
Ein kompletter Rewrite ist realistisch unmöglich, man hätte gern Sicherheitsgewinne, aber keine Kapazität, sich tief in Konfiguration einzugraben, und man kann auch nicht auf etwas Komplexes wie Kubernetes wetten
So eine Analyse würde ich auch gern über nginx lesen
Für Desktop-Browser insgesamt ist das Design wirklich gut, und der Inhalt ebenfalls hervorragend
Davon abgesehen gefällt mir die Präsentation aber
Der Autor muss wohl noch lernen, wie sehr die Zivilisation darauf angewiesen ist, dass Menschen ohne besonderen Grund nicht gemein zueinander sind
Ich verstehe nicht, was mit der linken Sidebar los ist, die den Haupttext überlappt