Viren, Spyware, Datenschutz 11.258 Themen, 94.807 Beiträge

@bomania

xafford / 14 Antworten / Baumansicht Nickles

Hi, ich wollte nochmal auf dien Posting bezüglich des Hacks deiner Seite zurück kommen. Wie ich mir dachte liegt es an den PHP-Scripten, schau Dir mal den ersten Eintrag deines Gästebuches an und melde dich bei mir, ich erklär dir dann, wo die Lücke wahrscheinlich liegt.

Gruß Xafford

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Bomania xafford „@bomania“
Optionen

Hi, hab deine Mail bekommen und mir, wie du gesagt hast, das erste Posting meines GB angesehen. Tja, anscheinend hast du Recht. Wie bist du darauf gekommen? Und wie bist du ins Admin-Web-Frontend gelangt?

Gruß,
Björn

bei Antwort benachrichtigen
xafford Bomania „Hi, hab deine Mail bekommen und mir, wie du gesagt hast, das erste Posting...“
Optionen

Das Problem ist der include. Du hängst zwar ein .'php' an, aber include inkludiert auch Dateien über Server hinweg. Ein kleines Script auf einem anderen Server mit http://url übergeben inkludiert den fremden Code und man kann im Prinzip auf deinem Webspace machen, was man will.
Um das zu beseitigen kannst Du entweder den übergebenen Parameter besser überprüfen, was aber unsicherer ist, oder Du machst eine Positivliste, was sicherer ist. Das sollte dann ungefähr so aussehen:
switch($HTTP_GET_VARS['site'])
{
case 'blabla':
$url='url1.php';
break;
...
}

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Bomania xafford „Das Problem ist der include. Du hängst zwar ein . php an, aber include...“
Optionen

Hey vielen Dank, ich werde das morgen gleich mal umsetzen. Allerdings stellt sich mir da noch eine Frage. Wenn ich dich jetzt richtig verstanden habe, dann muss ich in der Alternation alle möglichen Sites abfragen. Ich hab etwa 22 Stück. Wenn bei jedem Seitenwechsel ein switch mit max. 22 cases durchgeführt werden muss, wird dann das Laden der Site nicht langsamer? Oder macht sich die Verzögerung bei einem durchschnittlichen Webserver nicht bemerkbar?

bei Antwort benachrichtigen
xafford Bomania „Hey vielen Dank, ich werde das morgen gleich mal umsetzen. Allerdings stellt...“
Optionen

Das macht sich so gut wie nicht bemerkbar. Es wäre vielleicht meßbar im Bereich von Millisekunden, aber wirklich nicht merklich.
Wenn Du dir die Administration bei neuen Seiten erleichtern willst, dann kannst Du auch eine Datei bauen, die die Mappings von Seitenparameter und URL enthält, aber das könnte eventuell neue Lücken öffnen je nach Ausführung. Also würd ich bei 22 Seiten einen einfachen switch nutzen.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Bomania xafford „Das macht sich so gut wie nicht bemerkbar. Es wäre vielleicht meßbar im...“
Optionen

Ok, ich habe meine Website nach deinem Vorschlag hin geändert. Ich hoffe, ich habe alles richtig gemacht. Die Seiten werden jetzt mittels der switch-Anweisung inkludiert. Zur Sicherheit habe ich sämtliche Passwörter nochmal geändert. Kannst du evt. nochmal auf meiner Website vorbeischauen ob das jetzt ok ist?

Gruß,
Bo

bei Antwort benachrichtigen
xafford Bomania „Ok, ich habe meine Website nach deinem Vorschlag hin geändert. Ich hoffe, ich...“
Optionen

Sorry, aber geht immer noch. Was noch fehlt ist, daß Du die Variable $url vorbelegst, bzw sicher stellst, daß diese nicht per URL übermittelt werden kann.
Zum Beweis, daß es noch geht hab ich dir eine Bilddatei in das Verzeichnis gelegt, zu finden unter:

Screenshot

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Bomania xafford „Sorry, aber geht immer noch. Was noch fehlt ist, daß Du die Variable url...“
Optionen

