hi $name,
um das zu beurteilen, brauchen wir mehr Hinweise als nur die paar Zeilen Code. Tatsache ist aber, so böse das klingt, dass eben diese paar Zeilen schon Unsinn sind.
http://www.securityfocus.com/archive/1/484045
mehr weiß ich leider auch nicht, außer das der hack funktioniert.
Und woher bekommst du $language_file? Da solltest du ansetzen.
in einem include der (fast) überall eingebunden wird:
function setupLanguage() {
global $config, $user_lang, $tb_language;
$path = $_SERVER['DOCUMENT_ROOT'] . $config['talkback_path'] . 'language/';
if ($_REQUEST['language'] && $_REQUEST['language'] != $config['default_language']) {
$language_file = $path . $_REQUEST['language'] . '.php';
$user_lang = $_REQUEST['language'];
} elseif ($tb_language) {
$language_file = $path . $tb_language . '.php';
$_REQUEST['language'] = $tb_language;
$user_lang = $tb_language;
} else {
$language_file = $path . $config['default_language'] . '.php';
$_REQUEST['language'] = '';
$user_lang = $config['default_language'];
}
return $language_file;
}
Es ist witzlos, wenn du zwei konkrete Dateien auf Existenz prüfst, und dann doch wieder eine beliebige andere includierst.
*schäm* stimmt, ich habs geändert:
include ("language/english.php");
original:
include $config['comments_form_tpl'];
Das könnte relativ "sicher" sein, wenn du $config[] selbst mit erlaubten Werten initialisierst.
ist per config.php mit werten initalisiert, aber trotzdem wurde das als sicherheitslücke moniert.
Hier steckt dieselbe verdrehte Logik drin, wie ich oben schon kritisiert habe.
*schäm* stimmt, ich habs geändert:
include ("comments-form-tpl.php");
Du hast doch wohl hoffentlich nicht register_globals aktiviert? Dann stell das mal schnellstens ab. Das wäre schon ein erster Schritt, dass dir Fremde nicht beliebige Variableninhalte unterjubeln können.
ja, register_globals ist aktiviert (nicht von mir). und per .htaccess läßt sich das leider nicht ausschalten (error 500).)
gruss
shadow
--
If there's anything more important than my ego around, I want it caught and shot, now.