Algum tempo atrás, entre os pesquisadores de segurança, era muito "moderno" encontrar armazenamentos em nuvem da AWS configurados incorretamente com vários tipos de informações confidenciais. Naquela época, eu até publiquei uma pequena observação sobre como o armazenamento em nuvem aberta do Amazon S3 é descoberto.
No entanto, o tempo passa e o foco na pesquisa mudou para a busca por bancos de dados de domínio público não seguros e expostos. Mais da metade dos casos conhecidos de grandes vazamentos de dados no ano passado são de bancos de dados abertos.

Hoje vamos tentar descobrir como esses bancos de dados são descobertos por pesquisadores de segurança ...
Isenção de responsabilidade obrigatória: este artigo não aborda e não levanta questões legais e éticas relacionadas à pesquisa e identificação de bancos de dados publicamente disponíveis. Todas as informações abaixo devem ser consideradas apenas educacionais.
Não "descobrirei a América" se disser que as principais ferramentas para pesquisar bancos de dados abertos são os mecanismos de pesquisa especializados Shodan.io, BinaryEdge.io e Censys.io. Anotarei apenas que esses serviços não são gratuitos e você deve pagar pelo acesso aos resultados completos da pesquisa (no caso de Shodan, são US $ 59 / mês, BinaryEdge - US $ 50 / mês e, para a Censys - US $ 99 / mês para os pacotes básicos mínimos). As versões gratuitas dos mecanismos de pesquisa limitam severamente o número de resultados na emissão.
Além da experiência de pesquisa clássica do Google, usando a função 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á uma chave de API. Isso permite facilitar significativamente a tarefa de limpar o monte 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.
Vamos dar uma olhada no exemplo do mecanismo de pesquisa Shodan: como encontrar bancos de dados abertos do MongoDB e Elasticsearch.
A solicitação mais simples e óbvia que implora uma tentativa é "MongoDB":

De uma captura de tela acima, podemos ver que essa solicitação retornou todos os servidores MongoDB indexados (na porta padrão 27017). Além disso, a maioria deles (os três primeiros na captura de tela) serão bancos de dados fechados que exigem credenciais de conta. Não é exatamente o que estamos interessados em encontrar. Mais precisamente, não é de todo interessante.
Vamos complicar um pouco a consulta usando os filtros de pesquisa “all:" mongodb server information "all:" metrics "”:

Os resultados parecem muito melhores. Todos os bancos de dados encontrados estavam disponíveis gratuitamente no momento em que o mecanismo de pesquisa os indexou. É muito provável que consigamos nos conectar aos endereços IP especificados usando qualquer gerenciador do MongoDB (por exemplo, NoSQL Manager para MongoDB ou Studio 3T para MongoDB).
Para localizar instâncias não autenticadas do MongoDB que também atuam como servidores de armazenamento de arquivos, tente usar a consulta “port: 27017 -all:" parcialmente "todos:" fs.files "”
Pode-se limitar a pesquisa a qualquer país. Digamos que procure pelo MongoDB aberto na China: (consulte “all:" informações do servidor mongodb "all:" metrics "country:" cn "”):

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

Para impor filtros mais complexos (restrições no tamanho do banco de dados, data do servidor no índice etc.) nos resultados da pesquisa, pode-se usar scripts e programas especializados. Para fazer isso, será necessário acesso pago e uma chave de API, como escrevi acima.
Aqui está uma pequena lista de links que podem ser úteis:
- cli.shodan.io é o console oficial do Shodan.
- O github.com/woj-ciech/LeakLooker é um programa python para pesquisar bancos de dados abertos (MongoDB, CouchDB, Elasticsearch etc.).
- O lampyre.io é uma interface gráfica muito poderosa (e ainda muito problemática!) para pesquisar e visualizar o que você encontra. Possui modelos integrados para pesquisa no MongoDB e muito mais. Está em testes beta com todas as consequências que isso implica ...