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 :
Comme on le voit, le formulaire envoie les informations à la page => http://www.siteduzero.com/uploads/fr...formulaire.php
On va également noter les noms des informations qui vont transiter entre les pages:
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:
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
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">
<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.
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
Commentaire