Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » Sécurité » » NPDS  
3 pages [ 1 | 2 | 3 ]
AuteurNPDS
Gu1ll4um3r0m41n
8  

Gu1ll4um3r0m41n
  Posté : 05-05-2007 00:07

Voila, j'ai publier sa tout à l'heure sur securityfocus donc je vous prévient quand même ^^

EDIT DE Boris :
J'ai déplacé ca dans un message caché. Ainsi, seul la TNT peut le voir, pour que perzonne n'en profite pour éventuellement faire des dégats sur des sites existants.


Message édité par : Boris / 05-05-2007 06:41


  Profil  Citation   
Boris
3430       
 

Boris
  Posté : 05-05-2007 06:40

On va regarder ca.

Merci, Gu1ll4um3r0m41n

Cependant, il existe un système de filtrage automatique des variables, donc je doute que cela soit très grave, mais on regarde quand même, on n'est jamais trop prudent.

Message édité par : Boris / 05-05-2007 06:44


  Profil  E-mail  www  Citation   
Gu1ll4um3r0m41n
8  

Gu1ll4um3r0m41n
  Posté : 05-05-2007 15:37

j'ai fait des test avant de publier...
Je doute que votre "systeme de filtrage" decode le texte encodé en base_64, le filtre (addslash & co) et le reencode ?...


Message édité par : Gu1ll4um3r0m41n / 05-05-2007 15:39


  Profil  Citation   
daumal
209     

daumal
  Posté : 05-05-2007 16:24

Merci Gu1ll4um3r0m41n
Boris, un bon chmod est très utile pour parer à cela ? (ou fichier caché et lecture seule sous Win)
A +

  Profil  www  Citation   
Tito
7758       
 

Tito
  Posté : 05-05-2007 16:32

Non, cette faille est au niveau du code PHP et non de la gestion des fichiers

Et je crois effectivement qu'elle est efficace

  Profil  E-mail  www  Citation   
Gu1ll4um3r0m41n
8  

Gu1ll4um3r0m41n
  Posté : 05-05-2007 17:13

Si elle ne l'étais pas, j'aurais pas poster ce topic ni averti des sites de sécurité ni codé un exploit -_-

  Profil  Citation   
neo_machine
598      
 

neo_machine
  Posté : 07-05-2007 16:31

C'est tout à fait exact Gu1ll4um3r0m41n et nous t'en remercions.

