Quickie: Einfügen eines <script> Elements mit Schadcode drin, etwa in ein Formular oder URL-Parameter
Zum Thema gehören folgende Artikel:
XSS HTML Injection
Cros-Site Scripting ist bereits seit den Neunzigerjahren bekannt. Damals wurde hauptsächlich mit Javascript-Code Daten von ausserhalb geladen und ausgeführt. So konnte ein Angreifer etwa die Session des aktuellen Benutzers für seine eigenen Zwecke verwenden.
Typischerweise erwartet eine Webapplikation eine bestimmte Eingabe und erhält stattdessen aber einen Angriff, etwa in Form eines <script> Elements. Ein <script> Element kann dabei einen Skript enthalten, etwa in Javascript, welches client-seitig ausgeführt wird. Dies sollte natürlich so gut wie möglich verhindert werden.
Das heisst, wenn die Eingaben auf einer Seite nicht geprüft beziehungsweise geschützt werden, kann ein Angreifer beliebigen JavaScript Code client-seitig ausführen! Normalerweise schützt ein Browser den Benutzer nicht automatisch gegen solch eine Attacke.
Sowohl die Inputvalidierung sowie auch das Output-Escaping werden von Browsern unzureichend ausgeführt. Theoretisch können verschiedene Skriptsprachen dafür verwendet werden, etwa Microsofts VBScript, meistens wird aber JavaScript verwendet, da es dem Angreifer viele Möglichkeiten bietet.
Wichtig zu wissen ist auch, dass JavaScript Zugriff auf das Document Object Model (DOM) einer Webseite hat. HTML oder XML etwa sind als Baumstruktur abbildbar mit dem Knoten (node) als zentralen Objekt.
‚p‘ Tag und ‚class‘ Attribut als Knoten:
<p class=“hallo“>Hallo</p>
Mit den Methoden „getElementById“ oder „getElementsByName“ kann ein Angreifer auf Elemente innerhalb der Webseite zugreifen.
Angriffsschnittstellen sind: Ein Formular, URL-Parameter oder eine Möglichkeit, eine Datei hochzuladen. Ebenfalls möglich ist es, den Schadcode in ein Bild-Tag, genauer gesagt in das „src“ Attributs zu packen.
Fügt der Angreifer ein <script> Element ein, welches anschliessend zum Sender geschickt wird, kann er so Daten von Ihnen in seiner Datenbank speichern.
Dies Artikel dient als kurze Einführung in das Thema Cross-Site Scripting. Weitere Informationen dazu folgen in weiteren Blogposts.