Annonce

Réduire
Aucune annonce.

[Basique] Vulnérabilités des pages de connexion en php

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Tutoriel [Basique] Vulnérabilités des pages de connexion en php

    Script Auto login with Urllib & Urllib2


    Dans cet article, je vais mettre en avant l'utilisation
    des librairies urllib & urllib2 en Python, afin d'automatiser la connexion à une page web.

    Dans quel but ? eh bien comme vous vous en doutez, s'il est possible d'automatiser des connexions,
    il est possible de tester plusieurs mots de passes en boucle, l'usurpation d'identité devient alors
    facile à mettre en pratique sur un site mal sécurisé.


    Dans cet exemple, je vais utiliser la page de démonstration d'un formulaire de connexion en php
    sur le siteduzero.

    http://www.siteduzero.com/uploads/fr...formulaire.php



    On récupère le code source de la page :

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>Page protégée par mot de passe</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        </head>
        <body>
            <p>Veuillez entrer le mot de passe pour obtenir les codes d'accès au serveur central de la NASA :</p>
            <form action="secret.php" method="post">
    
                <p>
                <input type="password" name="mot_de_passe" />
                <input type="submit" value="Valider" />
                </p>
            </form>
            <p>Cette page est réservée au personnel de la NASA. Si vous ne travaillez pas à la NASA, inutile d'insister vous ne trouverez jamais le mot de passe ! ;-)</p>
        </body>
    </html>

    Comme on le voit, le formulaire envoie les informations à la page => http://www.siteduzero.com/uploads/fr...formulaire.php

    <form action="secret.php" method="post">
    On va également noter les noms des informations qui vont transiter entre les pages:

    <input type="password" name="mot_de_passe" />

    Le nom de la valeur contenant la saisie de l'utilisateur est mot_de_passe.

    Dans le code source en php sur le SDZ, ils nous expliquent que le mot de passe est "kangourou" (vous pouvez essayer)


    Alors, passons à la partie programmation:


    Code:
    # -*- coding: iso-8859-1 -*-
    #    Author        :    fr0g
    
    import urllib
    import urllib2
    
    
    
    the_url = 'http://www.siteduzero.com/uploads/fr/ftp/mateo21/php/page_mdp/secret.php'   # Declaration de l'url sur laquelle travailler.
    values = {'mot_de_passe' : 'kangourou'} # Declaration du nom de la valeur et de son contenu
    
    data = urllib.urlencode(values)   # Encodage des valeurs
    req = urllib2.Request(the_url, data) # Creation de la requete
    handle = urllib2.urlopen(req)
    the_page = handle.read()    # lecture de la page a laquelle on nous redirige après la connexion
    
    fichier = open("fichier.html", "w") # Ouvre le fichier.
    fichier.write(the_page) # Ecris le contenu de la page a laquelle nous avons eut acces.
    fichier.close() # Fermeture du fichier
    
    
    # le fichier "fichier.html" dans le meme repertoire que le script python, contient le contenu de la page à laquel nous avons eut acces 
    # grace à ce script.
    une fois ce script exécuté, si le mot de passe est bon, le programme enregistre le contenu de la page html privée dans le fichier "fichier.html"

    Comme vous vous en doutez, un petit malin voulant par exemple usurper une identité, peut tout à fait
    utiliser une boucle testant des identifiants par une méthode ancestrale, vous la connaissez évidemment
    le bruteforcing, en remplaçant la valeur de mot_de_passe par une variable qui change à chaque tour de boucle.


    Conclusion, si vous possedez un site web, pensez à limiter le nombre de tentative de connexion par ip, cookie, ou autre méthode...
    ça ne vous rendra pas intouchable, mais ça écartera un GROS risque, car une page web acceptant toutes les tentatives de connexions du genre,
    ne mettra pas longtemps à se faire bypasser.



    voilà, c'était mon petit article du lundi matin pour mettre en avant une des vulnérabilités
    des espaces membres ou pages necessitant un mot de passe (pour personnes débutant en développement web)


    cordialement.

    Références :

    http://www.voidspace.org.uk/
    http://www.python.org

  • #2
    Pour ceux qui souhaiteraient approfondir un petit peu l'utilisation de cette lib, allez jeter un petit coup d'oeil ici

    Merci pour la présentation de cette sympathique lib fr0g
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|

    Commentaire


    • #3
      C'est un bon conseil que tu nous donne la Je conseille aussi de hashé (je ne sais pas si ça ce dit comme ça) le mot de passe avec un petit sel comme ça si quelqu'un récupéré un mot de passe il aura beaucoup de mal à retrouver l'original je dirais même impossible

      Commentaire


      • #4
        Par "hashé" du veux dire "chiffrer/crypter" ?


        Suivre Hackademics: Twitter, Google+, Facebook.

        Commentaire


        • #5
          SHA512 ce n'est pas du cryptage car tu peux pas le décrypter ^^' je pense que tu connais le principe des hash c'est créer une signature uniquement.

          Exemple :
          Code:
          texte de base : hackademics 
          en SHA512 : 2cf32e46cd24945f60fbc6fcd28c8d861ce54cd4429a892286ef5c62c1697fc569bbc2cf69827fc4b212103fbaed3521a82bed66245b09fe34438b75e5671688
          
          En changeant une seul lettre ! 
          hackademiks
          SHA512 : 3b2f62ff16a403aaef0ef4ed8beb2c7e6c0f71cd17939227ad7f9128cba795de7e60ff503b261ef31bc2fbea28b1da9def53dd6d69cde62e8f31bb704b86f3df
          Comme tu peux le voir déjà rien qu'avec une lettre modifié la signature est totalement différente... et quand tu met un sel ...

          Code:
          Mot de base : hackademicsÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØŒŠþÙÚÛÜÝŸàáâãäåæçèéêëìíîïðñòóôõöøœšÞùúûüýÿ¢ß¥£™©®ª×÷±²³¼½¾µ¿¶·¸º°¯§…¤¦≠¬ˆ¨‰
          SHA512 : c7f3981c05312c15af330a47bdd9a0c1a1d5a903184f42bd0702d6e329013cf953f7934975a37c4980078072e4cff1965da742a830af7394101cc26c40b4e6d4
          Problème c'est toujours possible d'avoir le mot en clair lors de l'échange avec le serveur mais après une fois sur la base de donné c'est nikel et moi perso je l'utilise aussi dans les cookies (j'ai aussi une sécurité dessus que j'expliquerai si j'ai le temps )

          J'espère avoir répondu à ta question ^^'

          Commentaire


          • #6
            Ah oui autant pour moi, vu que je voyais que t'hésitais sur le mot "hashé" j'ai proposés 2 autres termes différents.


            Suivre Hackademics: Twitter, Google+, Facebook.

            Commentaire


            • #7
              j'étais pas sur que ça ce disait ^^' Par contre pour les mot de passes en BDD je déconseille fortement le MD5 qui a des failles (faudrait que je retrouve le rapport que j'avais vu)
              Dernière modification par SpiritWhite, 22 mars 2013, 22h43.

              Commentaire


              • #8
                tu peux déjà te lever tôt pour unhash un md5.

                6031d926e22ca82b6d18e76642c1af3c <-- mon password admin du forum en md5.

                vas-y, exploite ta "faille"..

                comment pourrait-il y avoir une faille dans un algo de hash déjà connu ??
                sigpic

                Cyprium Download Link

                Plus j'étudie plus j'me rends compte que je n'sais rien.

                †|

                Commentaire


                • #9
                  Non, il veut dire qu'un md5 est cassable, le md6 avait fait son apparition, mais il a été vite retiré de la scène du fait que le hash était facilement crackable!

                  Commentaire


                  • #10
                    mais bien sûr que c'est cassable. on a l'algo sous notre nez (ex: md5) mais c'est pas parce-qu'on sait comment ça a été hashé et donc comment le déhasher qu'on va y arriver pour autant ! ça serait bien trop beau (ou stupide, plutôt).

                    là il dit "je déconseille fortement le MD5 qui a des failles". déjà, des 'failles' ça n'a pas de sens, il voulait dire que c'était plus "simple" à unhash que du SHA512, ce qui est exact. mais ce n'est pas parce-que c'est plus simple que c'est facile. la puissance de calcul pour unhash un md5 dont le plain fait +12 char (A-z-0-$) est compliquée. et plus le chiffre augmente plus ça devient presque impossible.

                    à ce moment là, l'AES est également cassable puisqu'on connaît son fonctionnement.

                    donc vu qu'il dit que le md5 en gros c'est de la merde, je lui soumets un hash à unhash. si c'est si simple, affiche mon password en clair ici (entre-nous y'a des méthodes bien plus simples pour obtenir mon password que de tenter un unhash inespéré)
                    sigpic

                    Cyprium Download Link

                    Plus j'étudie plus j'me rends compte que je n'sais rien.

                    †|

                    Commentaire


                    • #11
                      J'ai pas dit que c'était simple et encore moins que j'avais les compétences pour les faire mais, un problème a était trouvé avec la même signature pour plusieurs mot. Le MD5 est loin d'être de la merde et je pense que c'est juste un minorité qui c'est le cassé.

                      J'y suis peut-être allé un peu fort avec le "fortement" et bien entendu je me suis basé sur un rapport (que je dois retrouver...) qui parlé de l'existence de collision en entre plusieurs mots
                      Dernière modification par SpiritWhite, 23 mars 2013, 07h47.

                      Commentaire


                      • #12
                        La collision est un risque qui existe bel et bien, mais qui ne se produit que dans une situation bien particulière : la génération haute fréquence. Le MD5 étant une empreinte syntaxique, le risque de collision sur des générations ponctuelles (les plus courantes) est nul. Toutefois, lorsque des milliers d'empreintes sont générées colinairement, le risque de collision augmente proportionnellement à l'augmentation du taux d'erreurs de lecture.
                        Ex-membre Hackademiciens.

                        Commentaire


                        • #13
                          Voici le tableau de proba des risques de collisions. Pour du md5, se référer à la ligne 3.

                          http://cl.ly/image/110Z050d3G2i

                          Ce ne sont pas des milliers, mais des... milliards.
                          sigpic

                          Cyprium Download Link

                          Plus j'étudie plus j'me rends compte que je n'sais rien.

                          †|

                          Commentaire


                          • #14
                            Oh super merci ça pourrait me servir !

                            Commentaire

                            Chargement...
                            X