Lesson 2


BÁSICO DE APLICAÇÕES WEB





Os desafios web vão testar o seu conhecimento em segurança de aplicações web. Para resolver os desafios nessa categoria, você deve entender os conceitos básicos de como uma aplicação web funciona, os protocolos usados, os tipos de requisicões e configurações.

Uma das primeiras coisas que você deve fazer ao se deparar com uma aplicação web é "examinar" a aplicação. Isso significa que você deve navegar por todos os links para descobrir sobre o que é, quais funcionalidades possui, quais partes são dinâmicas e o que pode ser explorado. Além disso, você deve sempre lembrar de olhar o código fonte da página.

Em geral, você apenas precisa clicar com o botão direito na página e escolher "visualizar código fonte".

Isso irá abrir uma nova aba com o código fonte. Na maioria dos casos, será necessário ver em um formato melhor ou verificar um elemento especifico.

Para fazer isso, apenas clique com o botão direito no elemento e selecione "inspecionar elemento".

Isso irá abrir uma tela com o código fonte, destacando o elemento que você clicou. Se você colocar o ponteiro do mouse sobre os elementos e tags do código fonte, ele irá destacar o elemento referente na página. Você também pode editar elementos HTML, mas estas mudanças só refletem localmente.

O código fonte de uma aplicação pode esconder muitas informações importantes. Verifique o código fonte por comentários que os desenvolvedores possam ter esquecido, veja se você consegue pegar alguma informação que não é visível para o usuário final, como inputs escondidos.

Tente você. Existe algo escondido nessa página.

Outra coisa que você deve sempre checar é o arquivo robots.txt. Este é um arquivo texto que é comumente utilizado por engines de busca, web crawlers e robôs de busca. É um padrão utilizado por web sites para determinar quais pastas e páginas devem ou não ser indexadas pelos sites de busca, como o Google. Então se você encontrar algo como:

User-agent: *
Disallow: /admin
Disallow: /scripts
Allow: /site
Allow: /misc

Talvez se você abrir o caminho admin e scripts você encontre algo interessante.

Cookies também devem ser olhados... E nós não estamos falando de comida aqui. :-) Cookies geralmente são usados para armazenar dados no navegador do usuário, normalmente específico a aquele visitante. Web sites são sem estado, então os cookies fornecem um tipo de memória para os sites. Pode ser usado para uma variedade de propósitos como: manter você logado, salvar as preferências que você definiu e lembrar a próxima vez que você retornar, ajudar os anunciantes a rastrear seus interesses.


Desenvolvedores devem usar os cookies com cuidado, considerando que cookies podem ser perigosos se usado incorretamente. Eles podem revelar dados confidênciais e privados de uma sessão, podem contribuir para burlar as restrições de segurança, entre outros. Como os cookies são armazenados no lado do cliente, eles são vulneráveis a manipulação.

Para entender o conceito de cookies, nós devemos ter um conhecimento básico do protocolo HTTP. HTTP (Hyper Text Transfer Protocol) é um protocolo orientado a requisição-resposta que especifica a comunicação entre o navegador e o servidor web.

Para entender cada campo usado pelo cabeçalho HTTP, leia mais em: https://pt.wikipedia.org/wiki/Lista_de_campos_de_cabeçalho_HTTP.




No 1 uma única página é requisitada ao servidor com o referenciador (referer) para o host http://shellterlabs.com/. O servidor, como podemos ver no 2, define um cookie com a flag de notificação como verdadeira e o tempo em que aquele cookie irá expirar. Quando um usuário requisita outra página, o navegador lê o cookie e envia o cabeçalho com a flag de notificação no cookie como verdadeira, assim como foi definido anteriormente.

Você pode dizer: “Tudo bem, mas isso é apenas uma flag de notificação. O que tem de errado?”

Alguns web sites definem restrições de segurança no cookie. Então nós podemos mudar para burlar alguma autenticação.
Por exemplo:



Aqui nós tentamos acessa a página de administração, mas não é permitido. Prestando atenção ao cookie, existe uma flag ofuscada, aXNhZG1pbj1mYWxzZQ==.

Então, ao desofuscar, nós teremos:

>> shellter$ python -c 'import base64; print(base64.b64decode("aXNhZG1pbj1mYWxzZQ=="))'
>> isadmin=false


Desta forma, nós precisamos interceptar a requisição, mudar a flag isadmin para verdadeiro, então codificar com base64 novamente e encaminhar para o servidor. Com isso é possível dizer para o servidor web que nós somos o administrador e acessar a página requisitada, burlando a restrição.