Cependant, dans les corrections de sécurité que tu préconises concernant la création des cookies, il me semble qu'il y à un tout petit problème.
"
$cookie[0] = inval($cookie[0);
"

Aurais-tu oublié quelque chose ?

File mainfile.php (npds v5.10), add after line 665:
"
$cookie[0] = intval($cookie[0]);
"
Encore merci.

Message édité par : neo_machine / 08-05-2007 16:33


  Profil  www  Citation   
Anonyme
19853  

Anonyme
  Posté : 07-05-2007 18:23

ch'tite correction:
---> $cookie[0] = inval($cookie[0);<= intval($cookie[0]);<-----
Fonction intval() qui permet de convertir une variable en numérique entier. rien à voir avec la sécurité mais elle prémuni contre les injections sql.
Pour les utilisateurs de versions antérieures à Sable, rechercher ça:


function cookiedecode($user) {
   $stop=false;
   if (!empty($_GET)) {
      if ($_GET[user]!="") { $stop=true; $user="BAD-GET";}
   } else if (!empty($HTTP_GET_VARS)) {
      if ($HTTP_GET_VAR[user]!="") { $stop=true; $user="BAD-GET";}
   }


et coller $cookie, etc. après.
bon boulot Gu1ll4um3r0m41n !

  Citation   
Anonyme
19853  

Anonyme
  Posté : 07-05-2007 18:32

tant que jy pense faudra peut être un patch officiel histoire de valider la soluce de Gu1, etc. La Team Npds attend quoi?

  Citation   
Gu1ll4um3r0m41n
8  

Gu1ll4um3r0m41n
  Posté : 07-05-2007 18:35

Oui en effet, la fonction première de intval est de convertir une valeur en entier mais elle peut aussi protéger contre les injection SQL quand la valeur à filtrer doit être un entier :p
Je vais donner ma fonction cookiedecode en entier ce sera plus pratique...



function cookiedecode($user) {
global $language;
$stop=false;
if (!empty($_GET)) {
if ($_GET[user]!="") { $stop=true; $user="BAD-GET";}
} else if (!empty($HTTP_GET_VARS)) {
if ($HTTP_GET_VAR[user]!="") { $stop=true; $user="BAD-GET";}
}
if ($user) {
$userX = addslashes(base_64_decode($user));
$cookie = explode(":", $userX);
$cookie[0] = intval($cookie[0]);
if (trim($cookie[1])!="") {
$result = mysql_query("select pass, user_langue from users where uname='$cookie[1]'");
if (mysql_num_rows($result)==1) {
list($pass, $user_langue) = mysql_fetch_row($result);
if (($cookie[2] == md5($pass)) AND ($pass != "")) {
if ($language!=$user_langue) {
mysql_query("UPDATE users set user_langue='$language' where uname='$cookie[1]'");
}
return $cookie;
} else {
$stop=true;
}
} else {
$stop=true;
}
} else {
$stop=true;
}
if ($stop) {
setcookie("user","",0);
unset($user);
unset($cookie);
header("Location: index.php");
}
}
}



faire
$userX = addslashes(base_64_decode($user));
est plus pratique que
$cookie[1] = addslashes($cookie[1]);
$cookie[2] = addslashes($cookie[2]);

:=)

PS:
Sinon, en attendant le patch officiel, il est possible de protéger un site tournant sur NPDS du en désactivant le bloc User ;)

Message édité par : Gu1ll4um3r0m41n / 07-05-2007 19:53


  Profil  Citation   
developpeur
24581       
 

developpeur
  Posté : 07-05-2007 23:32

Merci en tous les cas. Je regarde cela dès demain et je publi un correctif au plus vite

A suivre

  Profil  E-mail  www  Citation   
developpeur
24581       
 

developpeur
  Posté : 08-05-2007 22:14

1er Security Report :
- le addslashes ne me semble pas indispensable compte tenu de la présence du grabber (grab_globals.php)

Je propose donc :
// from Gu1ll4um3r0m41n - 08-05-2007
settype($cookie[0], "integer");
$cookie[1]=urlencode($cookie[1]); // j'en profite

  Profil  E-mail  www  Citation   
developpeur
24581       
 

developpeur
  Posté : 08-05-2007 22:35

2emem Security Report :

Je propose :
// from Gu1ll4um3r0m41n - 08-05-2007

return (urlencode($realip));

Quand pensez-vous / les deux corrections ne touche que le mainfile. Je peut donc faire une news + un correctif pour sable + une MAJ des versions actuellements disponibles.

A suivre

  Profil  E-mail  www  Citation   
Gu1ll4um3r0m41n
8  

Gu1ll4um3r0m41n
  Posté : 08-05-2007 22:44

pourquoi urlencoder l'ip... il suffit simplement de ne pas tenir compte du X_FORWARDED_FOR ni du CLIENT_IP... REMOTE_ADDR est suffisant ;)

Et sinon, pour l'autre truc, meme si le fichier grab_global (qui est d'ailleurs à plus d'inconvénients que d'avantages...) addslashes tout, il faut garder a l'espris que les cookies user et admin sont encodées en base_64. Une chaine encodé en base_64 étant alphanumerique (avec quelques caract speciaux), le fichier grab_global (ou meme les magic_quotes_GPC) n'ont aucun effets sur eux :p
Je pense donc qu'il est utile d'addslasher les cookies une fois décoder ;)

Sinon, pour être un peut critique, je ne recommanderais surement pas NPDS a un ami pour sa sécurité... On dirais que c'est basé sur une vieille (très vieille ><) version de PHP-Nuke -qui est déjà pas top niveau secu- mais que pour chaque faille de PHP-Nuke, NPDS n'as pas été patcher...


Message édité par : Gu1ll4um3r0m41n / 08-05-2007 22:50


  Profil  Citation   
developpeur
24581       
 

developpeur
  Posté : 08-05-2007 22:47

Pour Addslashes : vraie / je suis allez trop vite ...

Pour l'IP - la correction porte sur l'ensemble de la fonction et me semble plus simple à mettre en oeuvre pour un novice qui aurait une ancienne version de NPDS que de toucher les IF ...

NPDS est effectivement basé sur une ancienne version de PHP-Nuke / Maintenant nous avons fait des efforts pour améliorer un max de choses et le code n'est pas si ressemblant que cela (sauf pour certains fichiers ammenés à disparaitre dans un proche avenir)

Message édité par : developpeur / 08-05-2007 22:50


  Profil  E-mail  www  Citation   
Aller à la page : [ 1 | 2 | 3 ]
  
Sauter à :

Temps : 0.02 seconde(s)