Vulnerabilitate in ZenCart

zencartO vulnerabilitate noua a fost descoperita in ZenCart versiunea 1.3.9h, adica ultima versiune. Problema a fost descoperita de Salvatore Fresta, si este descrisa pe pagina acestuia cu avertismente de securitate.

In ce consta problema? Un parametru nu este corect sanitizat inainte de a fi trimis catre functia PHP include(). In fisierul includes/initsystem.php valorile introduse pentru “loader_file” nu sunt verificate corect inainte de a se incepere includerea unui fisier. Acest lucru poate fi exploatat pentru includerea de fisiere.

Vulnerabilitatea descrisa mai sus are nevoie insa ca pe serverul unde magazinul Zencart are hosting, register_globals sa fie activ: register_globals=On.

Partea vulnerabila de cod este urmatoarea:

<?php

$base_dir = DIR_WS_INCLUDES . ‘auto_loaders/’;
if (file_exists(DIR_WS_INCLUDES . ‘auto_loaders/overrides/’ . $loader_file)) {
$base_dir = DIR_WS_INCLUDES . ‘auto_loaders/overrides/’;
}

include($base_dir . $loader_file);