
Uno strumento avanzato di scansione di directory e file web che sarà più potente di DirBuster, Dirsearch, cansina e Yu Jian.
Uno strumento avanzato per la scansione di directory web, con funzionalità superiori a DirBuster, Dirsearch, cansina, Yujian

Dopo un'ampia ricerca, si è concluso che un buon strumento per la scansione di directory web deve avere almeno le seguenti caratteristiche:
Vediamo ora le caratteristiche di Dirmap
git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt
Singolo target, predefinito http
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
Sottorete (formato CIDR)
python3 dirmap.py -i 192.168.1.0/24 -lcf
Intervallo di rete
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
python3 dirmap.py -iF targets.txt -lcf
targets.txt supporta i formati sopra indicati
output nella directory radice del progettodominio_target.txtPersonalizza la configurazione di dirmap e inizia a esplorare le funzionalità avanzate.
Per ora la configurazione dettagliata viene effettuata caricando un file di configurazione: non è supportata la configurazione dettagliata tramite parametri da riga di comando!
Modifica il file dirmap.conf nella directory radice del progetto per configurare.
Dettaglio della configurazione di dirmap.conf
#Configurazione della scansione ricorsiva
[RecursiveScan]
#Attiva/disattiva scansione ricorsiva: disattiva:0; attiva:1
conf.recursive_scan = 0
#Con questi codici di stato, avvia scansione ricorsiva. Configurazione predefinita [301,403]
conf.recursive_status_code = [301,403]
#Se l'URL supera questa lunghezza, esci dalla scansione
conf.recursive_scan_max_url_length = 60
#Estensioni da escludere dalla scansione ricorsiva
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
#Imposta le directory da escludere. Predefinito vuoto. Altri esempi: e.g:['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""
#Configurazione modalità di scansione (4 modalità, solo 1 può essere selezionata per volta)
[ScanModeHandler]
#Modalità dizionario: disattiva:0; singolo dizionario:1; dizionario multiplo:2
conf.dict_mode = 1
#Percorso del dizionario singolo
conf.dict_mode_load_single_dict = "dict_mode_dict.txt"
#Percorso del dizionario multiplo, predefinito dictmult
conf.dict_mode_load_mult_dict = "dictmult"
#Modalità forza bruta: disattiva:0; attiva:1
conf.blast_mode = 0
#Lunghezza minima del dizionario generato. Predefinito 3
conf.blast_mode_min = 3
#Lunghezza massima del dizionario generato. Predefinito 3
conf.blast_mode_max = 3
#Set di caratteri predefinito: a-z. Non ancora utilizzato.
conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"
#Set di caratteri predefinito: 0-9. Non ancora utilizzato.
conf.blast_mode_num = "0123456789"
#Set di caratteri personalizzato. Predefinito "abc". Usa abc per costruire il dizionario
conf.blast_mode_custom_charset = "abc"
#Set di caratteri di ripresa personalizzato. Predefinito vuoto.
conf.blast_mode_resume_charset = ""
#Modalità crawler: disattiva:0; attiva:1
conf.crawl_mode = 0
#Dizionario dei suffissi per generare payload di file sensibili dinamici
conf.crawl_mode_dynamic_fuzz_suffix = "crawl_mode_suffix.txt"
#Analizza il file robots.txt. Non ancora implementato.
conf.crawl_mode_parse_robots = 0
#Espressione XPath per analizzare le pagine HTML
conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"
#Attiva generazione dinamica del dizionario del crawler. Predefinito 1, attivo. Altri esempi: e.g: disattiva:0; attiva:1
conf.crawl_mode_dynamic_fuzz = 1
#Modalità Fuzz: disattiva:0; singolo dizionario:1; dizionario multiplo:2
conf.fuzz_mode = 0
#Percorso del dizionario singolo.
conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"
#Percorso del dizionario multiplo. Predefinito: fuzzmult
conf.fuzz_mode_load_mult_dict = "fuzzmult"
#Imposta tag fuzz. Predefinito {dir}. Usa il tag {dir} come punto di inserimento del dizionario, sostituisce http://target.com/{dir}.php con http://target.com/ogni riga del dizionario.php. Altri esempi: e.g:{dir};{ext}
#conf.fuzz_mode_label = "{ext}"
conf.fuzz_mode_label = "{dir}"
#Configurazione payload. Non ancora implementata.
[PayloadHandler]
#Configurazione richieste
[RequestHandler]
#Intestazioni personalizzate. Predefinito vuoto. Altri esempi: e.g:test1=test1,test2=test2
#conf.request_headers = "test1=test1,test2=test2"
conf.request_headers = ""
#User-Agent personalizzato per le richieste. Predefinito UA di Chrome.
conf.request_header_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
#Cookie personalizzato per le richieste. Predefinito vuoto, nessun cookie. Altri esempi e.g:cookie1=cookie1; cookie2=cookie2;
#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"
conf.request_header_cookie = ""
#Autenticazione 401 personalizzata. Non ancora implementata. Perché la funzione di intestazione personalizzata può soddisfare questa esigenza (pigrizia XD)
conf.request_header_401_auth = ""
#Metodo HTTP personalizzato. Predefinito get. Altri esempi: e.g:get;head
#conf.request_method = "head"
conf.request_method = "get"
#Timeout per ogni richiesta. Predefinito 3 secondi.
conf.request_timeout = 3
#Ritardo casuale (0-x) secondi prima di inviare la richiesta. Il parametro deve essere un intero. Predefinito 0 secondi, nessun ritardo.
conf.request_delay = 0
#Numero di coroutine per singolo target. Predefinito 30 thread
conf.request_limit = 30
#Numero massimo di tentativi. Non ancora implementato.
conf.request_max_retries = 1
#Connessione persistente. Utilizzare session(). Non ancora implementato.
conf.request_persistent_connect = 0
#Reindirizzamento 302. Predefinito False, nessun reindirizzamento. Altri esempi: e.g:True;False
conf.redirection_302 = False
#Suffisso aggiunto al payload. Predefinito vuoto, nessun suffisso durante la scansione. Altri esempi: e.g:txt;php;asp;jsp
#conf.file_extension = "txt"
conf.file_extension = ""
#Configurazione risposte
[ResponseHandler]
#Imposta i codici di stato da registrare. Predefinito [200], registra solo 200. Altri esempi: e.g:[200,403,301]
#conf.response_status_code = [200,403,301]
conf.response_status_code = [200]
#Registra l'intestazione content-type. Predefinito 1 (registra)
#conf.response_header_content_type = 0
conf.response_header_content_type = 1
#Registra la dimensione della pagina. Predefinito 1 (registra)
#conf.response_size = 0
conf.response_size = 1
#Rileva automaticamente pagine 404. Predefinito True, rilevamento automatico attivo. Altri esempi: e.g:True;False
#conf.auto_check_404_page = False
conf.auto_check_404_page = True
#Espressione regolare personalizzata per pagine 503. Non ancora implementata. Probabilmente verrà rimossa.
#conf.custom_503_page = "page 503"
conf.custom_503_page = ""
#Espressione regolare personalizzata per il contenuto della risposta
#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"
conf.custom_response_page = ""
#Salta le pagine con dimensione x. Se non impostato, configuralo come "None". Predefinito "None". Altri esempi: e.g:None;0b;1k;1m
#conf.skip_size = "0b"
conf.skip_size = "None"
#Opzioni proxy
[ProxyHandler]
#Configurazione proxy. Predefinito "None", nessun proxy. Altri esempi e.g:{"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
#conf.proxy_server = {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
conf.proxy_server = None
#Opzioni di debug
[DebugMode]
#Stampa i payload ed esci
conf.debug = 0
#Opzioni di aggiornamento
[CheckUpdate]
#Ottieni aggiornamenti da github. Non ancora implementato.
conf.update = 0
I file del dizionario si trovano nella cartella data nella directory radice del progetto
bar.log.start(). Soluzione: installa progressbar2. Disinstalla progressbar per evitare conflitti di modulo con lo stesso nome. Grazie a un certo cugino per l'avviso.Esegui i comandi:
python3 -m pip uninstall progressbar
python3 -m pip install progressbar2
Durante la scrittura di dirmap, sono stati presi come riferimento i modelli e le idee di molti eccellenti progetti open source. Un ringraziamento speciale.
mail: [email protected]
