Est-il possible de simuler une variable de session ?

Le
Jean-Francois Ortolo
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/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Francois Ortolo
Le #17721341
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
Le #17729071
Jean-Francois Ortolo a écrit :

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.


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
Le #17731141
Mickael Wolff a écrit :
Jean-Francois Ortolo a écrit :

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.


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
Le #17795181
Le Sat, 01 Nov 2008 23:26:38 +0000, Jean-Francois Ortolo a écrit:
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.

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.

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
Jean-Francois Ortolo
Le #17798291
Patrick Mevzek a écrit :

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
Le #17842011
Le Mon, 10 Nov 2008 10:07:40 +0000, Jean-Francois Ortolo a écrit:
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.

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:



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.

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 ?

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
Publicité
Poster une réponse
Anonyme