Server Side Inclusion/Edge Side Inclusion Injection
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
(Einführung aus Apache-Dokumentation)
SSI (Server Side Includes) sind Direktiven, die in HTML-Seiten platziert und auf dem Server ausgewertet werden, während die Seiten bereitgestellt werden. Sie ermöglichen es Ihnen, dynamisch generierte Inhalte zu einer bestehenden HTML-Seite hinzuzufügen, ohne die gesamte Seite über ein CGI-Programm oder eine andere dynamische Technologie bereitstellen zu müssen. Zum Beispiel könnten Sie eine Direktive in eine bestehende HTML-Seite einfügen, wie:
<!--#echo var="DATE_LOCAL" -->
Und wenn die Seite bereitgestellt wird, wird dieses Fragment ausgewertet und durch seinen Wert ersetzt:
Dienstag, 15-Jan-2013 19:28:54 EST
Die Entscheidung, wann SSI verwendet werden soll und wann Ihre Seite vollständig von einem Programm generiert werden soll, hängt normalerweise davon ab, wie viel der Seite statisch ist und wie viel jedes Mal neu berechnet werden muss, wenn die Seite bereitgestellt wird. SSI ist eine großartige Möglichkeit, kleine Informationsstücke hinzuzufügen, wie die aktuelle Zeit - oben gezeigt. Aber wenn der Großteil Ihrer Seite zum Zeitpunkt der Bereitstellung generiert wird, müssen Sie nach einer anderen Lösung suchen.
Sie können das Vorhandensein von SSI ableiten, wenn die Webanwendung Dateien mit der Erweiterungs.shtml
, .shtm
oder .stm
verwendet, aber das ist nicht der einzige Fall.
Ein typischer SSI-Ausdruck hat das folgende Format:
Es gibt ein Problem mit Caching-Informationen oder dynamischen Anwendungen, da der Inhalt möglicherweise beim nächsten Abrufen des Inhalts variieren kann. Dafür wird ESI verwendet, um mit ESI-Tags den dynamischen Inhalt anzugeben, der generiert werden muss, bevor die Cache-Version gesendet wird. Wenn ein Angreifer in der Lage ist, ein ESI-Tag in den Cache-Inhalt einzufügen, könnte er in der Lage sein, willkürlichen Inhalt in das Dokument einzufügen, bevor es an die Benutzer gesendet wird.
Die folgende Header in einer Antwort vom Server bedeutet, dass der Server ESI verwendet:
Wenn Sie diesen Header nicht finden können, könnte der Server trotzdem ESI verwenden. Ein blinder Exploitationsansatz kann ebenfalls verwendet werden, da eine Anfrage beim Server des Angreifers ankommen sollte:
GoSecure erstellt eine Tabelle, um mögliche Angriffe zu verstehen, die wir gegen verschiedene ESI-fähige Software ausprobieren können, abhängig von der unterstützten Funktionalität:
Includes: Unterstützt die <esi:includes>
-Direktive
Vars: Unterstützt die <esi:vars>
-Direktive. Nützlich zum Umgehen von XSS-Filtern
Cookie: Dokumentencookies sind für die ESI-Engine zugänglich
Upstream-Header erforderlich: Surrogatanwendungen verarbeiten ESI-Anweisungen nicht, es sei denn, die upstream-Anwendung stellt die Header bereit
Host-Whitelist: In diesem Fall sind ESI-Includes nur von erlaubten Serverhosts möglich, was SSRF beispielsweise nur gegen diese Hosts möglich macht
Software
Includes
Vars
Cookies
Upstream-Header erforderlich
Host-Whitelist
Squid3
Ja
Ja
Ja
Ja
Nein
Varnish Cache
Ja
Nein
Nein
Ja
Ja
Fastly
Ja
Nein
Nein
Nein
Ja
Akamai ESI Test Server (ETS)
Ja
Ja
Ja
Nein
Nein
NodeJS esi
Ja
Ja
Ja
Nein
Nein
NodeJS nodesi
Ja
Nein
Nein
Nein
Optional
Die folgende ESI-Direktive lädt eine beliebige Datei innerhalb der Antwort des Servers.
Fernzugriff auf Cookies stehlen
Stehlen Sie das Cookie HTTP_ONLY mit XSS, indem Sie es in der Antwort reflektieren:
Verwechseln Sie dies nicht mit einer "Local File Inclusion":
Das Folgende wird einen Location
-Header zur Antwort hinzufügen
Header in erzwungenem Request hinzufügen
Fügen Sie einen Header in die Antwort ein (nützlich, um "Content-Type: text/json" in einer Antwort mit XSS zu umgehen)
Dies sendet Debug-Informationen, die in der Antwort enthalten sind:
Es ist möglich, die eXtensible Stylesheet Language Transformations (XSLT)
-Syntax in ESI zu verwenden, indem der Parameter dca
-Wert als xslt
angegeben wird. Dies könnte es ermöglichen, XSLT zu missbrauchen, um eine XML External Entity-Schwachstelle (XXE) zu erstellen und auszunutzen:
XSLT-Datei:
Check the XSLT-Seite:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)