Sec-07-Web Security Flashcards

1
Q

Was ist das Hauptthema der Vorlesung?

A

Es geht um Web-Sicherheit, wobei insbesondere Angriffe auf Server und Clients behandelt werden. Dabei wird auch kurz auf Web-Sessions eingegangen, die als verbindendes Element zwischen den beiden Angriffskategorien dienen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Angriffstypen werden in dieser Vorlesung differenziert?

A

Die Vorlesung unterscheidet zwischen serverseitigen Angriffen (z. B. Code Injection, Path Traversal) und clientseitigen Angriffen (wie dem klassischen Cross Site Scripting). Zwischen diesen beiden Themen wird auch die Rolle von Web-Sessions erläutert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was versteht man unter Web-Anwendungen und welche Technologien kommen dabei zum Einsatz?

A

Web-Anwendungen sind Programme, die im Internet laufen. Früher beschränkte sich das meist auf die Kommunikation zwischen einem Webbrowser und einem Webserver über HTML, HTTP und HTTPS.

Heutzutage handelt es sich um ein Konglomerat aus vielen Technologien:

Clientseite: Fast immer läuft JavaScript im Browser (früher auch Flash und andere aktive Inhalte).

Serverseite: Neben traditionellen Sprachen wie PHP, ASP und JSP kommt mittlerweile auch Node.js (JavaScript) zum Einsatz.

Datenkommunikation: SQL spielt als Datenbanksprache eine Rolle, und Formate wie XML und JSON sind Standard für den Datenaustausch zwischen Browser und Server.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie funktioniert das einfachste Modell einer Web-Anwendung?

A

In der simpelsten Form sendet der Webbrowser eine HTTP-Anfrage an einen Webserver, der im Hintergrund mit einer Datenbank verbunden ist. Der Webserver verarbeitet die Anfrage und liefert daraufhin eine HTTP-Antwort zurück, die die gewünschten Daten enthält. Natürlich sind reale Anwendungen (wie Facebook, eBay oder YouTube) wesentlich komplexer und bestehen aus vielen Komponenten und Datenbanken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welche allgemeinen Sicherheitsprobleme können in Web-Anwendungen auftreten?

A

Neben Problemen auf den unteren Netzwerkschichten (wie unverschlüsselter Kommunikation oder unsicher gespeicherten Passwörtern) gibt es spezifische Schwachstellen auf Anwendungsebene.

Dazu zählen insbesondere Code Injection Angriffe – etwa SQL Injection und Path Traversal – die zu Informationsleckage sowie Beeinträchtigungen der Integrität und Verfügbarkeit führen können.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist SQL Injection und wie funktioniert sie?

A

SQL Injection ist ein Angriff, bei dem ein Angreifer bösartigen SQL-Code in eine dynamisch zusammengesetzte SQL-Abfrage einschleust. Dadurch wird die Logik der Abfrage manipuliert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist ein klassisches Bespiel für SQL Injection ?

A

Ein klassisches Beispiel: Ein PHP-Skript liest HTTP-Parameter (z. B. Name und Passwort) ein und baut daraus eine SQL-Abfrage. Wird die Eingabe nicht korrekt validiert, kann der Angreifer durch das Einschleusen zusätzlicher SQL-Befehle (wie „or 1=1“) die Authentifizierung umgehen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie illustriert das weitere Beispiel im PHP-Code den Ablauf einer SQL Injection?

A

Im Beispiel wird zunächst der Parameter „Name“ und „Password“ aus der URL ausgelesen. Anschließend wird eine SQL-Abfrage dynamisch zusammengesetzt, in der diese Parameter eingesetzt werden. Manipuliert ein Angreifer den Wert des Passworts – etwa durch das Einfügen von zusätzlichen einfachen Anführungszeichen und der Klausel „or 1=1“ –, so wird die ursprüngliche Logik der SQL-Abfrage aufgebrochen, was dazu führt, dass der Authentifizierungscheck umgangen wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Warum ist das dynamische Zusammenfügen von SQL-Befehlen mit Benutzereingaben gefährlich?

A

