Algum tempo atrás, entre os pesquisadores de segurança, era muito "moderno" encontrar armazenamentos em nuvem da AWS configurados incorretamente com todos os tipos de informações confidenciais. Até publiquei uma pequena nota sobre como o armazenamento em nuvem aberta do Amazon S3 é descoberto.
No entanto, o tempo passa e a ênfase na pesquisa mudou para a busca de bancos de dados publicamente disponíveis. Mais da metade dos casos conhecidos de grandes vazamentos de dados no ano passado são de bancos de dados abertos (uma revisão dos vazamentos para 2018 aqui e aqui ).

Hoje, tentaremos entender como esses bancos de dados são detectados por pesquisadores de segurança ...
Isenção de responsabilidade obrigatória: este artigo não aborda ou levanta questões legais e éticas relacionadas à pesquisa e identificação de bancos de dados disponíveis publicamente. Todas as informações abaixo devem ser consideradas exclusivamente educacionais e informativas.
Não descobrirei a América se disser que as principais ferramentas para encontrar bancos de dados abertos são os mecanismos de pesquisa especializados Shodan e Censys . Devo dizer imediatamente que esses não são serviços gratuitos e você deve pagar seus não-rublos honestamente ganhos para acessar os resultados completos da pesquisa (no caso de Shodan, é de US $ 59 / mês, e para o Censys - US $ 99 / mês, e isso é apenas para os pacotes básicos mínimos). As versões gratuitas dos mecanismos de pesquisa limitam bastante o número de resultados nos resultados da pesquisa.
Além da pesquisa clássica semelhante ao Google, usando a barra de pesquisa, esses mecanismos de pesquisa oferecem a capacidade de conectar-se a eles por meio da API. O proprietário sortudo de uma assinatura paga receberá sua chave de API. Isso torna possível facilitar significativamente a tarefa de coletar uma pilha de lixo de pesquisa. Forneci uma lista de scripts úteis e programas de automação de pesquisa que usam chaves de API no final deste artigo.
, , GitHub, API-, .
Vejamos o mecanismo de pesquisa Shodan como um exemplo de como encontrar bancos de dados abertos do MongoDB e Elasticsearch.
A consulta mais simples e óbvia que implora é "MongoDB":

Como pode ser visto na captura de tela, essa solicitação retornou todos os servidores MongoDB indexados para nós (na porta padrão 27017). Além disso, a maioria deles (na captura de tela, esses são os três primeiros) serão bancos de dados fechados, exigindo contas para conexão. E não é exatamente nisso que estamos interessados. Mais precisamente, esse não é o caso.
Vamos complicar um pouco a consulta usando os filtros de pesquisa "all:" mongodb server information "all:" metrics "":

O resultado já parece muito melhor. Todos os bancos de dados encontrados estavam disponíveis gratuitamente no momento em que foram indexados pelo mecanismo de pesquisa. Com um alto grau de probabilidade, você pode se conectar a eles nos endereços IP especificados usando algum gerenciador para MongoDB (por exemplo, NoSQL Manager para MongoDB ou Studio 3T para MongoDB).
Você pode limitar a pesquisa a um país. Digamos que vamos procurar MongoDBs abertos na China (consulta "all:" informações do servidor mongodb "all:" metrics "country:" cn ""):

Para procurar bancos de dados abertos do Elasticsearch, é conveniente usar a consulta "port:" 9200 "all:" índices elásticos "":

Infelizmente, não encontrei uma maneira de definir a condição de pesquisa na barra de pesquisa de acordo com o tamanho do banco de dados. Se você souber como fazer isso (defina um filtro nos parâmetros "totalSize" ou "sizeOnDisk" na barra de pesquisa), escreva nos comentários.
Você pode aplicar filtros mais complexos (restrições no tamanho do banco de dados, a data em que o servidor inseriu o índice etc.) nos resultados da pesquisa usando scripts e programas especializados. Para isso, você já precisará de acesso pago e uma chave de API, como escrevi acima.
Aqui está uma pequena lista do que pode ser útil:
- cli.shodan.io é o console oficial do Shodan. Em russo sobre o seu uso pode ser lido aqui .
- shodan-manual.com - um guia para Shodan em russo.
- O github.com/woj-ciech/LeakLooker é um programa python para encontrar bancos de dados abertos (MongoDB, CouchDB, Elasticsearch etc.).
- O lampyre.io é uma interface gráfica muito poderosa (e até agora muito complicada!) para pesquisar e visualizar o que foi encontrado. Possui modelos internos para pesquisar o MongoDB e muito mais. Está em teste beta com todas as consequências ...
- O t.me/dataleak (se bloqueado, então tele.click/dataleak ) é meu modesto canal de Telegram, no qual analiso vazamentos de informações e, em particular, escrevo sobre o que os pesquisadores de segurança encontram no domínio público. Isso é interessante.