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.

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;

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.

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 }