Premetto, che il metodo utilizzato in questo articolo potrebbe non funzionare su siti di massima protezione.
Occorre, innanzitutto, precisare che verrà utilizzata la libreria python urllib che serve per leggere il codice di una pagina web.
Descriviamo le operazioni che andranno compiute per creare un bruteforce utilizzando la urllib:
1. Aprire la pagina di action del form (con la funzione urlopen) che è settata dall'attributo action del form, la chiameremo quindi pagina di action. Per comprendere meglio consiglio di studiare un po' di HTML. Se già lo masticate, meglio ancora. La pagina di action, dunque, verrà aperta ma con i campi già compilati, il campo username (o email, dipende dal form), ad esempio, già sappiamo che sarà compilato con l'username (o email) della vittima, ovvero l'username di cui vogliamo scoprire la password. Il campo password sarà compilato dalla password da testare. Ad ogni combinazione di password, dunque, viene tentato il login fin quando non sarà effettuato l'accesso e quindi la password sarà trovata.
Ecco un esempio di form:
Analizziamo il form. La pagina di action è login.php. Per ottenere l'url completo della pagina di action la dobbiamo far precedere dall'indirizzo su cui ci troviamo, se ci trovassimo, ad esempio, su http://www.miosito.it l'url completo della pagina di action sarà http://www.miosito.it/login.php. Il primo input è il campo username, il secondo è il campo password e l'ultimo input è il pulsante di accesso. A volte, possono esistere più input, ma dobbiamo considerare solo questi 3 input fondamentali. Segniamoci i parametri name degli input, ovvero, username, password e submit. Possiamo ora passare al secondo passaggio.
2. Memorizzare il messaggio di avvenuto login inserendo username e password corretti. Consiglio di farlo con la funzione urlopen da linea di comando Python (dalla Shell Python) per velocizzare il tutto. Scriveremo dunque:
>>> import urllib
>>> parametriCorretti = { "username" : "mioUsername", "password" : "mia Password", "submit" : "1" }
>>> p = urllib.urlencode(parametriCorretti)
>>> paginaDiAction = urllib.urlopen("http://www.miosito.it/login.php", p)
>>> paginaDiAction.read()
Ovviamente, invece di mioUsername e miaPassword inseriremo username e password corretti. Submit lo rimarremo impostato a 1. Con la riga paginaDiAction.read() apparirà il codice HTML restituito dalla pagina da cui prenderemo e ci segneremo il messaggio di avvenuto login (ad esempio "Login effettuato!").
Nella prossima parte vedremo come eseguire l'attacco bruteforce vero e proprio utilizzando parte del codice degli articoli precedenti e scrivendo una nuova parte di codice che sarà il controllo HTTP della pagina di avvenuto login nel caso il programma abbia trovato la password corretta.
Occorre, innanzitutto, precisare che verrà utilizzata la libreria python urllib che serve per leggere il codice di una pagina web.
Descriviamo le operazioni che andranno compiute per creare un bruteforce utilizzando la urllib:
1. Aprire la pagina di action del form (con la funzione urlopen) che è settata dall'attributo action del form, la chiameremo quindi pagina di action. Per comprendere meglio consiglio di studiare un po' di HTML. Se già lo masticate, meglio ancora. La pagina di action, dunque, verrà aperta ma con i campi già compilati, il campo username (o email, dipende dal form), ad esempio, già sappiamo che sarà compilato con l'username (o email) della vittima, ovvero l'username di cui vogliamo scoprire la password. Il campo password sarà compilato dalla password da testare. Ad ogni combinazione di password, dunque, viene tentato il login fin quando non sarà effettuato l'accesso e quindi la password sarà trovata.
Ecco un esempio di form:
<form method="post" action="login.php">
Username:
<input type="text" name="username" /><br />
Password:
<input type="password" name="password" /><br />
<input type="submit" name="submit" value="Accedi">
</form>
Analizziamo il form. La pagina di action è login.php. Per ottenere l'url completo della pagina di action la dobbiamo far precedere dall'indirizzo su cui ci troviamo, se ci trovassimo, ad esempio, su http://www.miosito.it l'url completo della pagina di action sarà http://www.miosito.it/login.php. Il primo input è il campo username, il secondo è il campo password e l'ultimo input è il pulsante di accesso. A volte, possono esistere più input, ma dobbiamo considerare solo questi 3 input fondamentali. Segniamoci i parametri name degli input, ovvero, username, password e submit. Possiamo ora passare al secondo passaggio.
2. Memorizzare il messaggio di avvenuto login inserendo username e password corretti. Consiglio di farlo con la funzione urlopen da linea di comando Python (dalla Shell Python) per velocizzare il tutto. Scriveremo dunque:
>>> import urllib
>>> parametriCorretti = { "username" : "mioUsername", "password" : "mia Password", "submit" : "1" }
>>> p = urllib.urlencode(parametriCorretti)
>>> paginaDiAction = urllib.urlopen("http://www.miosito.it/login.php", p)
>>> paginaDiAction.read()
Ovviamente, invece di mioUsername e miaPassword inseriremo username e password corretti. Submit lo rimarremo impostato a 1. Con la riga paginaDiAction.read() apparirà il codice HTML restituito dalla pagina da cui prenderemo e ci segneremo il messaggio di avvenuto login (ad esempio "Login effettuato!").
Nella prossima parte vedremo come eseguire l'attacco bruteforce vero e proprio utilizzando parte del codice degli articoli precedenti e scrivendo una nuova parte di codice che sarà il controllo HTTP della pagina di avvenuto login nel caso il programma abbia trovato la password corretta.
Fai una guida su Come farlo PER WIFI TI PREGO
RispondiEliminaPer il wifi è un po' più complicato. A dire il vero, non so se esiste una libreria in Python che permetta di farlo, di conseguenza potrei provare a fare una guida su come creare un bruteforce in C o C++ qualora in Python non si avesse la possibilità di creare tale tipologia di Bruteforce. In ogni caso mi hai dato l'idea per un nuovo articolo.
EliminaNon ho capito cosa bisogna mettere al posto di mio username ....come si fa a mettere il username e la password se non la conosco
RispondiEliminami da errore di sintassi
L'username è quello di cui si vuole scovare la password.
EliminaLa password invece è quella che si vuole testare.
Ma come si fa a testare,ci devi provare un migliardo di volte
Eliminami da errore di sintassi.....mi dice che non ho definito "parametriCorretti".......aiutami ti prego.....
RispondiEliminaProbabilmente hai commesso qualche errore nella seconda linea di codice (parametriCorretti = { "username" : "mioUsername", "password" : "mia Password", "submit" : "1" }), prova a riscriverla anziché copiarla.
EliminaDRIVER MA IL FORM è LO STESSO PER VISUAL BASIC?
RispondiEliminaCiao Driverfury
RispondiEliminaSto studiando il Python
Ho scelto il libro "Python:pensare da informatico" e sono arrivato al 15 capitolo ma non riesco ad impararlo
É perché l'hacking non fa per me o devo impegnarmi di più?
Una domanda: hai passione (ovvero ti piace l'hacking)? Se sì, allora continua a studiare, magari cambia libro, segui dei videotutorial su youtube. Se la risposta è no, allora l'hacking non fa per te.
EliminaHo cambiato libro e adesso ho capito meglio. Modifico gli esempi e creo semplici programmi...
EliminaQuando arriveranno nuove guide hacking?
Che blog ci sono come questo (in italiano)?
Altre guide arriveranno presto. Intanto, ti consiglio la mia guida "Come Diventare Hacker: La Guida Base": http://diventarehacker.blogspot.it/p/come-diventare-hacker.htm
EliminaNon so se ci sono blog italiani come questo, la maggior parte sono inglesi e tedeschi.
Ciao,
RispondiEliminaDriverfury potresti contattarmi tramite email? (rocco @ hackerstribe.com)
per una proposta inerente il blog, grazie.
;)
Roc
Ciao Roc, contattami su all'indirizzo diventarehackerblog@gmail.com
Eliminaforse la domanda è stupida(molto stupida)..come si fa ad arpire il form?
RispondiEliminaquando inserisco il "login.php." mi dice che la pagina non esiste
Devi scrivere l'indirizzo completo, ad esempio: "http://www.nomesito.it/login.php"
EliminaCiao, mi potresti dire un link dove ci sono tutte le funzioni di Python?( per esempio urlencode , urlopen...)
Eliminahttp://docs.python.org/2/library/
Eliminaprobabilmente è la domanda più stupida che si possa fare: come si apre la urllib? cosa devo fare?
RispondiEliminaNon devi aprirla ma semplicemente importarla con il codice:
Eliminaimport urllib
una volta fatto partire il paginaDiAction.read() esce fuori una stringa immensa dal quale è umanamente impossibile trovare tale messaggio di avvenuto login (pagina= facebook.com, sto facendo le prove con il mio account). Dove posso trovare tale messaggio?
RispondiEliminaio non capisco, ma questi comandi form li dobbiamo mettere sul programma che testa le password?
RispondiEliminaI comandi form non esistono.
EliminaIl form fa parte dell'HTML che ti consiglio di studiare per bene (sia HTML che PHP) per capire questo corso.
Se ti riferisci al codice HTML, allora non va inserito da nessuna parte, è solo un esempio di form.
Se, invece, ti riferisci al codice Python allora va scritto ed eseguito nella Shell Python (oppure scrivere uno script Pyton e avviarlo, tanto è uguale).
Mi dai un link dove scaricare le urllib che io non le trovo
RispondiEliminaLa libreria urllib è già presente di default con l'interprete Python. Non c'è bisogno di scaricarla.
Eliminami dice "attributeError: attribute "urllib" has no attribute "urlencode" ", quando scrivo urllib.urlencode( parametriCorretti)...
RispondiEliminaChe versione Python hai? Quella usata in questa guida è la 2.7
EliminaÈ possibile fare un programma in python che mette tutte le pass generate in un file di testo e poi farle provare tutte con un programma apposito per brute-force hacking?
RispondiEliminaSe si mi potresti passare il codice sulla mia mail?
P.s. la mia mail è dottormrrocky@Gmail.com
Elimina