配置文件暴露为什么常见
环境配置文件(.env、config 备份、密钥文件、容器编排文件)被部署到 Web 目录时可直接下载。问题的根因通常是部署方式:构建产物里带上了本地配置、备份脚本把文件丢在站点根目录、或者中间件把目录当静态资源发布。核查按命名规律探测可达性即可,不需要读取内容——命中就记录文件类型与状态码。
基本信息
| 常见对象 | .env、config.php.bak、settings.old、docker-compose.yml、.git-credentials |
|---|---|
| 探测方式 | 按命名规律发起 GET,只看状态码与响应长度 |
| 判定标准 | 返回 200 或可下载内容即视为暴露 |
| 修复方向 | 配置移出 Web 根目录、目录级拦截、部署检查清单 |
典型使用场景
- 上线前扫描构建产物中的配置文件残留
- 渗透测试信息收集阶段确认凭据泄露风险
- 排查运维备份脚本把文件写到站点目录的问题
- 核查中间件默认发布的目录(如 Tomcat webapps 下的备份)
- 为部署流程补充产物审查环节提供依据
检查方式
检查方式
curl -s -o /dev/null -w '%{http_code}\n' https://target.example/.env
curl -s -o /dev/null -w '%{http_code}\n' https://target.example/config/app.ini.bak
curl -s -o /dev/null -w '%{http_code}\n' https://target.example/.env.example
# 命中后只记录路径、状态码与响应长度;内容不下载、不写入报告对象与风险
| 文件类型 | 典型内容 | 暴露后果 |
|---|---|---|
| .env | 数据库口令、密钥、第三方凭据 | 直接获得系统访问凭据 |
| 配置备份 | 旧版本配置与调试开关 | 绕过已修复的配置项 |
| 密钥文件 | 私钥、证书、云平台 AK/SK | 身份被冒用,影响范围大 |
| 编排文件 | 服务拓扑、内部地址与端口 | 暴露内部架构细节 |
| IDE 与系统残留 | .DS_Store、目录列表 | 泄露目录结构与文件名 |
命中即停止:不要下载配置内容做“取证”,那会把凭据复制到评估机上,属于超出授权边界的数据获取。
修复要点是三层:配置存放位置(移出 Web 根目录)、Web 服务器拦截(按扩展名与点开头的文件拒绝)、发布流程检查(构建产物审查与自动化告警)。