Durch das Zusammenfügen von Code und Daten entsteht eine Vermischung, bei der Steuerzeichen (wie einfache oder doppelte Anführungszeichen) fehlinterpretiert werden können. Dies ermöglicht es einem Angreifer, die SQL-Anweisung so zu manipulieren, dass sie nicht mehr nur Daten abfragt, sondern auch schädlichen Code ausführt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Welche Auswirkungen kann eine erfolgreiche SQL Injection haben?

A

Ein Angreifer kann damit Daten auslesen, verändern oder sogar löschen.

Insert- oder Delete-Befehle lassen sich auch ausführen – abhängig von den Datenbankrechten.

In manchen Fällen können sogar Betriebssystembefehle ausgeführt werden, was schwerwiegende/ schlimme Auswirkungen auf die Vertraulichkeit, Integrität und Verfügbarkeit der Daten hat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welche Schutzmaßnahmen werden gegen SQL Injection empfohlen?

A

Die Verwendung von Prepared Statements (vordefinierte SQL-Abfragen, in die nur Parameter eingefügt werden).

Sorgfältige Eingabevalidierung und korrektes Escaping von Steuerzeichen.

Vermeidung des dynamischen Zusammenfügens von Code und Daten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was versteht man unter Remote Code Execution (RCE) durch Code Injection?

A

Remote Code Execution bezeichnet einen Angriff, bei dem ein Angreifer auf einem entfernten System beliebigen Code ausführen kann.
Dies geschieht häufig durch das unsichere Verarbeiten von Benutzereingaben, bei dem dynamisch Shell-Befehle zusammengesetzt werden.

Bei diesem Angriff kann ein Angreifer über ein manipuliertes PHP-Skript eigene Befehle ausführen.

Zum Beispiel könnte er ein Semikolon einschleusen, gefolgt von einem Befehl wie „rm -rf /“, der alle Dateien löschen würde.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie wird bei dem Remote Code Execution Beispiel vorgegangen?

A

Ein klassisches Beispiel ist ein PHP-Skript, das einen Shell-Befehl (wie beispielsweise „cat“) mit einem Parameter ausführt.

Wird dieser Parameter nicht korrekt validiert und ein Angreifer injiziert zusätzliche Befehle – etwa durch das Einschleusen eines Semikolons (;) gefolgt von einem gefährlichen Befehl wie „rm -rf /“ –, so werden dem Server zusätzliche, schädliche Kommandos übergeben.

Das kann zu Datenverlust, Systemübernahme und schwerwiegenden Sicherheitsverletzungen führen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche Schutzmaßnahmen werden gegen Remote Code Execution empfohlen?

A

Schutzmaßnahmen umfassen die strikte Validierung und Sanitization (Säuberung) der Eingänge, die Verwendung vorbereiteter Statements und das Prinzip der minimalen Rechtevergabe, um den Schaden im Fall eines Angriffs zu begrenzen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was ist ein Path Traversal Angriff?

A

Beim Path Traversal versucht der Angreifer, durch gezielte Manipulation von Dateipfaden – beispielsweise durch Einfügen von „..“ (Punktpunkt) und URL-kodierten Slashes – auf Dateien außerhalb des vorgesehenen Verzeichnisses zuzugreifen.

Dadurch kann er sensible Dateien wie Konfigurations- oder Quellcodedateien lesen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wie genau funktioniert ein Path Traversal Angriff?

A

Der Angreifer fügt in den Dateipfad Zeichenfolgen wie „../“ ein, um aus dem aktuellen Verzeichnis auszubrechen.

Zusätzlich können Zeichen wie „%2F“ (kodierter Slash) genutzt werden, um den Angriff zu verschleiern.

So wird es möglich, auf Dateien zuzugreifen, auf die normalerweise kein Zugriff besteht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Welche Auswirkungen kann ein Path Traversal Angriff haben und wie lässt er sich verhindern?

A

Durch Path Traversal können Angreifer auf sensible System- oder Konfigurationsdateien zugreifen, was als Ausgangspunkt für weitere Angriffe genutzt werden kann.

Schutzmaßnahmen umfassen:

-Die Validierung und Normalisierung von Dateipfaden (Sanitization)

