![]() |
[PYTHON] UrlLib HttpScan - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27) +--- Sujet : [PYTHON] UrlLib HttpScan (/showthread.php?tid=3069) |
[PYTHON] UrlLib HttpScan - sakiir - 11-06-2013 Salut à tous ! Alors aujourd'hui , pour m'entrainer un peu avec python et urllib j'ai commencé plusieurs outils dont un pour scan un site web , (Vérifier[/php] les found , not found , et autre erreur renvoyer par le serveur web). Code : import urllib Le programme Utilise une wordlist qui contient des mots clés comme cpanel , phpmyadmin etc .. don en testant sur N-PN à mes risques et périls j'ai pu voir que le programme me repondait FOUND pour le mot phpmyadmin j'ai vérifié et on peut bien accéder à http://n-pn.fr/phpmyadmin Je pense que grâce à ce problème un pirate pourrait bruteforcer ou tester d'autre attaques .. voila merci d'avoir lut a+ ! RE: [PYTHON] UrlLib HttpScan - Trivial - 11-06-2013 Salut, J'avoue que ça serai quand même mieux de renommer le phpmyadmin. Sinon, nice ton script python :-) RE: [PYTHON] UrlLib HttpScan - supersnail - 11-06-2013 Pour le phpmyadmin, on gère ça ![]() Ensuite, imho vaudrait mieux se baser sur le code d'erreur HTTP renvoyé que sur la recherche d'un mot (on tool peut être defeat en mettant un "not found" dans une page qui existe, et ne pas détecter un 404 custom qui ne contient pas de "not found"). Anyway, sympa malgré tout ![]() RE: [PYTHON] UrlLib HttpScan - 0pc0deFR - 11-06-2013 Petite optimisation, détecter le / en fin de nom de domaine car si ta wordlist intègre le / du style /phpmyadmin tu va avoir http://domain.com//phpmyadmin ou alors http://domain.comphpmyadmin enfin, tu auras compris le principe. RE: [PYTHON] UrlLib HttpScan - gruik - 11-06-2013 (11-06-2013, 15h17)0pc0deFR a écrit : Petite optimisation, détecter le / en fin de nom de domaine car si ta wordlist intègre le / du style /phpmyadmin tu va avoir http://domain.com//phpmyadmin ou alors http://domain.comphpmyadmin enfin, tu auras compris le principe. ![]() urllib suit automatiquement les redirections 30{1,2} par ailleurs plutot qu'un "if tag in read()" tout cracra il eu tété de bon aloi d'utiliser getcode() Code PYTHON :
>>> import urllib2 limite c'est l'inverse qui est plus tricky, arriver à détecter les redirections les puristes ajouteront sans doute que l'optimisation aurait consisté à utiliser httplib à la place de urllib RE: [PYTHON] UrlLib HttpScan - sakiir - 11-06-2013 SuperSnail : oui je voulais faire ca , mais je n'ai pas trouvé un moyen simple pour faire ça , urllib possede t'elle des fonctions permettant de le faire ? 0pc0deFR : Oui j'ai voulu le faire , mais bon ca fonctionnais à mon image ![]() Gruik : j'ai pas bien compris ce que tu voulais dire RE: [PYTHON] UrlLib HttpScan - supersnail - 11-06-2013 sakiir: ben en fait gruik te donne la réponse... Mais bon à un moment faut connecter un peu plus que 2 neurones et se prendre un peu en main (lrn2rtfm aussi ça peut être une bonne idée). RE: [PYTHON] UrlLib HttpScan - Kiwazaru - 12-06-2013 RE: [PYTHON] UrlLib HttpScan - oosfalte - 30-06-2013 Bon, j'y vais de ma modeste contribution vu que je me suis mis au Python depuis quelques jours seulement. Supersnail et gruik en ont parlé, on peut aussi se servir de HTTPError, URLError et IOError (dont dépéndent les 2 autres) pour gérer les erreurs. Ca me paraît intéressant et permet de couvrir un plus large éventail (les redirections ?) si bien utilisé, ce que ne fait pas mon code :/ Ca évite aussi l'utilisation d'un dictionnaire, donc je me suis dit ... why not ? Code PYTHON :
RE: [PYTHON] UrlLib HttpScan - Kiwazaru - 30-06-2013 "Ca me paraît intéressant et permet de couvrir un plus large éventail (les redirections ?) si bien utilisé, ce que ne fait pas mon code :/" Justement le principe de mon code avec les sockets est d'envoyer une requête GET /pagedemandé.??? HTTP/1.1 , pour obtenir la réponse du serveur qui contiendra le code en retour. Avec ma fonction errorcode() on obtient le code retourné et ainsi nous n'avons pas besoin d'un dictionnaire de code d'erreur ou autre. De plus ma liste qui contient les pages d'accès peut bien évidemment être remplacée par une wordlist.txt ![]() Ma fonction errorcode() au final, esquive juste le HTTP/1.1 dans l'en-tête de la réponse du serveur, et ensuite nous renvois la suite jusqu'au '\n' puisqu'on aura split() auparavant ![]() RE: [PYTHON] UrlLib HttpScan - oosfalte - 30-06-2013 @ReVerSe: Loin de moi l'idée de critiquer ton code, tu as plus d'expérience que moi dans le domaine, c'est certain.C'est juste une autre façon de faire, vu sous un autre angle ![]() RE: [PYTHON] UrlLib HttpScan - Kiwazaru - 30-06-2013 J'ai jamais cru que tu critiquais mon code hein ![]() Comme beaucoup disent, il n'y a pas qu'une seule façon de coder quelque chose, mais bien une infinité ![]() RE: [PYTHON] UrlLib HttpScan - InstinctHack - 30-06-2013 et souvent ils y en as quelques unes très jolies, et une infinités de saloperies :] RE: [PYTHON] UrlLib HttpScan - gruik - 30-06-2013 pour l'annecdote, les "motto" Perl et Python sont respectivement TMTOWTDI (there's more than one way to do it) et TOOWTDI (there's only one way to do it) de là à dire que vous êtes des Perleux qui s'ignorent il n'y a qu'un pas ![]() |