Ticket #293 (closed: fixed)
problème de sécu? $nocheck devrait être une constante
| Reported by: | anarcat | Owned by: | anarcat |
|---|---|---|---|
| Priority: | normal | Milestone: | alternc-0.9.3 |
| Component: | Bureau: général | Version: | mailman-1.5 |
| Severity: | block | Keywords: | |
| Cc: |
Description
la variable $nocheck devrait etre une constante. ainsi, si config_real.php est inclus par erreur, il ne peut, dans aucune circonstance, être forcé de bypasser les vérifications de sécurité.
ADDITIONAL INFORMATION: présentement, le fichier config_real.php est celui qui contrôle l'authentification et les sessions, et donc qui dénie l'accès à qui ne faut pas.
pour les scripts externes, il extiste un script config_nochk.php qui bypass les checks de sécu grâce à la variable $nocheck. cette variable est vérifiée avant de vérifier le login: si elle est 1 (un), le check est complètement bypassé:
/* Check the User identity (if required) */ if (!$nocheck) {
if (!$mem->checkid()) {
$error=$err->errstr(); include("index.php"); exit();
}
}
ceci peut poser un problème de sécurité si quelqu'un oublie de régler cette variable. la variable pourrait aussi se retrouver dans une session et être importée directement dans le scope du script si register_globals est à on.
Change History
comment:2 Changed 9 years ago by anarcat
- Owner changed from anonymous to anarcat
- Status changed from new to assigned
comment:3 Changed 9 years ago by anarcat
ce qu'il faudrait faire:
1- fusionner config_real.php dans config.php et enlever config_real.php 2- faire que config.php fait "nocheck" seulement si la CONSTANTE NOCHECK est definie et réglée à 1 3- faire que config_nochk.php inclus config.php après avoir défini la constante

voici les fichiers problemes:
% grep -r 'nocheck' . ./bureau/class/config.php:$nocheck=0; ./bureau/class/config_nochk.php:$nocheck=1; ./bureau/class/config_real.php:if (!$nocheck) { ./install/scripts/newone.php.~1.3.~:$nocheck=1;
egrep -r -n 'config_nochk.php' . /dev/null ./bureau/admin/domlist.php:30:require_once("../class/config_nochk.php"); ./bureau/admin/index.php:31:require_once("../class/config_nochk.php"); ./bureau/admin/mem_cm.php:31:require_once("../class/config_nochk.php"); ./bureau/admin/mem_cm2.php:31:require_once("../class/config_nochk.php"); ./bureau/class/CVS/Entries:2:/config_nochk.php/1.1/Wed May 19 14:23:06 2004 ./bureau/class/config_nochk.php:3: $Id: config_nochk.php,v 1.1 2004/05/19 14:23:06 benjamin Exp $ ./bureau/class/cryptall.php:10:include("config_nochk.php"); ./install/scripts/newone.php:35:require("/var/alternc/bureau/class/config_nochk.php"); ./modules/main:26:class/config_nochk.php ./alternc-webalizer/webalizer.cache.php:include("/var/alternc/bureau/class/config_nochk.php");
grep finished (matches found) at Thu Oct 28 00:33:41
le probleme risque d'apparaitre si d'autres scripts utilisent $nocheck.