Das Verwenden eines Whitelist-Ansatzes, bei dem festgelegt wird, welche Dateien überhaupt geöffnet werden dürfen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Was ist das grundlegende Problem bei allen Formen der Code Injection?

A

Das Hauptproblem liegt im dynamischen Zusammenbau von Code aus Benutzereingaben, was dazu führt, dass Code und Daten vermischt werden.

Diese Vermischung erlaubt es einem Angreifer, Daten so zu manipulieren, dass sie wie ausführbarer Code interpretiert werden, wodurch Sicherheitslücken entstehen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

„Code vs. Data“

A

Das Beispiel zeigt, dass Entwickler in ihrem Quellcode eine klare Trennung zwischen SQL-Code (z. B. als grün markierter Teil) und später hinzukommenden Daten (z. B. lila markiert) erwarten.

Allerdings interpretiert die Datenbank diese Mischung nicht immer eindeutig – was letztlich zu Angriffen wie dem „1=1“-Szenario führen kann.

Es macht deutlich, dass die unachtsame Vermischung von Code und Daten ein großes Risiko darstellt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Was ist die zentrale Empfehlung zur Vermeidung von Code Injection Angriffen?

A

*Es sollte stets darauf geachtet werden, dass eine klare Trennung zwischen Code und Daten besteht.

*Anstatt SQL-Abfragen oder Shell-Befehle dynamisch zusammenzustellen, sollten vorbereitete Anweisungen (Prepared Statements) und eine strenge Eingabevalidierung verwendet werden, um sicherzustellen, dass Eingaben niemals als ausführbarer Code falsch interpretiert werden können.

21
Q

Fazit für Behebung der Server seitige Angriffen:

A

Die vorgestellten Beispiele – von SQL Injection über Remote Code Execution bis hin zu Path Traversal – machen deutlich, dass dynamisches Zusammenfügen von Code und Daten ein grundlegendes Sicherheitsrisiko darstellt.

Eine sorgfältige Validierung und Trennung von Eingaben ist essenziell, um die Integrität, Vertraulichkeit und Verfügbarkeit von Web-Anwendungen zu gewährleisten.

22
Q

Was bedeutet es, dass HTTP/HTTPS „zustandslos“ (stateless) sind, und warum ist das in modernen Webanwendungen problematisch?

A

HTTP und HTTPS wurden ursprünglich als zustandslose Protokolle gestaltet.

Das heißt, jeder Request (Anfrage) wurde als in sich abgeschlossener Vorgang betrachtet („Ich hole mir die Webseite, schaue sie mir an und das war’s“).

Für moderne Anwendungen – etwa im Online-Shopping, Banking, Gaming oder sozialen Netzwerken – reicht das nicht aus, da der Server den Zustand eines Benutzers (wie etwa den Login-Status oder den Inhalt eines Warenkorbs) über mehrere Anfragen hinweg speichern muss.

23
Q

Was passiert ohne Zustandsverwaltung in einer Webanwendung ?

A

Ohne die Zustandsverwaltung (z.B : Zustand eines Benutzers wie etwa den Login-Status oder den Inhalt eines Warenkorbs) müssten sich Benutzer bei jeder neuen Anfrage neu authentifizieren, was die Benutzerfreundlichkeit stark verringert.

24
Q

Wie wird in Webanwendungen typischerweise ein „Zustand“ (Session) realisiert?

A

Um den Zustand eines Benutzers zu verwalten, wird eine Session (Sitzung) eingerichtet.

-> Beim ersten Kontakt mit der Anwendung wird dem Benutzer eine Session-ID zugewiesen.

-> Diese ID – in der Regel ein langer, zufälliger String – dient als eindeutiger „Staffelstab“, der über alle folgenden HTTP-Requests mitgeführt wird.

Dadurch kann der Webserver jederzeit erkennen, zu welcher Sitzung ein bestimmter Request gehört, ohne dass der Benutzer sich bei jeder Anfrage erneut authentifizieren muss.

