Ssi Server Side Injection

Was ist eine SSI Injection (Server-Side-Injection)?

SSI Injection (Server-Side-Injection) ist eine Angriffstechnik, die eine Schwachstelle in Webanwendungen ausnutzt, die vom Anwender eingetragene Daten vor dem Einfügen in eine HTML-Datei nicht vorher „reinigt“. Ohne diese Reinigung der Eingabe kann ein Angreifer beliebige Systembefehle ausführen lassen. Ein SSI-Injection-Angriff ist nur dann erfolgreich, wenn der Webserver die SSI-Ausführung ohne zuverlässige Validierung durchführt.

Wie kann das korrekte Verhalten einer Webseite geprüft werden?

Webseitenbetreiber können die Validierung und Verarbeitung von Eingabefeldern in HTML-Dokumenten überprüfen. Dafür fügen sie Zeichen wie „<, !, #, =,/“ in SSI-Direktiven ein. Bei der Validierung muss dann eine Fehlermeldung erfolgen und die Seite muss die Weiterverarbeitung solcher Zeichen unterbinden. Auch kann der Betreiber eine Anwendung auf eine Schwachstelle überprüfen, indem er die Existenz von Seiten mit der Endung .stm, .shtm und .shtml überprüft. Gibt es solche Dateien auf dem Webserver nicht, bedeutet das jedoch nicht, dass die Webseite gegen SSI-Injection-Attacken geschützt ist.

Welche Risiken hat eine schwache Validierung?

Die Server-Side-Injection ist nur dann erfolgreich, wenn der Webserver die Ausführung einer SSI ohne richtige Validierung erlaubt. In der Folge kann der Angreifer über Zugriffsrechte verfügen, das Dateisystem manipulieren und die laufenden Prozesse verändern. Der Webserver führt die Befehle aus, bevor die Seite angezeigt wird. Das Resultat des Angriffs wird dann beim nächsten Besuch der Seite sichtbar.

Beispiel

Die für SSIs verwendeten Kommandos variieren je nach eingesetztem Betriebssystem auf dem Server. Zum Beispiel zeigt die Ausführung des Befehls „<!--#exec cmd="dir" ->“ eine Liste der Dateien im aktuellen Verzeichnis an. Der Befehl „<!--#exec cmd="cd C:\admin\dir">" öffnet den Zugang zu einem Verzeichnis. Bei den IIS-Versionen 4.0 und 5.0 gibt es eine Schwachstelle, über die sich ein Angreifer mithilfe eines Buffer-Overflows Systemrechte verschaffen konnte. Der Grund war ein Fehler in der dynamischen Bibliothek ssinc.dll. Der Server wird gezwungen eine zuvor angelegte bösartige Seite mit dem SSI-Code auszuführen und zeigt anschließend eine leere Seite an.