
Uma ferramenta avançada de varredura de diretórios e arquivos web que será mais poderosa que DirBuster, Dirsearch, cansina e Yu Jian. Uma ferramenta avançada de varredura de diretórios e arquivos web que será mais poderosa que DirBuster, Dirsearch, cansina e Yu Jian.
Uma ferramenta avançada de varredura de diretórios web, com funcionalidades superiores ao DirBuster, Dirsearch, cansina, Yujian

Após uma extensa pesquisa, resume-se que uma excelente ferramenta de varredura de diretórios web deve ter pelo menos as seguintes funcionalidades:
Então, vamos ver as características do Dirmap.
git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt
Alvo único, padrão http
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
Sub-rede (formato CIDR)
python3 dirmap.py -i 192.168.1.0/24 -lcf
Faixa de rede
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
python3 dirmap.py -iF targets.txt -lcf
targets.txt suporta os formatos acima
output na raiz do projetodomínio_alvo.txtPersonalize a configuração do dirmap e explore seus recursos avançados
Atualmente, a configuração detalhada é feita carregando um arquivo de configuração, não suporta configuração detalhada via parâmetros de linha de comando!
Edite o arquivo dirmap.conf na raiz do projeto para configurar
Explicação detalhada da configuração do dirmap.conf
# Configuração de processamento de varredura recursiva
[RecursiveScan]
# Ativar varredura recursiva: Desativado:0; Ativado:1
conf.recursive_scan = 0
# Ao encontrar esses códigos de status, ativar varredura recursiva. Padrão [301,403]
conf.recursive_status_code = [301,403]
# Sair da varredura se a URL exceder este comprimento
conf.recursive_scan_max_url_length = 60
# Estas extensões não são varridas recursivamente
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
# Configurar diretórios a serem excluídos da varredura. Padrão vazio. Outros exemplos: e.g:['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""
# Configuração de modo de varredura (4 modos, apenas 1 pode ser selecionado por vez)
[ScanModeHandler]
# Modo dicionário: Desativado:0; Dicionário único:1; Múltiplos dicionários:2
conf.dict_mode = 1
# Caminho do dicionário único
conf.dict_mode_load_single_dict = "dict_mode_dict.txt"
# Caminho do modo de múltiplos dicionários, padrão dictmult
conf.dict_mode_load_mult_dict = "dictmult"
# Modo brute force: Desativado:0; Ativado:1
conf.blast_mode = 0
# Comprimento mínimo do dicionário gerado. Padrão 3
conf.blast_mode_min = 3
# Comprimento máximo do dicionário gerado. Padrão 3
conf.blast_mode_max = 3
# Conjunto de caracteres padrão: a-z. Ainda não utilizado.
conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"
# Conjunto de caracteres padrão: 0-9. Ainda não utilizado.
conf.blast_mode_num = "0123456789"
# Conjunto de caracteres personalizado. Padrão "abc". Usar abc para construir dicionário
conf.blast_mode_custom_charset = "abc"
# Conjunto de caracteres de continuação personalizado. Padrão vazio.
conf.blast_mode_resume_charset = ""
# Modo crawler: Desativado:0; Ativado:1
conf.crawl_mode = 0
# Dicionário de sufixos para gerar payloads dinâmicos de arquivos sensíveis
conf.crawl_mode_dynamic_fuzz_suffix = "crawl_mode_suffix.txt"
# Analisar arquivo robots.txt. Ainda não implementado.
conf.crawl_mode_parse_robots = 0
# Expressão XPath para analisar páginas HTML
conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"
# Ativar geração dinâmica de dicionário do crawler. Padrão 1, ativado. Outras configurações: e.g: Desativado:0; Ativado:1
conf.crawl_mode_dynamic_fuzz = 1
# Modo Fuzz: Desativado:0; Dicionário único:1; Múltiplos dicionários:2
conf.fuzz_mode = 0
# Caminho do dicionário único para modo fuzz.
conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"
# Caminho do modo de múltiplos dicionários para fuzz. Padrão: fuzzmult
conf.fuzz_mode_load_mult_dict = "fuzzmult"
# Definir tag de fuzz. Padrão {dir}. Usar a tag {dir} como ponto de inserção do dicionário, substituir http://target.com/{dir}.php por http://target.com/cada_linha_do_dicionário.php. Outras configurações: e.g:{dir};{ext}
#conf.fuzz_mode_label = "{ext}"
conf.fuzz_mode_label = "{dir}"
# Configuração de manipulação de payload. Ainda não implementado.
[PayloadHandler]
# Configuração de manipulação de solicitação
[RequestHandler]
# Cabeçalhos de solicitação personalizados. Padrão vazio. Outras configurações: e.g:test1=test1,test2=test2
#conf.request_headers = "test1=test1,test2=test2"
conf.request_headers = ""
# User-Agent de solicitação personalizado. Padrão UA do 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 de solicitação personalizado. Padrão vazio, sem cookie. Outras configurações: e.g:cookie1=cookie1; cookie2=cookie2;
#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"
conf.request_header_cookie = ""
# Autenticação 401 personalizada. Ainda não implementado. (A funcionalidade de cabeçalho personalizado já atende a essa necessidade, preguiça XD)
conf.request_header_401_auth = ""
# Método de solicitação personalizado. Padrão método get. Outras configurações: e.g:get;head
#conf.request_method = "head"
conf.request_method = "get"
# Tempo limite de cada solicitação personalizado. Padrão 3 segundos.
conf.request_timeout = 3
# Atraso aleatório (0-x) segundos antes de enviar solicitação. Parâmetro deve ser inteiro. Padrão 0 segundos, sem atraso.
conf.request_delay = 0
# Número de threads de corrotina para um único alvo. Padrão 30 threads
conf.request_limit = 30
# Número máximo de tentativas. Ainda não implementado.
conf.request_max_retries = 1
# Configurar conexão persistente. Usar session(). Ainda não implementado.
conf.request_persistent_connect = 0
# Redirecionamento 302. Padrão False, sem redirecionamento. Outras configurações: e.g:True;False
conf.redirection_302 = False
# Adicionar sufixo ao payload. Padrão vazio, sem sufixo durante a varredura. Outras configurações: e.g:txt;php;asp;jsp
#conf.file_extension = "txt"
conf.file_extension = ""
# Configuração de manipulação de resposta
[ResponseHandler]
# Configurar status de resposta a serem registrados. Padrão [200], registrar status 200. Outras configurações: e.g:[200,403,301]
#conf.response_status_code = [200,403,301]
conf.response_status_code = [200]
# Registrar cabeçalho content-type da resposta. Padrão 1 para registrar
#conf.response_header_content_type = 0
conf.response_header_content_type = 1
# Registrar tamanho da página. Padrão 1 para registrar
#conf.response_size = 0
conf.response_size = 1
# Detectar automaticamente página 404. Padrão True, ativado. Outras configurações: e.g:True;False
#conf.auto_check_404_page = False
conf.auto_check_404_page = True
# Expressão regular personalizada para corresponder página 503. Ainda não implementado. Provavelmente será removido.
#conf.custom_503_page = "page 503"
conf.custom_503_page = ""
# Expressão regular personalizada para corresponder conteúdo da página
#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"
conf.custom_response_page = ""
# Pular exibição de páginas com tamanho x. Se não configurado, usar "None". Padrão "None". Outras configurações: e.g:None;0b;1k;1m
#conf.skip_size = "0b"
conf.skip_size = "None"
# Opções de proxy
[ProxyHandler]
# Configuração de proxy. Padrão "None", sem proxy. Outras configurações: 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
# Opções de Debug
[DebugMode]
# Imprimir payloads e sair
conf.debug = 0
# Opções de atualização
[CheckUpdate]
# Obter atualização do github. Ainda não implementado.
conf.update = 0
Os arquivos de dicionário estão armazenados na pasta data na raiz do projeto
bar.log.start() na linha 517 do bruter.py. Solução: instale progressbar2. Desinstale progressbar. Para evitar importação de módulo com o mesmo nome. Agradecimento a um certo colega pela dica.Execute o comando:
python3 -m pip uninstall progressbar
python3 -m pip install progressbar2
Durante o desenvolvimento do dirmap, foram emprestados padrões e ideias de vários excelentes projetos de código aberto, aqui declarados e agradecidos.
mail: [email protected]
