Suite à une annonce faite sur le site de secunia (à lire ici) zKup v2.x souffrait d’un gros problème de sécurité. Il était possible d’ajouter des administrateurs et il y avait aussi une possibilité d’injections php.

Ce problème étant signalé, j’ai posté une mise à jour de zKup corrigeant ces failles.
Pour ceux qui veulent faire une mise à jour, lisez la suite !

Si vous utilisez la version 2 je vous encourage fortement à faire la mise à jour !
Les utilisateurs de la version 1 ne sont pas concernés par ce problème.

N’hésitez pas à me signaler tout bug ou problème !

Modifications à faire si vous voullez faire les corrections à la main :

Fichier : admin/configuration/modifier.php

  • Ligne 36 : Ajouter après
    • # ***** AVERTISSEMENT SUR LA LICENSE *****
    • ceci
      @session_start();if ( !isset($_SESSION['estAuth']) || (isset($_SESSION['estAuth']) && $_SESSION['estAuth']!=1) || !ereg($_SERVER['HTTP_HOST'],$_SERVER['HTTP_REFERER'])){
      die();
      }

Fichier : includes/common.php

  • Ligne 72 : Remplacer
    • if ( !defined(‘CHEMIN’) )
      {
      $chemin_tmp = dirname(dirname(__FILE__));
    • par
      if ( !defined(‘CHEMIN’) )
      {
      define(‘CHEMIN’,dirname(dirname(__FILE__)));

      $chemin_tmp = dirname(dirname(__FILE__));

  • Ligne 86 : Avant la ligne
    • register_shutdown_function(‘arret’);
    • Ajouter
      function prepare_post($var){
      if(get_magic_quotes_gpc())
      return stripslashes($var);
      else
      return $var;
      }

Fichier : include/classe_config.php

  • Ligne 96 : Ajouter deux slash ( // ) devant
    • //$contenu .= ‘define(« CHEMIN », »‘.$this->tab['chemin'].’ »);’;
  • Ligne 118 : Supprimer la ligne
    • define(« CHEMIN », »‘.dirname(dirname(__FILE__)).’ »);

Fichier : include/fct_xml.php

  • Ligne 88 : Remplacer
    • if (eregi(« (« .addslashes(CHEMIN). »){1}(.)* »,$fichier) ) return $fichier;
    • par
      if (eregi(« ^ ».addslashes(CHEMIN). »(.*)$ »,$fichier) ) return $fichier;

Fichier : admin/auth.php

  • Ligne 67 : Remplacer
    • if (!defined(‘CONFIG’)) { include(CHEMIN.’/include/classe_config.php’); }
    • par
      if (!defined(‘CONFIG’)) { include(‘../include/classe_config.php’); }