跳转至

不安全的原代码管理 (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/
  • 自动化工具 (Automated Tools):参考与具体技术相关的页面。

一旦识别到潜在的 SCM 文件夹,请检查 HTTP 响应代码和内容。您可能需要绕过 .htaccess 或反向代理规则。

下面的 NGINX 规则在访问 /.git 端点时返回 403 (Forbidden) 响应,而不是 404 (Not Found)

location /.git {
  deny all;
}

以 Git 为例,利用技术并不需要列出 .git 文件夹的内容(http://target.com/.git/),只要文件可读,仍然可以进行数据提取。

实验环境 (Labs)

参考资料 (References)