390k. sites com pasta .git aberta

Em julho, o pesquisador de segurança Vladimir Smitka decidiu verificar a Internet quanto à presença de pastas .git abertas, após uma auditoria semelhante recentemente ter sido realizada para domínios da Internet na República Tcheca e na Eslováquia.


vazar


Como diz o ditado: "nunca aconteceu, e aqui está outra vez". Deixe-me lembrá-lo, há 9 anos, exatamente a mesma história foi com o segmento russo da Internet afetado pela síndrome .svn aberta. A seguir, são apresentados os resultados do trabalho minucioso de um pesquisador, ferramentas e métodos tchecos.


Razões para a vulnerabilidade


Um invasor pode obter muitas informações críticas sobre a segurança do site no diretório .git . É assim que uma árvore típica de projeto se parece.


 ├── HEAD ├── branches ├── config ├── description ├── hooks │ ├── pre-commit.sample │ ├── pre-push.sample │ └── ... ├── info │ └── exclude ├── objects │ ├── info │ └── pack └── refs ├── heads └── tags 

Senhas e chaves de acesso a várias APIs, bancos de dados e serviços em nuvem podem ser armazenados lá.


Freqüentemente, como deveria ser, uma tentativa de abrir a pasta .git gera um erro HTTP 403, mas o motivo é apenas a falta de index.html / index.php e os direitos de indexar automaticamente a pasta, enquanto arquivos individuais ainda estão disponíveis . Para garantir que o site não esteja vulnerável, você deve abrir a página /.git/HEAD .


Este arquivo contém um link para o ramo do projeto atual.


 $ cat .git/HEAD ref: refs/heads/master 

Mesmo se a indexação automática de diretórios estiver desabilitada, você poderá restaurar facilmente toda a pasta .git baixando arquivos individuais e determinando dependências pelo processador de expressões regulares, porque a estrutura .git está claramente definida. Há também uma ferramenta especial - GitTools , que executa automaticamente todas as ações necessárias.


Meios de produção


Apesar da complexidade e ambição da tarefa, os custos em termos de dinheiro eram modestos. Por tudo, por tudo, foram necessários 250 dólares.


Servidor


Smithka alugou para o projeto 18 VPS e 4 servidores físicos. Segundo ele, sua escolha não recaiu sobre a AWS porque o custo total do serviço, levando em consideração os volumes gigantescos de tráfego esperados, espaço em disco significativo e altas cargas de CPU, não pôde ser facilmente calculado. O preço do VPS alugado foi fixado com antecedência.


Lista de domĂ­nios


A lista Ă© baseada nos logs de texto do projeto OpenData Rapid7 no JSON .


Esquema de banco de dados DNS de encaminhamento
 { "$id": "https://opendata.rapid7.com/sonar.fdns_v2/", "type": "object", "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "timestamp": { "$id": "/properties/timestamp", "type": "string", "description": "The time when this response was received in seconds since the epoch" }, "name": { "$id": "/properties/name", "type": "string", "description": "The record name" }, "type": { "$id": "/properties/type", "type": "string", "description": "The record type" }, "value": { "$id": "/properties/value", "type": "string", "description": "The response received for a record of the given name and type" } } } 

Depois de filtrar os TLDs e os domínios de segundo nível, a lista ainda tinha mais de 230 milhões de entradas .


Em seguida, o banco de dados foi dividido em blocos de 2 milhões de registros e a carga foi distribuída em vários servidores usando um aplicativo PHP.


De software


O Python pendurou nas bibliotecas de comunicação assíncrona assíncrona com o aiohttp como cavalo de batalha . Uma tentativa de usar Solicitações e Urllib3 para esses fins não teve êxito, das quais a primeira poderia ter sido adequada, mas o pesquisador não entendeu os tempos limite na documentação. O segundo não lidava com o redirecionamento de domínio e, por isso, logo esgotou a memória nos servidores.


Para identificar a plataforma e o perfil de sites vulneráveis, a Smitha usou o utilitário WAD , com base no banco de dados Wappalyzer , uma extensão para o navegador da web que permite determinar as tecnologias usadas na página.


Utilitários simples de linha de comando, como o GNU Parallels , também foram usados ​​para acelerar o tempo de execução do manipulador e impedir que o script parasse devido a um congelamento.


 cat sites.txt | parallel --bar --tmpdir ./wad --files wad -u {} -f csv 

Resultados


A varredura durou 2 semanas, como resultado, o pesquisador:


  • descobriu 390 mil sites vulneráveis;
  • coletou 290 mil endereços de e-mail;
  • notificou 90 mil destinatários da vulnerabilidade encontrada.

Em resposta a seus esforços, Smithka recebeu:


  • 18 mil erros de entrega de mensagens;
    • cerca de 2000 cartas de agradecimento;
    • 30 alarmes falsos com sistemas honeypot;
    • 1 ameaça de chamar a polĂ­cia canadense;

plataforma


A linguagem de programação mais popular acabou sendo PHP . No entanto, se você normalizar o resultado para o compartilhamento relativo de um determinado PL, o PHP abrirá caminho para o líder do Python e do Node.js. No entanto, não está claro o quão confiável essas estatísticas podem ser para determinar a participação de mercado de uma determinada linguagem de programação.


O Apache está no topo da lista de popularidade dos servidores Web, com o Nginx em segundo lugar, e o clone chinês Nginx Tengine subitamente em terceiro lugar.


O sistema operacional mais popular foi o Ubuntu , depois o Debian e o CentOS em terceiro lugar.


OS


A nomeação para o CMS quase acabou por ser um teatro de ator único, e esse ator é o WordPress, com 85% de todas as plataformas encontradas.


O que vem a seguir


Reparar uma vulnerabilidade é fácil.


.htaccess


 RewriteRule "(^|/)\.(?!well-known\/)" - [F] 

.nginx


 location ~ /\.(?!well-known\/) { deny all; } 

apache22.conf


 <Directory ~ "/\.(?!well-known\/)"> Order deny,allow Deny from all </Directory> 

apache24.conf


 <Directory ~ "/\.(?!well-known\/)"> Require all denied </Directory> 

Caddyfile


 status 403 /blockdot rewrite { r /\.(?!well-known\/) to /blockdot } 

Source: https://habr.com/ru/post/pt422725/


All Articles