Hm Mist das verstehe ich jetzt nicht wirklich. Was muss ich denn da tun, damit das funktioniert? Momentan sieht es ja so aus:

switch($HTTP_GET_VARS['site'])
{
case 'projects':
$url='prog_projects.php';
break;
case 'tricks':
$url='prog_tipps.php';
break;
....
....
include ($url);
}
?>

bei Antwort benachrichtigen
xafford Bomania „Hm Mist das verstehe ich jetzt nicht wirklich. Was muss ich denn da tun, damit...“
Optionen

aussehen sollte es so:
$url='';
switch($site)
{
case 'projects':
$url=prog_projects.php';
break;
...
default:
$url='home.php';
}
include($url);

So wäre es am sichersten.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Bomania xafford „aussehen sollte es so: url switch site case projects : url prog_projects.php...“
Optionen

Ok ich habs jetzt geändert. Wo ist eigentlich der Unterschied zwischen $HTTP_GET_VARS['site'] und $site ? Gibts da auch einen sicherheitsrelevanten Unterschied?

bei Antwort benachrichtigen
xafford Bomania „Ok ich habs jetzt geändert. Wo ist eigentlich der Unterschied zwischen...“
Optionen

Ja und nein. Es gibt dabei den Unterschied, daß $HTTP_GET_VARS['site'] die nur für Variablen gilt, die über die URL übergeben werden, wird site z.B. über ein Formular mit POST versandt wirkt es nicht.
Wenn in der php.ini allerdings register_globals auf On steht macht es sicherheitstechnisch keinen großen Unterschied, es empfiehlt sich trotzdem auf die $HTTP_ Variablen zu setzen, da register_globals ab PHP4.1.0 aus Sichehreitsgründen auf Off steht und dann $site nicht mehr gesetzt wäre auch wenn über die URL site gesetzt wird.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Bomania xafford „Ja und nein. Es gibt dabei den Unterschied, daß HTTP_GET_VARS site die nur für...“
Optionen

Ok so weit so gut. Hoffe, meine Website ist nun einigermaßen sicher vor weiteren Angriffen dieser Art. Leider musste ich meine komplette Tipps&Tricks-Rubrik runter nehmen, da nochmal gut 50 Dateien im switch berücksichtigt werden müssten. Da würde das switch dann doch einen etwas großen Umfang nehmen. Könntest du nochmal kurz testen, ob es jetzt geht?

bei Antwort benachrichtigen
xafford Bomania „Ok so weit so gut. Hoffe, meine Website ist nun einigermaßen sicher vor...“
Optionen

Also die alten Lücken scheinen geschlossen, was allerdings nicht bedeutet, daß es nicht noch andere gibt. Ich vermute aber, daß das ehemalige Einfallstor in deine Seite jetzt erst mal geschlossen ist.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Bomania xafford „Also die alten Lücken scheinen geschlossen, was allerdings nicht bedeutet, daß...“
Optionen

Das ist ja erstmal eine gute Nachricht. Dass es wahrscheinlich noch andere Sicherheitslücken in meiner Website/auf meinem PC/auf dem Webserver geben kann, ist natürlich nicht auszuschließen. Dank dir habe ich jetzt aber zumindest diese offene und leicht auszunutzende Sicherheitslücke schließen können. Komisch, dass der technische Support meines Hosters nicht auf die Idee gekommen ist. Da hieß es sofort mein PC hätte eine Sicherheitslücke. Und hier bei Nickles sah es nicht anders aus. Alle waren der Meinung, ich hätte einen Trojaner, den meine unzähligen Scanner wie Kaspersky, BitDefender, a2, PestPatrol nicht nicht finden könnten. Du warst der einzige, der sich meine Website angesehen hat und da dann auch den Fehler entdeckt hat. Also nochmals vielen Dank für deine Bemühungen und die erfolgreiche Hilfe.

Gruß,
Bo

bei Antwort benachrichtigen
xafford Bomania „Das ist ja erstmal eine gute Nachricht. Dass es wahrscheinlich noch andere...“
Optionen

Keine Ursache.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen