Discussion:
Est-il possible de simuler une variable de session ?
(trop ancien pour répondre)
Jean-Francois Ortolo
2008-11-01 16:56:02 UTC
Permalink
Bonjour

C'est plutôt un problème de sécurité en PHP.

C'est un site en mode Safe Mode à Off, et en mode Register Globals à
On. ( C'est pas bien, c'est pas moi qui ai choisi... ;( )

Supposons une variable de session, par exemple var, que nous lisons
dans le script PHP, exclusivement avec les instructiosn suivantes ( donc
le Register Globals n'influe pas ):

if(isset($_SESSION['var']))
$var = $_SESSION['var'];
else
unset($var);

Voilà donc le contexte.

Maintenant, voici ma question: Est-ce qu'il y a au monde un moyen ou
un autre, pour un visiteur accédant à une url du site, de présenter à ce
script cette variable de session var positionnée avec une valeur (
connue ), si cette variable de session, n'a pas été positionnée avant
lors de la navigation sur le site, de ce visiteur ?

Il va sans dire, qu'il serait éventuellement possible au visiteur, de
trafiquer des scripts sur un autre serveur/site, et d'y mettre un lien
ou qqchose comme çà, vers l'url du site à hacker, après avoir fait je ne
sais quel traitement...

Mais... Est-il possible de simuler comme celà, ou d'une autre
manière, une variable de session, de l'extérieur du site ?

Et si oui, de quelle manière ? ;)

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.pronostics-courses.fr/
Jean-Francois Ortolo
2008-11-01 23:26:38 UTC
Permalink
Finalement...

Renseignement pris sur le forum www.webrankinfo.com :

Pour simuler une variable de session, il faut disposer d'un
identificateur de session, soit la valeur correcte de PHPSESSID dans mon
cas, ce qui est impossible, compte tenu de l'impossibilité pratique,
d'avoir accès à une valeur correcte, de manière rapide et simultanée. Un
identificateur de session est spécifique à une session, et a une valeur
complexe et aléatoire.

Donc, mon problème est résolu, il est pratiquement impossible de
simuler une variable de session... ;)

Bien à vous.

Amicalement.

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.pronostics-courses.fr/
Mickael Wolff
2008-11-02 21:18:18 UTC
Permalink
Post by Jean-Francois Ortolo
Pour simuler une variable de session, il faut disposer d'un
identificateur de session, soit la valeur correcte de PHPSESSID dans mon
cas, ce qui est impossible, compte tenu de l'impossibilité pratique,
d'avoir accès à une valeur correcte, de manière rapide et simultanée. Un
identificateur de session est spécifique à une session, et a une valeur
complexe et aléatoire.
Il est *très* facile de récupérer l'identifiant de session, surtout
quand il est utilisé en paramètre dans l'URL.
Post by Jean-Francois Ortolo
Donc, mon problème est résolu, il est pratiquement impossible de
simuler une variable de session... ;)
Il faudrait en avoir l'intérêt. Mais bon, pourquoi utiliser $var qui
n'est pas sûr alors que tu peux utiliser $_SESSION['var'] dont l'origine
est garantie ?
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Jean-Francois Ortolo
2008-11-03 08:06:54 UTC
Permalink
Post by Mickael Wolff
Post by Jean-Francois Ortolo
Pour simuler une variable de session, il faut disposer d'un
identificateur de session, soit la valeur correcte de PHPSESSID dans
mon cas, ce qui est impossible, compte tenu de l'impossibilité
pratique, d'avoir accès à une valeur correcte, de manière rapide et
simultanée. Un identificateur de session est spécifique à une session,
et a une valeur complexe et aléatoire.
Il est *très* facile de récupérer l'identifiant de session, surtout
quand il est utilisé en paramètre dans l'URL.
Post by Jean-Francois Ortolo
Donc, mon problème est résolu, il est pratiquement impossible de
simuler une variable de session... ;)
Il faudrait en avoir l'intérêt. Mais bon, pourquoi utiliser $var qui
n'est pas sûr alors que tu peux utiliser $_SESSION['var'] dont l'origine
est garantie ?
?

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.pronostics-courses.fr/
Patrick Mevzek
2008-11-09 20:39:39 UTC
Permalink
Post by Jean-Francois Ortolo
Pour simuler une variable de session, il faut disposer d'un
identificateur de session, soit la valeur correcte de PHPSESSID dans mon
cas, ce qui est impossible, compte tenu de l'impossibilité pratique,
Sauf attaque de type fixation de session, à laquelle PHP est vulnérable
par défaut.
Post by Jean-Francois Ortolo
d'avoir accès à une valeur correcte, de manière rapide et simultanée. Un
identificateur de session est spécifique à une session, et a une valeur
complexe et aléatoire.
Mouais mouais... en général les sécurités qui ne se basent que sur
l'obsucrité et l'aléatoire ne valent rien. En sécurité il faut
d'abord des mathématiques/de la logique/du code qui tient la route puis
de l'aléatoire alors est souvent nécessaire ; mais l'aléatoire sans
les maths qui vont bien et les codes qui font les bonnes vérifications,
ca vaut rien.
Post by Jean-Francois Ortolo
Donc, mon problème est résolu, il est pratiquement impossible de
simuler une variable de session... ;)
Vous laissez tomber bien (trop) vite...

