quarta-feira, 21 de março de 2012

Analisando a segurança do seu servidor web com o OWASP Dirbuster .

Entre as ferramentas de análise de segurança web que merecem uma menção, está o OWASP Dirbuster, uma aplicação escrita em Java que permite realizar brute-force em diretórios e arquivos de servidores web:


Suas principais aplicações são:
  • Durante uma análise de segurança em aplicações web
  • Antes de publicar um novo site para o público
  • Periodicamente, nos servidores web da sua companhia em busca brechas
Entre as opções de uso, estão:
  • Uso de listas (dicionários, ele já vem com alguns! :)
  • Uso de bruteforce puro (letras/numeros/combinações de X a Y caracteres)
  • Fuzzing
  • Blank extensions
  • HTTP Auth (tanto Basic, quando NTLM e Digest)
  • Uso de proxy
  • Controle de threads (vá com calma nesse ponto!)
Mas pegando um atalho nas explicações, vamos ver como ele funciona num teste simples:

Ele está disponível em bzip para Linux e possui um instalador para sistemas Windows.

2. Após instalar (ou executar) a tela inicial precisa ser preenchida com alguns parâmetros para o teste:
Target URL: Seu alvo. É onde você especifica também se será um acesso http ou https. Nesse exemplo estou usando http://julio.carvalho/mutillidae/ (uma instância de uma aplicação web vulnerável).


Number of Threads:
Quantas conexões simultâneas serão abertas para o bruteforce. Este item deve ser configurado em valores baixos (eu uso 5 ou 10). Depois de iniciado o processo você pode ajusta-lo como quiser. Colocar esse item num valor muito alto pode soar alarmes no seu destino, ou trazer condições de Denial of Service (sim, isso é comum se você abusar aqui :(.

File with list of dirs/files
: Neste item você escolhe entre uma das 9 listas que são disponibilizadas junto com o Dirbuster. Ao clicar em List Info você obtêm mais informações sobre cada lista (Leia!).

Siga minha dica e faça o seguinte:


Descubra se o site é case sensitive. Para isso, navegue no site em busca de uma URL com diretórios (entre barras / ) e faça a troca do case de algumas letras, por exemplo:


Ao navegar no site do MIT, encontrei o link: 
http://web.mit.edu/visit/


Para testar se o site é case sensitive troque o case de uma das letras do diretório, nesse caso vamos trocar o /visit/ por /viSIt/:

Perceba que o conteúdo da página permanece o mesmo.
Nenhum erro de 404, nenhum erro de webserver, nada. Isso confirma que case-sensitive não é o caso do MIT.

Agora, outro exemplo:


Navegando no site da Nasa encontramos o link: 
http://www.nasa.gov/news/index.html
  
Vamos fazer o mesmo teste, e identificar se o site é ou não case-sensitive, alterando o /news/ para /nEWs/:
Perceba que nesse caso, a página mudou. Fomos direcionados a uma página de erros configurada.

Com isso em mente, você já pode escolher (clicando em Browse) entre as duas principais listas do Dirbuster:


directory-list-lowercase-2.3-small.txt
- Para casos em que o site não é case sensitive (Ex: MIT)
directory-list-2.3-small.txt
- Para casos em que o site é case sensitive (Ex: Nasa)

Próximo passo:


File extention:
 Pra determinar o tipo de extensão mais recorrente, navegue pelo site. Caso o site use blank extension (quando a url não tem extensão alguma), dê uma lida no código em busca da extensão mais usada. Na dúvida mantenha o padrão php ou investigue qual é o webserver.

Vamos manter as demais opções dessa tela no padrão pra nao alongar muito.


4. Uma dica bacana é alterar o User Agent que o Dirbuster utiliza.

Não é uma mudança obrigatória, mas se do outro lado do seu teste houver alguém esperto, que configurou o firewall layer 7 (ou hids) para bloquear *Dirbuster* no user-agent, você não terá sucesso algum :)

Pra alterar o user-agent faça o seguinte:


Options > Advanced Options > Http Options > Http User Agent

e altere o valor padrão pelo user agent do seu browser. Não sabe qual é? Então visite: http://whatsmyuseragent.com/

No meu caso ficou assim
:


Uma outra dica é dar um pulo na aba Scan Options e trocar o thereIsNoWayThat-You-CanBeThere por qualquer palavra impossível de existir (como por exemplo oRiodeJaneiroehUmaCidadeFeia :)

Isso também evita ser pego por filtros do outro lado.


5. Seguindo em frente, clique em OK e vamos começar o scan, clicando então em START.


Os resultados serão exibidos em outra tela, como visto abaixo:
Muitas vezes as listas contem nomes de arquivos e diretórios que são usados como fontes de informação durante ataques, por exemplo:

  • Páginas com resumos de configuração do serviço web e do servidor (phpinfo.php, alguém? :)
  • Arquivos de backup 
  • Diretórios de outras aplicações instaladas no servidor, entre vários outros.
Ao encontrar um item que você ache interessante, clique com o botão direito e escolha Open in Browser:

Quem sabe isso não te leva a acessos que você nem imaginava estarem abertos?
E pra fechar, algumas dicas:


  • Alguns webservers podem ser espertos, e responder com uma página de erro pra todas as suas tentativas. Nesse caso compare o tamanho (coluna Size) entre as respostas com http status code 200. Com a prática, você perceberá que aqueles que tem o tamanho muito parecido se encaixam nesse caso, e não vai precisar abrir um por um em busca de algo interessante.
    Quando um determinado Size for muito diferente dos outros você já sabe que tem conteúdo ali dentro.
  • Você pode aumentar ou diminuir o  nímero de threats. Quanto mais threads, menos tempo o scan demora. Nunca passe de 200 (eu nunca uso mais que 50 por exemplo). Usar valores altos pode derrubar o serviço web. Em alguns casos usar 1 ou 100 threads nao faz diferença, depende do webserver na outra ponta.
  • Fique de olho na velocidade de requisições processadas por segundo. Caso ela zere, você pode ter sido bloqueado.
  • Durante o scan, você pode usar a função Skip pra pular diretórios onde você sabe que nao haverá nada de interessante (eu pulo coisas como o diretorio /manual/ do Apache por exemplo).
  • Você pode emitir um relatório clicando em Report (mesmo que clique no Stop antes do scan acabar).

Agora que você já conhece o Dirbuster e sabe pra que ele serve, teste os sites da sua companhia, mas tenha uma autorização por escrito pra isso.

Esse é apenas um pequeno teste simples. Não se sinta seguro só por não encontrar nenhum furo.

2 comentários:

Anônimo disse...

I got this websitе fгοm my fгіend
who informed me on the toрic of this wеb site
and at the moment this tіme I am brοwѕing
thіs wеbsite and reading very informatіve artiсles oг reviewѕ at
thiѕ tіme.

mу web site :: payday loans

Julio Carvalho - @julioboris disse...

Esse post foi copiado do meu blog antes dele ser extinto.
Ao menos deveriam colocar os créditos..

Postar um comentário

 

SECURITY MASTER Copyright © 2011 -- Template created by Security Master -- Powered by Blogger