Em alguns momentos é interessante ter uma ferramenta para interceptar as requisições. Estas ferramentas agem como um proxy entre você e o web site que você está navegando. Ela permite que você intercepte, inspecione e modifique os cabeçalhos e parametros HTTP/HTTPS. Isto é muito útil durante a análise da segurança de uma aplicação web.

Algumas das ferramentas mais utilizadas são:
  • BurpSuite
    Da página oficial: "Burp Suit é uma plataforma integrada para realizar testes de segurança em aplicações web. Suas várias ferramentas trabalham juntas perfeitamente para suportar o processo completo de testes, do mapeamento inicial e análise da superficie de ataque da aplicação, até encontrar e explorar as vulnerabilidades web.". Existem duas edições: Gratuita e Profissional. A edição gratuita deve atender as suas necessidades.

    Website: https://portswigger.net/burp/

  • TamperData Plugin
    É uma extensão gratuita do Mozilla Firefox para rastrear, gravar e modificar requisições HTTP/HTTPS.

    Website: https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

  • OWASP ZAP
    Da página oficial: "O OWASP Zed Attack Proxy (ZAP) é um das ferramentas gratuitas mais populares do mundo e é ativamente mantida por centenas de voluntários internacionais. Ele pode te ajudar a automaticamente encontrar vulnerabilidades em suas aplicações web enquanto você desenvolve e testa suas aplicações. Ele também é uma ótima ferramenta para pentesters experientes para utilizar em testes de segurança manuais."

    Website: https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
Para fazer qualquer coisa com o Burp, primeiro você precisa configurar o seu navegador. Ao executar a ferramenta, uma porta local é aberta no seu sistema (padrão 8080), então você deve mudar as configurações de proxy do seu navegador para usar o endereço de proxy 127.0.0.1 e a porta 8080. Após fazer isso, todo o seu tráfego irá passar através do Burp enquanto você navega.

Tente você. Com o Burp rodando, acesse qualquer página HTTP no seu navegador configurado.

Você irá perceber que o seu navegador ficará aguardando a requisição completar. Isso ocorre porque o Burp interceptou a requisição..

No Burp, vá para a aba Proxy e então para a sub aba Intercept. Você irá ver a requisição exibida no painel principal. Você pode escolher entre: Encaminhar a requisição, para enviar a requisição para o destino, Drop, para descartar ou desligar o Intercept para navegar normalmente.

Tente desabilitar o Intercept

Volte para o navegador. Você irá ver que a requisição foi processada normalmente.

Por favor, acesse: https://support.portswigger.net/customer/portal/articles/1783075-installing-burp-s-ca-certificate-in-your-browser para instruções em como installar o certificado do Burp no seu navegador, para que seja possível navegar em sites HTTPS através do Burp.

Enquanto navega, cada requisição feita é interceptada pelo Burp (considerando que você está com o Intercept habilitado). Na aba Intercept você pode não só visualizar a requisição como também modificar. Isto é uma funcionaliadde bem interessante e que você irá usar logo logo.

O Burp possui mais funcionalidades (incluindo, mas não limitado a):
  • Spider - Pode ser usado para automaticamente mapear uma aplicação, para descobrir seu conteúdo e funcionalidade.
  • Scanner - É usado para automaticamente escanear requisições HTTP para encontrar vulnerabilidades..
  • Intruder - Permite que você realize ataques automáticos customizados, para carregar todos os tipos de tarefas de teste..
  • Repeater - É usado para manualmente modificar e reenviar requisições HTTP de novo e de novo.
  • Sequencer - É usado para analizar a qualidade da aleatoridade dos tokens de sessão de uma aplicação.
  • Decoder - Permite que você transforme bits de dados da aplicação usando métodos comuns de codificação e decodificação.
  • Comparer - Este é usado para realizar uma comparação visual dos bits de dados da aplicação para encontarr diferenças interessantes.

Algum destes só estão disponíveis na Edição Profissional

Você pode pegar mais informações sobre o Burp em: https://portswigger.net/burp/help


Desafio:

Agora é sua vez! Você aprendeu o suficiente para completar esses simples desafios. Vá em frente.
  • Desafio web de introdução 1:
    Como nós comentamos anteriormente, existe algo escondido nessa página. Você encontrou? Complete o desafio!

  • Desafio web de introdução 2:
    Vá para o endereço que você encontrou no nosso código fonte e complete o desafio usando alguma das coisas que você aprendeu nessa lição. Encontre o diretório escondido do administrador e acesse como admin. Nota: você não precisa de um usuário e senha.

Leitura adicional:


Share: