• STATISTIQUES
  • Il y a eu un total de 0 membres et 38186 visiteurs sur le site dans les dernières 24h pour un total de 38 186 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [EN] Defcon
    Lancé en 1992 par Dark Tangent, DEFCON est la plus ancienne et la plus grande conférence underground de...
    Hacking
    [EN] social-engineer
    Site dédié au Social Engineering en général.
    Hacking
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Brute-force, Vulnérabilité des pages de connexions

[SIZE="4"]Script Auto login with Urllib & Urllib2[/SIZE]



Dans cet article, je vais mettre en avant l'utilisation
des librairies urllib & urllib2 en Python, afin d'automatiser les tentatives de connexion à une page web non sécurisée.

Dans quel but ? et bien comme vous vous en doutez, s'il est possible d'automatiser des connexions,
il est possible de tester plusieurs mots de passe en boucle, l'usurpation d'identité devient alors facile à mettre en pratique sur un site mal sécurisé, cet article à donc pour intérêt de donner un aperçu des risques encourus par un web-master ne limitant pas le nombre de connexion à son site .


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/ftp...ulaire.php



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

Code PHP :
<!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/ftp...ulaire.php

Citation :<form action="secret.php" method="post">

On va également noter les noms des informations qui vont transiter entre les pages:

Citation :<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 PHP :
# -*- coding: iso-8859-1 -*-
#    Author        :    fr0g
#    Mail :         :    fr0g.security@gmail.com

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_urldata# 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 différents sans arrêt, en remplaçant la valeur de mot_de_passe par une variable qui change à chaque tour de la boucle.


[COLOR="DeepSkyBlue"]
Conclusion, si vous possedez un site web, pensez à limiter le nombre de tentative de connexion par ip, cookie,
ou autres, afin d'éviter ce genre d'exploitations, ainsi que d'éventuelles tentatives de Denial Of Service,
ç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 bypass.
[/COLOR]



Références :

http://www.voidspace.org.uk/
http://www.python.org
18-10-2011, 19h26
Message : #1
Padboy Hors ligne
Bon membre
*



Messages : 745
Sujets : 19
Points: 5
Inscription : Oct 2005
Vulnérabilité des pages de connexions
Ton tutoriel est très bien fait, et c'est un très bon exemple de brute forcing.

Je voulais juste ajouter un point.

Il est bon d'expliquer pourquoi la limitation est au niveau de l'ip et non au niveau du username.

La pratique de la limitation de connexion par username est une pratique un peu paradoxale par rapport aux attaques DOS. En effet, en bloquant par exemple pendant m minutes tous les comptes pour lesquels un attaquant a essayé n fois de s'infiltrer, en pratique c'est justement un déni de service.

Ceci étant dit, mieux vaut bloquer l'adresse ip de l'attaquant pour éviter dans les deux cas, un DOS (je parle des cas mentionnés).
21-10-2011, 11h01
Message : #2
itcef Hors ligne
Membre actif
*



Messages : 77
Sujets : 4
Points: 2
Inscription : Oct 2011
Vulnérabilité des pages de connexions
Merci pour ton tutoriel, on en trouve pas de ce genre partout Smile
Mieux vaut être faux que vrai.