ID |
---|
WSTG-INFO-03 |
Resumo
Esta seção descreve como testar vários arquivos de metadados buscando o vazamento de informações sobre o(s) caminho(s) ou funcionalidade do aplicativo web. Além disso, a lista de diretórios que devem ser evitados por Spiders, Robots ou Crawlers também pode ser criada como uma dependência para Mapear caminhos de execução através do aplicativo. Outras informações também podem ser coletadas para identificar a superfície de ataque, detalhes de tecnologia ou para uso em engenharia social.
Objetivos do teste
- Identificar caminhos e funcionalidades ocultas ou obfuscadas através da análise de arquivos de metadados.
- Extrair e mapear outras informações que possam levar a uma melhor compreensão dos sistemas em mãos.
Como testar
Qualquer uma das ações executadas abaixo com
wget
também pode ser feita comcurl
. Muitas ferramentas de teste de segurança de aplicativos dinâmicos (DAST), como ZAP e Burp Suite, incluem verificações ou análise desses recursos como parte de sua funcionalidade de spider/crawler. Eles também podem ser identificados usando vários Google Dorks ou alavancando recursos avançados de pesquisa, comoinurl:
.
Robots
Web Spiders, Robots ou Crawlers recuperam uma página da web e, em seguida, percorrem recursivamente os hiperlinks para recuperar mais conteúdo da web. Seu comportamento aceito é especificado pelo Protocolo de Exclusão de Robôs do arquivo robots.txt no diretório raiz da web.
Como exemplo, o início do arquivo robots.txt
do Google amostrado em 5 de maio de 2020 é citado abaixo:
User-agent: *
Disallow: /search
Allow: /search/about
Allow: /search/static
Allow: /search/howsearchworks
Disallow: /sdch
...
A diretiva User-Agent refere-se ao spider/robot/crawler da web específico. Por exemplo, User-Agent: Googlebot
refere-se ao spider do Google, enquanto User-Agent: bingbot
refere-se a um crawler da Microsoft. User-Agent: *
no exemplo acima se aplica a todos os spiders/robots/crawlers da web.
A diretiva Disallow
especifica quais recursos são proibidos pelos spiders/robots/crawlers. No exemplo acima, os seguintes recursos são proibidos:
...
Disallow: /search
...
Disallow: /sdch
...
Spiders/robots/crawlers da web podem ignorar intencionalmente as diretivas Disallow
especificadas em um arquivo robots.txt
, como aquelas das Redes Sociais para garantir que os links compartilhados ainda sejam válidos. Portanto, o arquivo robots.txt
não deve ser considerado como um mecanismo para impor restrições sobre como o conteúdo da web é acessado, armazenado ou republicado por terceiros.
O arquivo robots.txt
é recuperado do diretório raiz da web do servidor. Por exemplo, para recuperar o robots.txt
de www.google.com
usando wget
ou curl
:
$ curl -O -Ss http://www.google.com/robots.txt && head -n5 robots.txt
User-agent: *
Disallow: /search
Allow: /search/about
Allow: /search/static
Allow: /search/howsearchworks
...
Analisar robots.txt usando as Ferramentas do Google para Webmasters
Os proprietários de sites podem usar a função do Google "Analisar robots.txt" para analisar o site como parte das Ferramentas do Google para Webmasters. Essa ferramenta pode ajudar no teste e o procedimento é o seguinte:
- Faça login nas Ferramentas do Google para Webmasters com uma conta do Google.
- No painel, digite a URL do site a ser analisado.
- Escolha entre os métodos disponíveis e siga as instruções na tela.
META Tags
As tags <META>
são encontradas dentro da seção HEAD
de cada documento HTML e devem ser consistentes em todo o site no caso do ponto de partida do spider/robot/crawler não começar a partir de um link de documento que não seja webroot, ou seja, um link profundo. A diretiva Robots também pode ser especificada através do uso de uma tag META específica.
Robots META Tag
Se não houver entrada <META NAME="ROBOTS" ... >
, então o "Protocolo de Exclusão de Robôs" assume os valores padrão INDEX, FOLLOW
respectivamente. Portanto, as outras duas entradas válidas definidas pelo "Protocolo de Exclusão de Robôs" são prefixadas com NO...
ou seja, NOINDEX
e NOFOLLOW
.
Com base nas diretivas Disallow listadas no arquivo robots.txt
no diretório raiz, uma busca por é executada em cada página web. O resultado é então comparado ao arquivorobots.txt no diretório raiz.
Organizações muitas vezes incorporam tags META informativas no conteúdo web para suportar várias tecnologias, como leitores de tela, visualizações de redes sociais, indexação de mecanismos de pesquisa, etc. Essas metainformações podem ser valiosas para testadores na identificação das tecnologias utilizadas e caminhos/funcionalidades adicionais a ser explorados e testados. As seguintes meta informações foram obtidas em www.whitehouse.gov
usando "Ver Código Fonte da Página" em 05 de maio de 2020:
...
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:title" content="The White House" />
<meta property="og:description" content="We, the citizens of America, are now joined in a great national effort to rebuild our country and to restore its promise for all. – President Donald Trump." />
<meta property="og:url" content="https://www.whitehouse.gov/" />
<meta property="og:site_name" content="The White House" />
<meta property="fb:app_id" content="1790466490985150" />
<meta property="og:image" content="https://www.whitehouse.gov/wp-content/uploads/2017/12/wh.gov-share-img_03-1024x538.png" />
<meta property="og:image:secure_url" content="https://www.whitehouse.gov/wp-content/uploads/2017/12/wh.gov-share-img_03-1024x538.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:description" content="We, the citizens of America, are now joined in a great national effort to rebuild our country and to restore its promise for all. – President Donald Trump." />
<meta name="twitter:title" content="The White House" />
<meta name="twitter:site" content="@whitehouse" />
<meta name="twitter:image" content="https://www.whitehouse.gov/wp-content/uploads/2017/12/wh.gov-share-img_03-1024x538.png" />
<meta name="twitter:creator" content="@whitehouse" />
...
<meta name="apple-mobile-web-app-title" content="The White House">
<meta name="application-name" content="The White House">
<meta name="msapplication-TileColor" content="#0c2644">
<meta name="theme-color" content="#f5f5f5">
...
Um mapa do site é um arquivo onde um desenvolvedor ou organização pode fornecer informações sobre as páginas, vídeos e outros arquivos oferecidos pelo site ou aplicativo, e a relação entre eles. Mecanismos de pesquisa podem usar esse arquivo para explorar seu site de forma mais inteligente. Testadores podem usar arquivos sitemap.xml
para aprender mais sobre o site ou aplicativo e explorá-lo mais completamente.
O seguinte trecho é do mapa do site principal do Google obtido em 05 de maio de 2020.
$ wget --no-verbose https://www.google.com/sitemap.xml && head -n8 sitemap.xml
2020-05-05 12:23:30 URL:https://www.google.com/sitemap.xml [2049] -> "sitemap.xml" [1]
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
<sitemap>
<loc>https://www.google.com/gmail/sitemap.xml</loc>
</sitemap>
<sitemap>
<loc>https://www.google.com/forms/sitemaps.xml</loc>
</sitemap>
...
Explorando a partir daí, um testador pode desejar recuperar o mapa do site do Gmail https://www.google.com/gmail/sitemap.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.google.com/intl/am/gmail/about/</loc>
<xhtml:link href="https://www.google.com/gmail/about/" hreflang="x-default" rel="alternate"/>
<xhtml:link href="https://www.google.com/intl/el/gmail/about/" hreflang="el" rel="alternate"/>
<xhtml:link href="https://www.google.com/intl/it/gmail/about/" hreflang="it" rel="alternate"/>
<xhtml:link href="https://www.google.com/intl/ar/gmail/about/" hreflang="ar" rel="alternate"/>
...
security.txt
é um padrão proposto que permite que sites definam políticas de segurança e detalhes de contato. Existem várias razões pelas quais isso pode ser interessante em cenários de teste, incluindo, mas não se limitando a:
- Identificar outros caminhos ou recursos para incluir em descoberta/análise.
- Coleta de inteligência de código aberto.
- Encontrar informações sobre Bug Bounties, etc.
- Engenharia social.
O arquivo pode estar presente na raiz do servidor da web ou no diretório .well-known/
. Exemplo:
https://example.com/security.txt
https://example.com/.well-known/security.txt
Aqui está um exemplo do mundo real obtido do LinkedIn em 05 de maio de 2020:
$ wget --no-verbose https://www.linkedin.com/.well-known/security.txt && cat security.txt
2020-05-07 12:56:51 URL:https://www.linkedin.com/.well-known/security.txt [333/333] -> "security.txt" [1]
# Conforms to IETF `draft-foudil-securitytxt-07`
Contact: mailto:security@linkedin.com
Contact: https://www.linkedin.com/help/linkedin/answer/62924
Encryption: https://www.linkedin.com/help/linkedin/answer/79676
Canonical: https://www.linkedin.com/.well-known/security.txt
Policy: https://www.linkedin.com/help/linkedin/answer/62924
humans.txt
é uma iniciativa para conhecer as pessoas por trás de um site. Ele é apresentado sob a forma de um arquivo de texto que contém informações sobre as diferentes pessoas que contribuíram para a construção do site. Veja humanstxt para mais informações. Esse arquivo frequentemente (embora nem sempre) contém informações para carreiras ou sites/trajetos de empregos.
O exemplo a seguir foi obtido do Google em 05 de maio de 2020:
$ wget --no-verbose https://www.google.com/humans.txt && cat humans.txt
2020-05-07 12:57:52 URL:https://www.google.com/humans.txt [286/286] -> "humans.txt" [1]
Google é construído por uma grande equipe de engenheiros, designers, pesquisadores, robôs e outros em vários locais ao redor do mundo. Ele é atualizado continuamente e construído com mais ferramentas e tecnologias do que podemos contar. Se você quiser nos ajudar, consulte careers.google.com.
Existem outras RFCs (do inglês Request for Comment) e rascunhos da Internet que sugerem usos padronizados de arquivos no diretório .well-known/
. Listas deles podem ser encontradas aqui ou aqui.
Seria bastante simples para um testador revisar a RFC/rascunhos e criar uma lista a ser fornecida a um rastreador ou fuzzing, a fim de verificar a existência ou o conteúdo de tais arquivos.
- Navegador (funcionalidade Exibir Código-fonte ou Dev Tools)
- curl
- wget
- Burp Suite
- ZAP