De plus je ne vois pas non plus l'intérêt d'utiliser $var à partir
du moment où l'on a $SESSION['var'] qui va bien? C'est pour économiser
quelques caractères à taper ou bien ?
Parce que si c'est ca, bonjour la sécurité dans le reste du code si
on prend tous les raccourcis possibles...
--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
<http://www.dotandco.net/> <http://www.dotandco.com/>
Jean-Francois Ortolo
2008-11-10 10:07:40 UTC
Permalink
Post by Patrick Mevzek
De plus je ne vois pas non plus l'intérêt d'utiliser $var à partir
du moment où l'on a $SESSION['var'] qui va bien? C'est pour économiser
quelques caractères à taper ou bien ?
Parce que si c'est ca, bonjour la sécurité dans le reste du code si
on prend tous les raccourcis possibles...
Bonjour Monsieur

Wolff aussi disait la même chose que vous...

Si vous regardiez mon code de mon premier post de ce thread,
peut-être auriez-vous conscience, que la question que vous me posez, n'a
pas lieu d'être.

Je vous prie de m'excuser d'être aussi "direct", mais comme vous êtes
la deuxième personne qui me dit la même chose...

A propos de la possibilité éventuelle, de sniffer la variable
PHPSESSID, ne pourriez-vous pas m'indiquer, dans quelles conditions
réelles ( contextuellement parlant ) celà pourrait être fait, dans les
conditions suivantes prérequises:

Le pirate n'a pas accès au navigateur ayant ouvert la session dont le
PHPSESSID est copié, ou la session en question a été fermée par
l'utilisateur copié.

Evidemment, si l'on se place dans des conditions, où me copieur voit
par dessus l'épaule du copié, làààà... Il ne serait pas censé avoir
accès au même navigateur, et puis le "copié" serait censé s'en
apercevoir, non ?

Donc, dans l'ensemble, j'ai besoin d'avoir des indications plus
précises que: "Il ne faut pas se fier uniquement au caractère
d'aléatorité d'une variable, pour assurer la sécurité d'une transaction".

En effet, pour être convaincu de la justesse de vos arguments, j'ai
besoin que ceux-ci soient précisés et contextualisés.

Merci beaucoup de votre réponse.

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques,
des Pronostics et des Historiques Graphiques
sur les Courses de Chevaux:
http://www.pronostics-courses.fr/
Patrick Mevzek
2008-11-14 14:42:58 UTC
Permalink
Post by Jean-Francois Ortolo
Si vous regardiez mon code de mon premier post de ce thread,
peut-être auriez-vous conscience, que la question que vous me posez, n'a
pas lieu d'être.
Il est possible/probable que je n'ai pas compris votre problème. De ce que
je vois vous essayez de sécurisez un script bancal avec quelques lignes
préliminaires sensées tout solutionner. Ma réponse à cela est simple: vous
ne couvrirez pas tous les problèmes, et il sera plus aisé d'auditer
complétement le script pour le faire fonctionner en register_globals=off
en modifiant ce qu'il faut dedans (et donc utiliser à chaque fois que
nécessaire $_SESSION directement, sans copier dans des variables
intermédiaires outre que de raison).

Ma réponse visait aussi, dans une vision sécuritaire, à faire prendre
conscience que des termes comme « impossible », « complexe », « aléatoire
» sont dangereux et doivent alerter un esprit critique.

Maintenant si je suis à côté de la plaque/si ma réponse ne vous plait pas,
je vous rassure je n'est pas l'intention d'insister, je me permettais
juste d'exprimer mon opinion.
Post by Jean-Francois Ortolo
A propos de la possibilité éventuelle, de sniffer la variable
PHPSESSID, ne pourriez-vous pas m'indiquer, dans quelles conditions
réelles ( contextuellement parlant ) celà pourrait être fait, dans les
Dans le cadre d'une attaque de fixation de session, la question n'est
pas de deviner la valeur de cette variable mais bon de la positionner
arbitrairement.
Post by Jean-Francois Ortolo
Le pirate n'a pas accès au navigateur ayant ouvert la session dont le
PHPSESSID est copié, ou la session en question a été fermée par
l'utilisateur copié.
Qu'en savez-vous ?
Vous connaissez les liens dans les emails en HTML ?
Post by Jean-Francois Ortolo
Donc, dans l'ensemble, j'ai besoin d'avoir des indications plus
précises que: "Il ne faut pas se fier uniquement au caractère
d'aléatorité d'une variable, pour assurer la sécurité d'une transaction".
Je ne sais quoi vous dire de plus, faites une recherche sur « security by
obscurity » cela devrait vous donner des pistes...
--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
<http://www.dotandco.net/> <http://www.dotandco.com/>
Continuer la lecture sur narkive:
Loading...