不安全的原代码管理 (Insecure Source Code Management)
不安全的原代码管理 (SCM) 可能导致 Web 应用程序和服务中出现多项严重的漏洞。开发人员通常依赖 Git 和 Subversion (SVN) 等 SCM 系统来管理其源代码版本。然而,不良的安全实践(如在生产环境中将暴露在互联网上的
.git和.svn文件夹保留)可能会带来重大风险。
摘要 (Summary)
方法论 (Methodology)
在 Web 服务器上暴露版本控制系统文件夹会导致严重的安全性风险,包括:
- 源代码泄露 (Source Code Leaks):攻击者可以下载整个源代码存储库,从而获取应用程序的逻辑。
- 敏感信息泄露 (Sensitive Information Exposure):代码库中可能存在嵌入的机密、配置文件和凭据。
- 提交历史暴露 (Commit History Exposure):攻击者可以查看过去的更改,从而揭示之前暴露但后来被修复的敏感信息。
第一步是收集有关目标应用程序的信息。这可以通过各种 Web 侦察工具和技术来完成。
-
手动检查 (Manual Inspection):通过导航到常见的 SCM 路径手动检查 URL。
- Git:
http://target.com/.git/ - SVN:
http://target.com/.svn/
- Git:
-
自动化工具 (Automated Tools):参考与具体技术相关的页面。
一旦识别到潜在的 SCM 文件夹,请检查 HTTP 响应代码和内容。您可能需要绕过 .htaccess 或反向代理规则。
下面的 NGINX 规则在访问 /.git 端点时返回 403 (Forbidden) 响应,而不是 404 (Not Found)。
以 Git 为例,利用技术并不需要列出 .git 文件夹的内容(http://target.com/.git/),只要文件可读,仍然可以进行数据提取。