Freitag, 15. Mai 2015

Cmsmadesimple - Sicher oder nicht sicher ?

Cmsmadesimple verwendet in der aktuellen 1 er Version einen Funktion 'sanitize_input_array' um $_GET und $_SERVER zu putzen:

// sanitize $_GET
array_walk_recursive($_GET, 'sanitize_input_array');
// sanitize $_SERVER
array_walk_recursive($_SERVER,'sanitize_input_array');

Sie wird in der include.php aktiviert und sonst nirgendwo.

$_POST und $_REQUEST werden nicht gefiltert !!

In der index.php gibt es die interessante Stelle (nach der Einbindung include.php)

$params = array_merge($_GET, $_POST);
$smarty = $gCms->GetSmarty();
$smarty->params = $params;

array_merge hat die Eigenschaft das Keys des zweiten Arrays die identisch in dem ersten vorhanden sind, den ersten überschreiben.

Das bedeutet - ungefilterte $_POST gelangen in die $params und können bei Schlüsselgleichheit $_GET überschreiben.

$params wird mit Smarty reichlich verwendet.

Mit anderen Worten  hier gibt es eine Einflugschneise für böse Buben die ein wenig programmieren können.

$_POST kommt rund 678 mal im Quellcode vor, $_REQUEST 129 mal.

Nachtrag:

Die Funktion welche den Schutz bringen soll ist ein Witz:

function sanitize_input_array(&$value, $key)
{
  $value = preg_replace('/\<\/?script[^\>]*\>/i', '', $value); //the i makes it caseinsensitive
  $value = preg_replace('/javascript\:/i', '', $value); //the i makes it caseinsensitive
}
Sie deckt noch nicht einmal annähernd das ab was böse Buben so fabrizieren.

Keine Kommentare:

Kommentar veröffentlichen