QQ 1274510382
Wechat JNZ_aming
Business Alliance QQ-Gruppe 538250800
Technologieprobleme QQ-Gruppe 599020441
Lösung QQ-Gruppe 152889761 Machen
Sie mit QQ-Gruppe 649347320
Gemeinsames Lernen QQ-Gruppe 674240731
Chronologische Technologie für
Netzwerksicherheit, Deep Learning, Embedded, Maschinenverbesserung, biologische Intelligenz, Biowissenschaften.
Ding Ding Ding: Das Produkt ist online -> Folgen Sie dem offiziellen öffentlichen WeChat-
Konto - Jinan Ji Nian Information Technology Co., Ltd. Projekt zum Lebensunterhalt der Menschen: Franchise-Geschäft / Unterhaltungsdating / Unternehmensgeschäftskreis / Auslagerung einer Teilzeit-Entwicklungsprojektveröffentlichung /
Sicherheitsprojekt: Situationsbewusstsein-Verteidigungssystem / Intranet-Inspektionssystem
Cloud-Service-Projekt: Dynamische Erweiterung des Cloud-Hosts / Domain-Namens / Elastische Speicher-Datenbank-Cloud-Festplatte / API-AIeverthing
Produktberatung / Service After-Sales (gleich)
Auf dem Papier ist es immer flach, und ich weiß absolut, dass diese Angelegenheit erledigt werden muss! ! !
Auf der Suche nach gleichgesinnten Partnern, um ein Unternehmen zu gründen. . . Baotuan Didi aming Kontaktinformationen! !
#Dieser Artikel dient dazu, dass das Werbesystem automatisch Anzeigen liefert
# Wenn es einen Verstoß oder eine Löschung gibt, kontaktieren Sie uns bitte schnell
Das Kernel-Caching ist in IIS standardmäßig aktiviert, um Aufgaben im Zusammenhang mit dem Caching in der Anforderungsverarbeitungspipeline auszuführen.
Wenn der HTTP-Protokollstapel (HTTP.sys) die HTTP-Anforderung falsch analysiert, verursacht dies die Sicherheitsanfälligkeit bezüglich der Ausführung von IIS-Remotecode.
Erfahren Sie in Experimenten mehr über die
IIS-Architektur, den HTTP-Protokollstapel und dessen Funktionsweise sowie
die Schwachstellen im HTTP-Protokollstapel und beherrschen Sie die Methoden und Schwachstellenprinzipien zur Ausnutzung von Schwachstellen nach MS15-034.
Web-Sicherheit
Praktiker der Informationssicherheit
Computerfundament, Computernetzwerk
Vorkenntnisse
Informationen zu Sicherheitslücken
Sicherheitsanfälligkeitsnummer: CVE-2015-1635
Beschreibung der Sicherheitsanfälligkeit: Die
Sicherheitsanfälligkeit bezüglich der Ausführung von IIS-Remotecode ist im HTTP-Protokollstapel (HTTP.sys) vorhanden.
Diese Sicherheitsanfälligkeit kann verursacht werden, wenn HTTP.sys HTTP-Anforderungen falsch analysiert.
Ankündigung von Microsoft zu Sicherheitslücken: https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2015/ms15-034
Betroffene Version: Windows Server 2008 R2 / Server 2012 / Server 2012 R2 und Windows 7/8 / 8.1,
die mit Microsoft
IIS 6.0 oder höher installiert wurden,
sind von dieser Sicherheitsanfälligkeit betroffen.
IIS-Architektur
Nach der Installation von IIS (Internet Information Service) auf dem System
Es gibt einen Dienst namens World Wide Web Publishing Service (WWW-Dienst).
Wenn der Client eine HTTP-Anforderung an das System sendet,
startet der WWW-Dienst den Arbeitsprozess w3wp.exe oder wählt ihn basierend auf der Lastausgleichsstrategie aus
, um die HTTP-Anforderung zu verarbeiten und eine entsprechende HTTP-Antwort zu senden.
Der Prozess w3wp.exe verwendet HTTP.sys, um viele Aufgaben im Zusammenhang mit der Verarbeitung von
HTTP-Protokollen auszuführen, einschließlich HTTP-Protokollanalyse, Zusammenstellung von Antwortinhalten und Zwischenspeichern von Inhalten.
HTTP.sys empfängt HTTP-Anforderungen und sendet HTTP-Antworten über TCPIP.sys.
HTTP-Protokollstapel und wie es funktioniert
Der IIS-Webserver verwendet den HTTP-Listener als Teil des Windows-Netzwerksubsystems,
das vom Gerätetreiber im Kernelmodus des HTTP-Protokollstapels (HTTP.sys) implementiert wird. Der
HTTP-Protokollstapel analysiert HTTP-Anforderungen und gibt Antworten an den Client .
HTTP.sys bietet die folgenden Dienste in IIS 6.0: Weiterleiten von HTTP-Anforderungen an die richtige Anforderungswarteschlange, Zwischenspeichern von Antworten im Kernelmodus, Durchführen der gesamten textbasierten Protokollierung für WWW-Dienste, Implementieren von Dienstqualitätsfunktionen, einschließlich Verbindungsbeschränkung, Verbindungszeitlimit, Warteschlange Längen- und Breitenbegrenzung.
Beim Erstellen einer Website verwendet IIS HTTP.sys, um die Website zu registrieren, und HTTP.sys empfängt dann alle HTTP-Anforderungen an die Website. Die Funktion von HTTP.sys ähnelt einer Weiterleitung. Sie sendet die empfangene Webanforderung an die Anforderungswarteschlange, in der der Benutzermodusprozess der Website oder Webanwendung ausgeführt wird, und sendet die Antwort an den Client zurück.
HTTP.sys ruft nicht nur die gespeicherte Antwort aus dem internen Cache ab, sondern verarbeitet auch die empfangenen Anforderungen nicht. Daher wird anwendungsspezifischer Code nicht in den Kernelmodus geladen, sodass Fehler im anwendungsspezifischen Code den Kernel nicht beeinträchtigen oder einen Systemausfall verursachen.
Sicherheitsanfälligkeit bezüglich des HTTP-Protokollstapels
Das Kernel-Caching ist in IIS standardmäßig aktiviert, um Aufgaben im Zusammenhang mit dem Caching in der Anforderungsverarbeitungspipeline auszuführen.
Durch das Zwischenspeichern wird die Leistung verbessert, indem verarbeitete Informationen (z. B. Webseiten) im Speicher des Servers gespeichert werden.
Verwenden Sie den Range-HTTP-Header, um diese Sicherheitsanfälligkeit auszunutzen. Mit
diesem HTTP-Header kann der Client nach Bedarf bestimmte Inhalte vom Server anfordern.
Normalerweise enthält der Range-Header die folgenden Werte:
Bereich: Bytes = 124-5656, kann auch die folgenden Werte enthalten: Bereich: Bytes = 0-
Wenn die Obergrenze im Bereichskopf nicht vorhanden ist,
wird davon ausgegangen, dass der Client vollständige Daten anfordert.
Im Gegenteil, wenn der Angreifer eine obere Obergrenze angibt und eine HTTP-Anforderung mit einem speziellen Range-Wert sendet,
wird die Range-Variable auf dem Server überlaufen.
Die Obergrenze des Range-Headers ist 0xFFFFFFFFFFFFFFFFFF,
die größte 64-Bit-Ganzzahl ohne Vorzeichen.
Der Angreifer sendet eine HTTP-Anforderung mit diesem Wert, die einen Ganzzahlüberlauf verursacht, und der
Server antwortet mit "Der angeforderte Bereich kann nicht erfüllt werden". Dies bedeutet, dass der Client einen Teil der Datei benötigt, um das Ende der Datei zu überschreiten auf dem Server.
Die erfolgreiche Ausnutzung eines Angriffs kann auch zu einem Denial-of-Service führen.
Experimente zur Sicherheit des IIS-Servers
Exploit für Sicherheitslücken bei Schreibberechtigungen nach IIS6.0: https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015102217203100001
0-tägige Schwachstellenanalyse und -ausnutzung von IIS6.0-Remotecodeausführung: https://www.hetianlab.com/expc.do?ec=ECID9d6c0ca797abec2017032915142000001 (CVE-2017-7269)
Sicherheitsanfälligkeit in Bezug auf die IIS-Analyse beim Hochladen von fckEditor: https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015102217243800001
Versuchszweck
Um die IIS-Architektur, den
HTTP-Protokollstapel und seine Funktionsweise sowie
die Schwachstellen des HTTP-Protokollstapels durch Experimente zu verstehen und die Methoden und Schwachstellenprinzipien zur Ausnutzung von Schwachstellen von MS15-034 zu beherrschen.
Experimentelle Umgebung
Client: Windows Server 2008 R2, IP: 10.1.1.134
Angriff: Kali , IP: 10.1.1.100
Download-Adresse des Tools zur Ausnutzung von Sicherheitslücken: http://tools.hetianlab.com/tools/CVE-2015-1635.zip
Aufgabenbeschreibung: Schwachstellenerkennung.
Wir wissen, dass dies eine Sicherheitsanfälligkeit bezüglich eines Ganzzahlüberlaufs in HTTP.sys ist. Das
Senden einer HTTP-Anforderung im folgenden Format an den IIS-Server kann die Erkennung der Sicherheitsanfälligkeit auslösen:
Kali-Maschine führt den Befehl curl url -H "Host: ip" -H "aus. Bereich: bytes = 0-18446744073709551615":
Zu diesem Zeitpunkt ist 18446744073709551615, konvertiert in hexadezimal, 0xFFFFFFFFFFFFFFFFFF (16 F). Dies
ist die größte Ganzzahl, die durch eine 64-Bit-Ganzzahl ohne Vorzeichen ausgedrückt werden kann. Daher
muss der Ganzzahlüberlauf mit dieser abnormalen Ganzzahl in Beziehung gesetzt werden.
Wie oben gezeigt,
liegt eine Sicherheitsanfälligkeit vor, wenn der IIS-Server "angeforderter Bereich nicht erfüllbar"
zurückgibt. Wenn er "die Anforderung hat einen ungültigen Headernamen" zurückgibt, wurde die Sicherheitsanfälligkeit behoben.
Laden Sie das Skript herunter:
wget http://tools.hetianlab.com/tools/CVE-2015-1635.zip
unzip CVE-2015-1635.zip
Achten Sie darauf, die IP der Versuchsmaschine zu ändern:
Verwenden Sie POC zur Erkennung von Sicherheitslücken:
Zeigt an, dass der Zielcomputer eine Sicherheitsanfälligkeit aufweist.
Experimenteller Schritt zwei
Aufgabenbeschreibung: MS15-034 Exploit-Angriff: Speicherdaten abrufen.
Die Kali-Maschine öffnet die msfconsole und sucht nach verwundbarkeitsbezogenen Exploit-Modulen:
Verwenden Sie das zweite Modul
ms15_034_http_sys_memory_dump, um Serverspeicherdaten zu lesen:
HTTP-Protokollstapelanforderungen zum Verarbeiten der Offenlegung von HTTP.SYS-Speicherinformationen.
Führen Sie einen Angriff durch:
Serverspeicherdaten erfolgreich lesen.
Experimentieren Sie Schritt drei
Aufgabenbeschreibung: MS15-034 Exploit-Angriff: Denial-of-Service-Angriff.
Verwenden Sie das erste Modul
ms15_034_ulonglongadd, um DDOS-Angriffe auszuführen: Denial-of-Service für die Verarbeitung von HTTP-Protokollstapelanforderungen
Konfigurieren Sie die Parameter und führen Sie den Angriff aus:
Hinweis: Sie können vor dem Ausführen des Angriffs zum Client wechseln und den laufenden Status vor und nach dem Angriff spüren.
Erfolgreiche Leistung des Clients, der auf der experimentellen Maschine angegriffen wird:
Experimentieren Sie Schritt vier
Schwachstellenanalyse: Denial-of-Service-Angriff.
Nach dem Senden der Anforderung an den HTTP-Server verarbeitet
w3wp.exe die HTTP-Anforderung und
TCPIP.sys leitet den Inhalt des HTTP-Protokolls an HTTP.sys weiter.
Wenn sich die Anforderung innerhalb des HTTP-Bereichs befindet, wird die
Funktion UlpParseRange () aufgerufen, um die Anforderung zu analysieren, um die Start- und Endpositionen des Anforderungsbereichs zu erhalten
und die Länge des Bereichs zu berechnen.
Wenn die Startposition 0 und die Endposition 0xFFFFFFFFFFFFFFFFFF ist, ist die
Bereichslänge gleich 0, der Code prüft nicht auf Überlauf und ergreift keine Maßnahmen zur Fehlerbehandlung.
Wenn die Startposition 284 und die Endposition 0xFFFFFFFFFFFFFFFFFF ist, ist die
Bereichslänge gleich -284 und der Hexadezimalwert ist 0xFFFFFFFFFFFFFFFEE4.
Wenn er als vorzeichenlose Ganzzahl interpretiert wird, ist der Wert sehr groß.
Nach dem Parsen der HTTP-Anfrage wird die Funktion UlAdjustRangesToContentSize () aufgerufen.
Wenn die Startposition und Länge are'invalid‘
(einschließlich der Bereich Startposition ist 0xFFFFFFFFFFFFFFFFFF, ist die Bereichslänge 0xFFFFFFFFFFFFFFFFFF, die
Startposition> = die angeforderte Webseite Länge und die Endposition> = die angeforderte Webseite Länge),
die Funktion stellt den Bereich ein Die Startposition und Länge des
Wenn dieselbe Anforderung kontinuierlich empfangen wird, wird die Antwort auf die Anforderung zwischengespeichert und aus dem Cache abgerufen und an den Anforderer gesendet.
Dieser Prozess ruft die Funktion UxpTpDirectTransmit () auf, um die Länge des HTTP-Antwortpakets zu berechnen.
Nach dem Zusammenstellen des HTTP-Antwortpakets
leitet HTTP.sys die Paketinformationen zum Senden an den Protokollstapeltreiber weiter.
Die Funktion TcpSegmentTcbSend () von TCPIP.sys durchläuft den Inhalt jedes Teils des Pakets. Es gibt einen Ganzzahlüberlauf im Funktion.
Wenn die Startposition der HTTP-Bereichsanforderung 284 und die
Endposition 18446744073709551615 (hexadezimaler Wert 0xFFFFFFFFFFFFFFFFFFFF) ist,
überschreitet der Bereich die Größe der angeforderten Webseitendatei.
Da die HTTP-Antwortlänge sehr groß ist, wird
die virtuelle Adresse verwendet, um eine teilweise Speicherdeskriptorliste zu erstellen , wenn die Schleife mehrmals ausgeführt wird und ein ganzzahliger Überlauf ausgelöst wird. Da der Bereich kein Unterbereich des Quellbereichs ist, wird ein blauer Bildschirm des Todes angezeigt.
Experimenteller Schritt fünf
Schwachstellenanalyse: Speicherdaten abrufen.
Angenommen, 3-18446744073709551615 ist auf range1 und
1-600 auf range2 eingestellt.
Nachdem die Funktion UlpParseRange () die HTTP-Anforderung analysiert hat, wird
die Funktion UlAdjustRangesToContentSize () aufgerufen.
Zu diesem Zeitpunkt löst range1 einen ganzzahligen Überlauf aus (3) + 0xFFFFFFFFFFFFFFFD> = 0).
Wenn dieselbe Operation kontinuierlich empfangen wird, wird die Antwort auf die Anforderung zwischengespeichert, aus dem Cache abgerufen und an den Anforderer gesendet.
Bei Verwendung mehrerer Bereichsanforderungen
gibt es vor jedem Bereichsinhalt ein Bereichsbindungs-Tag und Bereichsinformationen.
Nach dem Zusammenstellen des HTTP-Antwortpakets leitet HTTP.sys die Paketinformationen unter dem Protokollstapeltreiber zum Senden weiter.
Die Funktion TcpSegmentTcbSend () von TCPIP.sys durchläuft jeden Teil des Datenpakets.
Die Verwendung von Anforderungen mit mehreren Bereichen kann die Länge der HTTP-Antwort erhöhen und dadurch mehr Informationen preisgeben.
Wenn nur ein einziger Bereich verwendet wird, wird die HTTP-Antwortlänge zu groß oder zu klein:
Wenn die HTTP-Antwortlänge zu groß ist, verursacht das System einen Bluescreen des Todes.
Wenn die HTTP-Antwortlänge zu klein ist, wird der Puffer nicht überschrieben, nachdem der Inhalt der Zielwebseite Informationen verloren hat.
Daher verwendet der Angreifer Mehrbereichsanforderungen, um weitere Informationen offenzulegen.
Fehlerbehebungen
Deaktivieren Sie das Aktivieren des Kernel-Caching im Ausgabecache (deaktivieren Sie das IIS-Kernel-Caching):
Analyse und Denken
Weitere Analysen finden Sie unter: https://blogs.360.cn/post/cve_2015_6135_http_rce_analysis.html.
Referenz
1 、 https: //technet.microsoft.com/en-us/library/cc739400 (v = ws.10) .aspx
2 、 https://www.trendmicro.com/en_us/research/15/d/iis-at-risk-the-http-protocol-stack-vulnerability.html? _Ga = 2.58551274.1902911539.1609211638-1589647619.1609211638