25
Welche drei Technologien gibt es zur Übertragung der Session-ID in Webanwendungen?
Die drei Ansätze, die zur Übertragung und Verwaltung von Session-IDs verwendet werden, sind: URL Rewriting: Hierbei wird die Session-ID als Parameter an jede URL angehängt. Form-basierte Session-IDs: Die Session-ID wird in einem versteckten (hidden) Feld in HTML-Formularen eingebettet, sodass sie im Body der HTTP-Anfrage übertragen wird. Cookies: Die Session-ID wird als Cookie im Browser des Benutzers gespeichert und automatisch bei nachfolgenden Anfragen mitgesendet.
26
Wie funktioniert das URL Rewriting ?
Beim URL Rewriting wird an jede in der Webseite verwendete URL die Session-ID als Parameter angehängt. Frameworks können diesen Prozess automatisieren. Zwei wesentliche Nachteile ergeben sich dabei:
27
Welche Nachteile bringt die URL-Rewriting mit sich?
Integrationsproblem: Jede URL muss explizit um die Session-ID ergänzt werden, da andernfalls die Verbindung zur bestehenden Session verloren geht. Dies führte in der Vergangenheit teilweise dazu, dass Nutzer unerwünschterweise ausgeloggt wurden, wenn Links nicht korrekt ergänzt waren. Sicherheitsrisiko: Da die Session-ID in der URL sichtbar ist, kann sie beispielsweise über den HTTP Referer an andere Webseiten weitergegeben werden. Dadurch besteht das Risiko, dass unbefugte Dritte auf die Session zugreifen, wenn sie diese Information abfangen/fangen.
28
Was sind form-basierte Session-IDs ?
Bei form-basierten Session-IDs wird die Session-ID als verstecktes Feld in HTML-Formularen mitgesendet. Die Übertragung erfolgt dann meist über einen POST-Request, wodurch die Session-ID nicht in der URL sichtbar ist und somit nicht im Referrer-Feld auftaucht.
29
Welche Probleme treten bei der Verwendung der form-basierten Session-IDs auf?
Der Nachteil dieser Methode liegt darin, dass sie nicht mit dem „Zurück“-Button des Browsers kompatibel ist. Wird der Back-Button genutzt, gehen die im Formular übermittelten Informationen verloren. Dies kann dazu führen, dass der Benutzer auf einer Seite plötzlich den Session-Zustand verliert, weil die notwendigen Parameter nicht wiederhergestellt werden.
30
Wie werden Cookies zur Session-Verwaltung eingesetzt und welche Vorteile bieten sie?
Cookies sind kleine Datensätze (Key-Value-Paare), die im Browser des Nutzers persistent gespeichert werden. Bei der Session-Verwaltung gibt der Server einen Cookie (beispielsweise mit der Session-ID) aus, der im sogenannten „Cookie Jar“ des Browsers abgelegt wird. Bei folgenden Anfragen sendet der Browser den Cookie automatisch mit, sodass der Server die Sitzung des Nutzers fortführen kann.
31
Welche Sicherheitsaspekte müssen bei der Verwendung von Session-IDs beachtet werden?
Aus Sicherheitsgründen ist es essenziell, dass die Session-ID schwer zu erraten ist. Dies wird durch die Verwendung eines langen und zufälligen Strings erreicht. Weiterhin muss vermieden werden, dass die Session-ID in unsicheren Kontexten (etwa unverschlüsselten Verbindungen oder in URLs) übertragen wird, um ein „Mitlesen“ durch Dritte zu verhindern. Ein weiteres Risiko besteht darin, dass ein Angreifer den Browser dazu bringen könnte, die Session-ID an eine fremde Webseite zu senden – ein Angriff, der beispielsweise durch Cross-Site Scripting (XSS) ermöglicht werden kann. Deshalb müssen entsprechende Sicherheitsvorkehrungen getroffen werden, um zu verhindern, dass böswilliger Code Zugriff auf den Cookie und somit auf die Session erhält.
32
Was versteht man unter Web-Sicherheit und warum ist sie wichtig?
Web-Sicherheit bezieht sich auf die Maßnahmen und Strategien, die notwendig sind, um Webanwendungen und die über sie übertragenen Daten vor Angriffen zu schützen. Sie umfasst sowohl serverseitige als auch clientseitige Angriffe. Der Schutz ist essenziell, da moderne Webseiten häufig dynamische Inhalte und interaktive Funktionen bieten, die durch Technologien wie JavaScript ermöglicht werden. Diese Vielfalt an Funktionen eröffnet Angreifern verschiedene Einfallstore, um sensible Informationen wie Session-IDs, Cookies oder Benutzerdaten zu stehlen.
33
kompromittiert = ? (z.B; stehlen oder manipulieren) Injection of JavaScript code = compromise of web browser
unberechtigt in ein Computersystem eindringen und dort gespeicherte Daten ausspähen oder manipulieren. Beispiel: Unter Kompromittierung wird in der Kryptologie die Bloßstellung (Blamage) einer verschlüsselten Nachricht, also eines Geheimtextes, verstanden.
34
Was sind clientseitige Angriffe und wie unterscheiden sie sich von serverseitigen Angriffen?
Clientseitige Angriffe zielen direkt auf den Browser oder das Endgerät des Nutzers ab, anstatt den Server zu attackieren. Dabei werden Schwächen ausgenutzt, die in der Ausführung von JavaScript oder der Verarbeitung von HTML-Inhalten liegen. Im Gegensatz zu serverseitigen Angriffen, bei denen etwa Sessions oder Serverlogiken kompromittiert werden, wird bei clientseitigen Angriffen versucht, lokale Daten (z. B. Cookies oder Formularinhalte) zu stehlen oder zu manipulieren.
35
Welche Rolle spielt JavaScript in Bezug auf Web-Sicherheit?
JavaScript ist ein zentrales Werkzeug moderner Webentwicklung, das ursprünglich zur Verbesserung der Benutzerinteraktion eingeführt wurde. Heute kann JavaScript nahezu jeden Aspekt einer Webseite dynamisch verändern – von Inhalten über URLs bis hin zu Formularen und Cookies. Diese Flexibilität macht es jedoch auch zu einem attraktiven Angriffsziel, da bösartiger Code – wenn er in den Kontext der Zielwebseite injiziert wird – großen Schaden anrichten kann. Daher wird JavaScript oft als "Wurzel des Übels" betrachtet, wenn es um clientseitige Sicherheitsrisiken geht.
36
Was ist die Same Origin Policy und warum ist sie von Bedeutung?
Die Same Origin Policy (SOP) ist ein Sicherheitsmechanismus, der den Zugriff von Skripten auf Inhalte einer Webseite regelt. Sie besagt, dass JavaScript nur dann auf Elemente (wie HTML-Code, Formulare oder Cookies) zugreifen darf, wenn diese vom gleichen Ursprung (d.h. gleichem Protokoll, Host und Port) stammen. Dies verhindert, dass fremder Code, der beispielsweise von Drittanbietern wie Google oder Microsoft geladen wird, auf sensible Daten zugreift, die einer anderen Domain (wie ebay.de) zugeordnet sind.
37
Wie wird festgestellt, ob zwei Elemente denselben Ursprung haben? (Same Origin Policy)
Zwei Elemente werden als vom gleichen Ursprung stammend angesehen, wenn drei Kriterien übereinstimmen: Protokoll: Das Schema vor dem Doppelpunkt (z. B. http oder https). Host: Die Domain oder IP-Adresse nach den zwei Schrägstrichen. Port: Der in der URL angegebene Port oder der implizit verwendete Standardport (80 für HTTP und 443 für HTTPS). Erfüllen zwei Elemente diese Kriterien, so dürfen sie laut Same Origin Policy aufeinander zugreifen.
38
Was versteht man unter Cross-Site Scripting (XSS) ?
Cross-Site Scripting (XSS) ist eine Angriffstechnik, bei der bösartiger JavaScript-Code in eine ansonsten vertrauenswürdige Webseite eingeschleust wird. Kurz gesagt: XSS-Angriffe nutzen mangelnde Validierung von Nutzereingaben aus, um Schadcode in Webseiten zu injizieren, der dann im Browser unter den Sicherheitsprivilegien der Zielseite ausgeführt wird
39
Was zielt der Cross-Site Scripting darauf ab?
Das Ziel ist es, den Code so in die Seite einzubinden, dass er im Kontext der Zielwebseite und damit unter den entsprechenden Zugriffsrechten ausgeführt wird. Dadurch kann der Angreifer auf sensible Daten zugreifen – beispielsweise auf Cookies oder Formularinhalte – oder gar Aktionen im Namen des Nutzers durchführen.
40
Welche Arten von XSS-Angriffen gibt es?
Reflected XSS: Hierbei wird der bösartige Code über eine speziell manipulierte URL an das Opfer gesendet. Der Code wird direkt im Antworttext der Webseite wiedergegeben und im Browser des Opfers ausgeführt, wenn dieser auf den Link klickt. Stored XSS: Bei dieser Variante wird der schädliche Code dauerhaft in einer Datenbank (z. B. in Benutzerprofilen oder Forenbeiträgen) gespeichert. Jeder, der auf die betroffene Seite zugreift, löst damit die Ausführung des Codes aus. DOM-based XSS: Diese Form von XSS basiert auf der Manipulation des Document Object Models (DOM) im Browser und wird häufig als eher akademisch betrachtet. Die beiden erstgenannten Varianten – Reflected und Stored XSS – sind in der Praxis weitaus verbreiteter.
41
Der XSS Angriff basiert im Wesentlichen auf Code Injection:
Eingabedaten: Oft werden unzureichend validierte oder falsch behandelte Eingabedaten ausgenutzt. Steuerzeichen und HTML-Sonderzeichen, die nicht richtig "escaped" werden, ermöglichen es, dass der eingeschleuste JavaScript-Code als solcher interpretiert wird. Server-Client-Dynamik: Während die Schwachstelle häufig auf der Serverseite liegt – etwa weil Daten ohne angemessene Prüfung direkt in den HTML-Code eingebunden werden –, erfolgt die Ausnutzung im Browser des Nutzers. Der Browser interpretiert den injizierten Code dann im korrekten "Origin"-Kontext, sodass dieser dieselben Zugriffsrechte wie der eigentliche Webseiteninhalt erhält.
42
Was unterscheidet Stored XSS von Reflected XSS?
Der Hauptunterschied liegt in der Persistenz des Schadcodes: Stored XSS: Der bösartige Code wird in einer Datenbank oder einem dauerhaften Speicher abgelegt (z. B. in Benutzerprofilen oder Kommentarfeldern). Jedes Mal, wenn ein Nutzer diese Daten abruft, wird der Code ausgeführt. Reflected XSS: Der schädliche Code wird nur über eine manipulierte Anfrage (z. B. in einer URL) an den Server übermittelt und unmittelbar in der Antwort reflektiert, ohne dauerhaft gespeichert zu werden. ***Während Reflected XSS oft als weniger raffiniert gilt, ist Stored XSS besonders gefährlich, da er automatisch viele Nutzer betrifft, ohne dass diese auf einen speziellen Link klicken müssen.
43
Welche Maßnahmen können Entwickler ergreifen, um XSS-Angriffe zu verhindern?
Um XSS zu vermeiden, sollten Entwickler folgende Maßnahmen ergreifen: Eingabevalidierung: Alle von außen kommenden Daten müssen sorgfältig geprüft werden, um sicherzustellen, dass keine schädlichen Inhalte enthalten sind. Escape-Mechanismen: Zeichen, die als Code interpretiert werden könnten (z. B. spitze Klammern), sollten beim Einfügen in HTML oder JavaScript korrekt "escaped" werden. Whitelisting: Es ist ratsam, nur explizit erlaubte Inhalte und Skripte zuzulassen, anstatt nur bestimmte Zeichen oder Muster zu verbieten. Konsistentes Escaping bei Speicherung und Ausgabe: Daten sollten entweder bereits beim Speichern in der Datenbank oder beim Abruf korrekt behandelt werden, um eine doppelte oder unzureichende Verarbeitung zu vermeiden.
44
Welche weiteren Angriffstechniken im Web-Security-Bereich werden im Text erwähnt?
Neben XSS werden im Text auch andere Angriffsarten angesprochen, unter anderem: Cross-Site Request Forgery (CSRF): Cross-Site Request Forgery (CSRF) ist ein Angriff, bei dem ein Angreifer die autorisierte Sitzung eines Opfers ausnutzt, um schädliche Aktionen durchzuführen. Bei einem CSRF-Angriff wird eine HTTP-Anfrage verwendet. Das Hauptziel ist es, dass ein betroffenes Opfer dazu gebracht wird, unwissentlich eine HTTP-Anfrage an eine Webseite zu senden, bei der es bereits authentifiziert ist. Ein Beispiel ist das Ändern von Kontodaten, indem die autorisierte Sitzung eines Opfers ausgenutzt wird. HTTP Parameter Pollution: Hierbei werden mehrfach unterschiedliche Werte für denselben Parameter übermittelt, was zu Verwirrung beim Webserver oder in dazwischenliegenden Proxies führen kann. SSL Stripping: Ein Man-in-the-Middle-Angriff, bei dem der Angreifer den Wechsel von HTTPS zu HTTP unterbindet und den Nutzer so dazu bringt, unverschlüsselte Verbindungen zu verwenden.
45
Für einen erfolgreichen CSRF-Angriff müssen folgende Bedingungen erfüllt sein:
Das Opfer muss authentifiziert sein und über eine gültige Sitzung mit der betroffenen Webanwendung verfügen. Das Opfer sollte eine aktive Sitzung haben, wenn die schädliche Anfrage gesendet wird. Das Opfer muss unwissentlich auf einen Link klicken oder eine Seite laden, die die schädliche Anfrage auslöst.
46
http://tinyurl.com/cx9cecl
Analyse: Der Link wird über einen URL-Shortener (tinyurl.com) verschleiert/verbergt. Angreifer nutzen häufig solche Dienste, um bösartige Anfragen zu verbergen. Erkenntnis: Obwohl der URL selbst keine offensichtlichen Injektionszeichen enthält, weiß man – basierend auf dem Kontext (misstrauische E-Mails und die vermutete Angriffslinie) – dass der Link zu einer Seite weiterleitet, die möglicherweise Eingaben in einer Datenbank verarbeitet. Daraus schließt man, dass hier ein SQL Injection-Angriff intendiert ist.
47
http://foo.com/?q=%3CScrIpt%3Eal%65%52t%28%29%3C%2F%73c%52ipT%3E
Analyse: Die URL enthält eine kodierte Zeichenkette, die sich beim Dekodieren in einen Script-Tag verwandelt: %3C entspricht < %3E entspricht > %65 entspricht e usw. Dadurch entsteht z. B. der Code: . Erkenntnis: Das Einfügen eines Script-Tags in eine URL, das beim Aufrufen ausgeführt wird, ist ein klassisches Beispiel für einen XSS-Angriff.
48
http://foo.com/?q=%27%20o%52%201%3D1%3B%20d%52%4Fp%20%74%62%6c
Analyse: Hier werden kodierte Zeichen verwendet, um typische SQL-Schlüsselwörter und Zeichen zu verstecken: %27 entspricht einem einfachen Anführungszeichen (') %20 entspricht einem Leerzeichen Es folgt u. a. die Konstruktion oR 1=1; dROp tbl Erkenntnis: Solche Eingaben zielen darauf ab, SQL-Abfragen zu manipulieren – z. B. indem man immer wahre Bedingungen (1=1) erzwingt oder Tabellen (tbl) löscht. Das ist ein typisches Muster eines SQL Injection-Angriffs.
49
http://foo.com/?q=%2e%2e%%35c%2e%2e%%35c%6c%6f%67
Analyse: Hier wird mit kodierten Zeichen versucht, die Pfadstruktur zu manipulieren: %2e%2e entspricht .. Die wiederholte Verwendung von solchen Sequenzen (mit weiteren kodierten Zeichen, die etwa für Backslashes stehen können) deutet auf den Versuch hin, in übergeordnete Verzeichnisse zu gelangen. Erkenntnis: Dieses Muster entspricht einem klassischen Path Traversal-Angriff, bei dem der Angreifer versucht, auf Dateien oder Verzeichnisse außerhalb des vorgesehenen Verzeichnisses zuzugreifen.