Después de mi primer escaneo de directorios .git expuestos, hice otro escaneo de archivos .env expuestos. Durante este escaneo encontré más de 200 archivos .env expuestos. Además de ajustes de configuración inofensivos, encontré 135 usuarios y contraseñas de bases de datos, 48 cuentas de usuario de correo electrónico con contraseñas, 11 credenciales activas para proveedores de pago (como Stripe o Paypal), 98 tokens secretos para diferentes API y 128 secretos de aplicaciones (secretos para generar sesiones de forma segura). ids, CSRF-tokens y JWT-tokens) y algunas credenciales de administrador codificadas.
TLDR : tenga cuidado con los errores en el proceso de implementación. Nunca exponga su archivo .env oculto al público.
Soy SDCat, un desarrollador de software con una mente curiosa a la que le encanta mirar por todas partes debajo del capó. Después de buscar directorios .git expuestos, decidí profundizar más en este agujero de conejo. Y decidí que buscaré archivos .env expuestos.
En esta publicación, describo qué es un archivo .env, cómo escaneé los dominios y algunas estadísticas sobre lo que se encontró en estos archivos. El análisis de estos datos a veces reveló muchas credenciales para diferentes servicios y cuentas.
Cada software requiere alguna configuración y tiene varias configuraciones. En el caso del software del usuario, como un cliente de correo, estas configuraciones, como la dirección de correo electrónico, el nombre de usuario y la contraseña, se solicitan al usuario la primera vez que se inicia el software. Para el software que se ejecuta en un servidor y, a menudo, se instala automáticamente, la interacción del usuario no es posible. Para algunos marcos de software, estas configuraciones se pueden especificar a través de variables de entorno y configurarse en un archivo con el nombre .env. Los archivos .env son archivos ocultos, por lo que no verá estos archivos de forma predeterminada.
Ejemplo de un archivo .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"
Nota: Recomendamos contraseñas más seguras que las mencionadas en los ejemplos anteriores.
Dado que casi todas las aplicaciones web acceden a una base de datos o utilizan algunas API para comunicarse, estas credenciales deben pasarse a la aplicación. Si esto se hace usando el archivo .env, las credenciales están en texto sin formato en este archivo. Cuando el servidor web está mal configurado y el servidor web entrega este archivo .env, cualquiera puede consultar estos datos. Para hacer esto, uno puede visitar solo una URL con un navegador, como: https://example.com/.env.
El aspecto peligroso es que las contraseñas y los secretos están sin cifrar en el archivo .env.
Elegí un país que permite la transferencia de zona DNS para obtener todos los dominios de este país. Llevará algún tiempo descargar el archivo de zona completo. Con un simple script de python, extraje los registros NS y de estos registros los nombres de dominio.
Con otra secuencia de comandos de python, leo los dominios y envío una solicitud a http://<dominio>/.env . También revisé http://www.<dominio>/.env, https://<dominio>/.env y https://www.<dominio>/.env.
Es importante ignorar la verificación del certificado SSL. Me enteré de que se encontraron muchos archivos a través de https pero con un certificado no válido. Al ignorar los certificados SSL no válidos, se puede acceder a estos directorios de todos modos.
Escaneé 2,6 millones de dominios y encontré:
Estos son los resultados de solo los dominios principales. Imagina lo que pasaría si escaneamos todos los subdominios. No tengo ninguna duda de que encontrarás mucho más allí.
Puede escanear sus dominios y subdominios con una plantilla de núcleos o puede usar un servicio como scan.nan.io para verificar sus dominios y subdominios automáticamente en busca de archivos confidenciales expuestos.
Para llevar : verifique su servidor y su implementación para no exponer el archivo .env oculto.