Autor |
Nachricht |
Aenna81
Threadersteller
Dabei seit: 03.11.2007
Ort: Witten
Alter: 42
Geschlecht:
|
Verfasst Do 14.10.2010 10:38
Titel Hilfe! Webseite "gehackt", Spammails verschickt // |
|
|
Hallo zusammen,
eine von mir programmierte Webseite (liegt bei 1&1) wurde "gehackt".
Eine fremde php-Datei wurde auf dem Server gespeichert und tausende Spam-Mails wurden verschickt.
Es liegt an einer Sicherheitslücke in meinem PHP-Script, laut 1&1 an
/index.php $mode
Zur Webseite:
ich habe eine Index-Datei in die dann die einzelnen php-modes eingebunden sind. Der Code lautet
Code: |
if($_GET[mode]=="")
$main = "musterseite";
else
$main = $_GET[mode];
include("$main.php");
|
Das ist wohl die Schwachstelle.
Gibt es eine einfache Lösung für dieses Problem?? Wenn ihr weitere Infos braucht, schreibt mir, ich bin nur momentan etwas überfordert.
Danke und LG,
Anna
Zuletzt bearbeitet von Smooth-Graphics am Do 14.10.2010 10:41, insgesamt 1-mal bearbeitet
|
|
|
|
|
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 14.10.2010 10:46
Titel
|
|
|
Wundert ja auch nicht. Du hast die Abfrage unescaped in dein Scriptaufruf eingebaut.
htmlspecialchars, striptags und viele andere sicherheitsrelevante Funktionen wären mal ganz zuerst wichtig.
Da fehlen dir wohl noch einige Grundlagen.
Vielleicht wärst du bei SSI besser aufgehoben oder gleich einer CMS Lösung?
|
|
|
|
|
Anzeige
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 14.10.2010 10:50
Titel
|
|
|
tja ---- tröste Dich, Du bist nicht die Einzige, die so einen Mist schreibt.
Erstelle zuerst eine Whitelist aller Seiten:
Code: |
$pages = array(
'main' => 'main.php',
'seite1' => 'seite1.php',
'seite2' => 'seiten/seite2.php'
[...]
);
|
Dann den Request prüfen und die entspr. Seite raussuchen:
Code: |
if(isset($_GET['mode']) && array_key_exists($_GET['mode'], $pages))
{
include dirname(__FILE__) . DIRECTORY_SEPARATOR . $pages[$_GET['mode']];
exit(0);
}
// FEHLERBEHANDLUNG
...
|
Aber ganz ehrlich: An Deiner Stelle würd ichs einfach sein lassen.
Zitat: | Wundert ja auch nicht. Du hast die Abfrage unescaped in dein Scriptaufruf eingebaut.
|
Das sollte natürlich ebenfalls oberstes Gebot sein!
Zuletzt bearbeitet von bacon am Do 14.10.2010 10:52, insgesamt 2-mal bearbeitet
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Do 14.10.2010 10:53
Titel
|
|
|
um mal grob zu erläutern, du erlaubt jedem user, der dir über die url einen befehl mitgibt, ihn auszuführen, da du, wie smooth schon erwähnt, nichts abfängst. vertraue NIEMALS usereingaben.
eine "schnelle" lösung wäre zb wie folgt:
Code: |
if($_GET["mode"] == "") $main = "musterseite";
else
{
switch($_GET["mode"])
{
case "erwartete eingabe": $main = "bladatei.php"; break;
case "andere erwartete eingabe": $main = "bladatei2.php"; break;
// und so weiter
default: $main = "musterseite"; break;
}
}
include($main.php);
|
darüber hinaus, $_GET[main] ist falsch und hätte bei vernünftiger konfiguration zumindest ein warning werfen müssen. main ist ja keine konstante (die eh gross geschrieben werden müssten), deswegen musst du den get-aufruf in anführern setzen (wie in meinem beispiel).
nichts desto trotz solltest du dir dringen grundlagen aneignen und das ganze jetzt nciht via c&p hernehmen und verwenden.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Spammails über Emailadressen auf Websites
Website wurde wahrscheinlich gehackt - javascript
[Help] Was machen, wenn die eigene site gehackt wurde?
php verschickt leere emails
(PHP)Kontaktformular verschickt keine Nachricht
PDF erstellen das sich selbst verschickt - an Emailadresse
|
|