paint-brush
Verificando 2,6 milhões de domínios em busca de arquivos .Env expostospor@sdcat
9,377 leituras
9,377 leituras

Verificando 2,6 milhões de domínios em busca de arquivos .Env expostos

por sdcat2022/11/10
Read on Terminal Reader
Read this story w/o Javascript

Muito longo; Para ler

Um desenvolvedor de software escaneou 2,6 milhões de domínios em busca de arquivosposed.env. Ele encontrou 135 usuários e senhas de bancos de dados, 48 contas de usuários de e-mail com senhas, 11 credenciais ativas para provedores de pagamento (como Stripe ou Paypal), 98 tokens secretos para diferentes APIs e 128 segredos de aplicativos. O aspecto perigoso é que as senhas e segredos estão em formato não criptografado no arquivo.env. Quando o servidor web está mal configurado e este arquivo.env é entregue pela web. servidor, qualquer um pode. consultar esses dados.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Verificando 2,6 milhões de domínios em busca de arquivos .Env expostos
sdcat HackerNoon profile picture

Depois de minha primeira verificação de diretórios .git expostos, fiz outra verificação de arquivos .env expostos. Durante essa verificação, encontrei mais de 200 arquivos .env expostos. Além de definições de configuração inofensivas, encontrei 135 usuários e senhas de banco de dados, 48 contas de usuário de e-mail com senhas, 11 credenciais ativas para provedores de pagamento (como Stripe ou Paypal), 98 tokens secretos para diferentes APIs e 128 segredos de aplicativos (segredos para gerar sessão com segurança ids, tokens CSRF e tokens JWT) e algumas credenciais de administrador codificadas.

TLDR : cuidado com erros no processo de implantação. Nunca exponha seu arquivo .env oculto ao público.

Por que eu fiz isso?

Eu sou SDCat, um desenvolvedor de software com uma mente curiosa que adora olhar em todos os lugares sob o capô. Depois de procurar diretórios .git expostos, decidi me aprofundar nessa toca de coelho. E decidi que vou verificar se há arquivos .env expostos.

Neste post eu descrevo o que é um arquivo .env, como escaneei os domínios e algumas estatísticas sobre o que foi encontrado nesses arquivos. A análise desses dados às vezes revelou muitas credenciais para diferentes serviços e contas.

arquivo .env

Todo software requer alguma configuração e possui várias configurações. No caso de software de usuário, como um cliente de e-mail, essas configurações, como endereço de e-mail, nome de usuário e senha, são solicitadas ao usuário na primeira vez que o software é iniciado. Para software executado em um servidor e geralmente instalado automaticamente, a interação do usuário não é possível. Para alguns frameworks de software, essas configurações podem ser especificadas por meio de variáveis de ambiente e configuradas em um arquivo com o nome .env. Os arquivos .env são arquivos ocultos, portanto, você não os vê por padrão.

Exemplo de um arquivo .env:

 ENV= "PRODUCTION"
LOG_LEVEL= "INFO"
SMTP_HOST= "email.example.com"
SMTP_PORT= 25
SMTP_USER= "[email protected]"
SMTP_PASS= "SuperSecurePassword2022"
SMTP_TLS= 1
SMTP_CONNECTION_TIMEOUT_SECONDS= 2
DB_HOST= "dbserver.example.com"
DB_DATABASE_NAME= "important_database"
DB_USER= "my-app-db-user"
DB_PASSWORD= "2022SuperVerySecurePassword"
PAYMENT_GATEWAY= "payment.example.com"
PAYMENT_SECRET= "super-secure-payment-api-secret"

Observação: recomendamos senhas mais seguras do que as mencionadas nos exemplos acima.

Por que os arquivos .env expostos são interessantes/perigosos?

Como quase todos os aplicativos da Web acessam um banco de dados ou usam algumas APIs para se comunicar, essas credenciais devem ser passadas para o aplicativo. Se isso for feito usando o arquivo .env, as credenciais estarão em texto simples nesse arquivo. Quando o servidor da Web está configurado incorretamente e esse arquivo .env é entregue pelo servidor da Web, qualquer pessoa pode consultar esses dados. Para fazer isso, pode-se visitar apenas uma URL com um navegador, como: https://example.com/.env.

O aspecto perigoso é que as senhas e os segredos estão em formato não criptografado no arquivo .env.

Como verifiquei 2,6 milhões de domínios em busca de arquivos .env expostos

Obtendo os domínios

Escolhi um país que permite transferência de zona DNS para obter todos os domínios deste país. Levará algum tempo para baixar o arquivo de zona completo. Com um script python simples, extraí os registros NS e desses registros os nomes de domínio.

Processo de digitalização

Com outro script python, leio os domínios e envio uma solicitação para http://<domain>/.env . Também verifiquei http://www.<domínio>/.env, https://<domínio>/.env e https://www.<domínio>/.env.

É importante ignorar a verificação do certificado SSL. Fiquei sabendo que muitos arquivos foram encontrados em https mas com certificado inválido. Ao ignorar os certificados SSL inválidos, esses diretórios podem ser acessados de qualquer maneira.

Estatísticas

Examinei 2,6 milhões de domínios e descobri:

  • 201 arquivos .env
  • 135 nomes de usuário de banco de dados com senhas
  • 48 credenciais de conta de e-mail
  • 11 acessos a provedores de pagamento (como Stripe ou Paypal)
  • 98 chave de API para APIs diferentes (por exemplo, API de verificação de crédito)
  • 128 segredos de aplicativos

Estes são os resultados apenas dos domínios principais. Imagine o que aconteceria se escaneássemos todos os subdomínios. Não tenho dúvidas de que você encontrará muito mais por lá.

Como posso verificar se meu domínio foi afetado?

Você pode verificar seus domínios e subdomínios com um modelo de núcleo ou pode usar um serviço como scan.nan.io para verificar seus domínios e subdomínios automaticamente em busca de arquivos confidenciais expostos.

Conclusão : Verifique seu servidor e implantação para não expor o arquivo .env oculto.

Publicado também aqui .