TNG vor Hackern schützen
Verfasst: 10.06.2007 18:27
Es gab wohl schon einige erfolgreiche Angriffe auf TNG.
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
bitte ersetzen mit diesem Teil:
Damit werden die übergebenen Variablen schärfer geprüft und ggf. wird die Routine hart beendet, bevor Hacker mit ihren Tricks durchkommen.
Gruß
Thomas
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