Die Analysen dieser Angriffe haben bislang zwei Schwachstellen ergeben:
1. die PHP-Einstellung register_globals darf nicht auf on stehen, sonst haben Hacker leichtes Spiel
2. in älteren Versionen von TNG als 6.1 gibt es auch mit register_globals=off eine Schwachstelle in globallib.php.
Bei der Version 6.1 ist dieser Fehler bereits behoben.
Punkt 1 kann man mit TNG leicht überprüfen.
In TNG unter "Verwaltung / Einstellung und Konfiguration / System-Überprüfung" den Button "Starte PHP-Überprüfung" klicken.
Auf der ausgegebenen Seite nach "register_globals" suchen und prüfen, ob dort off steht.
Falls "on" eingestellt ist, muss man eine Datei php.ini in jedes Verzeichnis setzen, in dem php-Code enthalten ist.
Die Datei php.ini kann mit einem Texteditor erstellt werden und enthält eine Zeile mit diesem Inhalt: "register_globals = off".
Eventuell hilft auch eine Anfrage beim Provider mit der Bitte, diese Variable pauschal auf off zu setzen, dann hat man zukünftig Ruhe.
Bei Punkt 2 muss man die Datei globallib.php anpassen.
Diesen Teil
Code: Alles auswählen
if( $_GET && is_array( $_GET ) ) {
foreach( $_GET as $key=>$value ) {
${$key} = $value;
}
}
if( $_POST && is_array( $_POST ) ) {
foreach( $_POST as $key=>$value ) {
${$key} = $value;
}
}
Code: Alles auswählen
if( $_GET && is_array( $_GET ) ) {
foreach( $_GET as $key=>$value ) {
if($key == 'cms' || $key == 'lang' || $key == 'mylanguage') die("sorry!");
${$key} = $value;
}
}
if( $_POST && is_array( $_POST ) ) {
foreach( $_POST as $key=>$value ) {
if($key == 'cms' || $key == 'lang' || $key == 'mylanguage') die("sorry!");
${$key} = $value;
}
}
Gruß
Thomas