Server Side Includes (SSI)
Server Side Includes ist eine Technologie, welche von Web Applikationen genutzt wird um Dynamisch HTML Seiten zu erstellen.
SSI wird von vielen populären Web Servern unterstützt, wie Apache und IIS.
Die nutzung von SSI kann oft anhand der Datei endungen erkannt werden.
Typische Endungen sind: .shtml, .shtm und .stm.
Allerdings ist eine dieser Dateierweiterungen keine Pflicht, lediglich ein Indiz.
Direktiven
SSI benutzt Direktiven um dynamischen HTML Code zu erzeugen.
Dabei bestehen diese aus 3 Komponenten:
- name der Name der Direktive
- parameter name einer oder mehrere parameter
- value einer oder mehrere Parameter Werte
Dies sieht dabei wie folgt aus:
<!--#name param1="value1" param2="value" -->
Das folgende Beispiel zeigt die Umgebungsvariablen. Wie zu sehen ist werden, hier keine Variablen übergeben.
<!--#printenv -->
Die nächste Direktive ändert die SSI Konfiguration. Beispielsweise wird hier die Fehlermeldung geändert.
<!--#config errmsg="Error!" -->
Diese Direktive gibt den Wert jeder Variablen aus, welche in dem var Parameter steht.
Beispielsweise werden die folgenden Variablen unterstützt:
- DOCUMENT_NAME Name der aktuellen Datei
- DOCUMENT_URI Die URI der aktuellen Datei
- LAST_MODIFIED Zeit der letzten Modifikation
- DATE_LOCAL die lokale Server Zeit
<!--#echo var="DOCUMENT_NAME" var="DATE_LOCAL" -->
Die nächste Direktive kann für RCE benutzt werden, da sie Kommandos ausführt:
<!--#exec cmd="whoami" -->
Die nächste Direktive erlaubt das anzeigen von Daten, allerdings nur im webroot Verzeichnis:
<!--#include virtual="index.html" -->