salut,
je viens rajouter mon grain de sel, car effectivement
j'ai trouvé une faille dans celui-ci.
Je ne sais pas si SPIP utilise toujours ce que Mathieu a expliqué pour leur systeme de login, mais je pense avoir trouver une grosse faille.
Disons que l'utilisateur se loggue :
il entre son mdp et avec javascript il envoie au serveur md5(GDS+mdp) et md5(GDS2+mdp), le serveur dis oki ca correspond avec ce que j'ai, il remplace son md5 par md5(GDS2+mdp) remplace son GDS par GDS2 et recréé un nouveau GDS2.
Jusque la tout le monde est d'accord. mais en fait y avait un petit malin qui écoutait entre le pc et le serveur.
Je rappelle que dans ce cas on essayait de trouver un moyen pour ne pas utiliser un protocole SSL (https)
Donc le hacker a ecouter md5(GDS+mdp) et md5(GDS2+mdp) or voila le premier ne lui sert a rien on est bien d'accord, mais le deuxieme ... BAh c'est EXACTEMENT le md5 que le serveur attend pour la prochaine connexion !!! Y a comme un probleme ici.
Donc apres le hacker se connecte avec le md5(GDS2+mdp) en l'envoyant au serveur et en donnant un autre md5 (celui qu'il veut) et ainsi il prend la place de l'internaute sans aucune difficulté !!
Qu'en dites vous ??
Heureusement (il y a findus) j'ai une solution.
- Sur le serveur :
1. Grain de Sel (GDS)
2. le md5(mdp)
- Coté client :
1. le mec demande a se connecter avec son login
2. il a une demande de mdp, dans ce formulaire, il y a le GDS de son login
3. le javascript (ou autre) fait un (suivez bien) md5(GDS+md5(mdp)) Ce qui fait que quelque chose d'inutile est envoyé en clair au serveur.
4. le serveur recoit ce md5, fait (lui meme, donc en php) md5(Grain de sel de la BDD + md5(mdp) de la BDD) et compare ces deux md5.
5. le GDS est changé.
- Avantages :
- le md5 que le hacker peut chopper en clair ne sert qu'une seule foi et du coup c'est déja trop tard le GDS a été changé
- l'utilisateur est content
- pas besoin de SSL (la j'abuse je pense mais bon ...)
Inconvenients :
- besoin de deux formulaires
vous allez me dire que le md5(du mdp) est stocké comme ca sur la BDD, mais c'est le cas sur la plupart des appli non ??
Partager