quarta-feira, 23 de março de 2016

Dirb :: Coleta de Informações de Diretórios de um servidor Web


O Dirb é uma ferramenta de crawling muito bacana escrita em Python que nos permite realizar vários tipos de testes sobre disclosure de informações em aplicações Web. Basicamente ela faz um bruteforce com vários nomes de pastas e trata o código de retorno das mesmas identificando se elas são acessíveis ou não.
A fase de levantamento de informações é de grande valor, tanto no Pentest quanto nos testes de segurança em stage da aplicação. Ela pode revelar várias falhas e deslises da equipe de desenvolvimento e evitar futuras exposições e ataques a nossa aplicação e comprometimento do funcionamento e sigilo do cliente.

Ela já está na maioria dos repositórios das grandes distribuições. Porém segue o site do projeto:
Link: https://sourceforge.net/projects/dirb/

Usage Básico do Dirb

 root@fidelis:/home/matheus# dirb  
 -----------------  
 DIRB v2.22    
 By The Dark Raver  
 -----------------  
 ./dirb <url_base> [<wordlist_file(s)>] [options]  
 ========================= NOTES =========================  
  <url_base> : Base URL to scan. (Use -resume for session resuming)  
  <wordlist_file(s)> : List of wordfiles. (wordfile1,wordfile2,wordfile3...)  
 ======================== HOTKEYS ========================  
  'n' -> Go to next directory.  
  'q' -> Stop scan. (Saving state for resume)  
  'r' -> Remaining scan stats.  
 ======================== OPTIONS ========================  
  -a <agent_string> : Specify your custom USER_AGENT.  
  -c <cookie_string> : Set a cookie for the HTTP request.  
  -f : Fine tunning of NOT_FOUND (404) detection.  
  -H <header_string> : Add a custom header to the HTTP request.  
  -i : Use case-insensitive search.  
  -l : Print "Location" header when found.  
  -N <nf_code>: Ignore responses with this HTTP code.  
  -o <output_file> : Save output to disk.  
  -p <proxy[:port]> : Use this proxy. (Default port is 1080)  
  -P <proxy_username:proxy_password> : Proxy Authentication.  
  -r : Don't search recursively.  
  -R : Interactive recursion. (Asks for each directory)  
  -S : Silent Mode. Don't show tested words. (For dumb terminals)  
  -t : Don't force an ending '/' on URLs.  
  -u <username:password> : HTTP Authentication.  
  -v : Show also NOT_FOUND pages.  
  -w : Don't stop on Especificando uma WordlistWARNING messages.  
  -X <extensions> / -x <exts_file> : Append each word with this extensions.  
  -z <milisecs> : Add a miliseconds delay to not cause excessive Flood.  
 ======================== EXAMPLES =======================  
  ./dirb http://url/directory/ (Simple Test)  
  ./dirb http://url/ -X .html (Test files with '.html' extension)  
  ./dirb http://url/ /usr/share/dirb/wordlists/vulns/apache.txt (Test with apache.txt wordlist)  
  ./dirb https://secure_url/ (Simple Test with SSL)  
 root@fidelis:/home/matheus#   


Fazendo um scan simples

A sintaxe básica do Dirb é literalmente básica. Especificando uma WordlistVeja:
 # dirb http://testphp.vulnweb.com  
 root@fidelis:/home/matheus# dirb http://gastos.localhost.com/  
 -----------------  
 DIRB v2.22    
 By The Dark Raver  
 -----------------  
 START_TIME: Wed Mar 23 17:15:14 2016  
 URL_BASE: http://gastos.localhost.com/  
 WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt  
 -----------------  
 GENERATED WORDS: 4612                               
 ---- Scanning URL: http://gastos.localhost.com/ ----  
 + http://gastos.localhost.com/.git/HEAD (CODE:200|SIZE:23)                                           
 ==> DIRECTORY: http://gastos.localhost.com/cache/                                               
 ==> DIRECTORY: http://gastos.localhost.com/controller/                                             
 ==> DIRECTORY: http://gastos.localhost.com/docs/                                                
 ==> DIRECTORY: http://gastos.localhost.com/files/                                               
 ==> DIRECTORY: http://gastos.localhost.com/images/                                               
 + http://gastos.localhost.com/index.php (CODE:200|SIZE:6227)                                          
 ==> DIRECTORY: http://gastos.localhost.com/javascript/                                             
 + http://gastos.localhost.com/LICENSE (CODE:200|SIZE:11857)                                          
 ==> DIRECTORY: http://gastos.localhost.com/model/                                               
 + http://gastos.localhost.com/server-status (CODE:200|SIZE:4958)                                        
 ==> DIRECTORY: http://gastos.localhost.com/templates_c/                                            
 ==> DIRECTORY: http://gastos.localhost.com/vendor/                                               
 ==> DIRECTORY: http://gastos.localhost.com/view/                

Dessa forma, o dirb irá realizar uma série de verificações de códigos 200 do servidor sobre cada tentativa de encontrar arquivos e diretórios na URL especificada. Ele mesmo já possui uma wordlist default que usa nesse caso. Caso queira utilizar sua própria, dê uma olhada no comando a seguir

Especificando uma Wordlist

É possível especificar a sua própria Wordlist para efetuar o levantamento de informação. Apesar a default do software ser bem completa, as vezes temos que customizar a nossa para determinados tipos de frameworks
 # dirb http://testphp.vulnweb.com /caminho/para/a/wordlist  


Ajuste fino na página de 404 ou erro

É possível realizar parametrizações dentor do core da aplicação web para que ela exiba uma certa página de erro caso a página ou controller especificado na URL não exista, evitando assim a exibição de erros crus para os atacantes. Para solucionar esse problema durante o Pentest, podemos especificar o header da página de erro.
 # dirb http://local.hapanel.esy.es -H "PaginazinhaDahora | Erro"  


:)


SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

1 comentários:

  1. Olá, e quando o Dirb não funciona? Que outra ferramenta podemos usar para obter o mesmo resultado?

    ResponderExcluir

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com