有没有了解过 SVN/GIT 源代码泄露

SVN 源代码泄露

SVN(Subversion)是一个集中式版本控制系统,它的核心目录是 .svn。当开发者在 Web 服务器的根目录下直接使用 svn checkoutsvn update 命令时,.svn 目录及其所有子目录也会被同步到服务器上。如果 Web 服务器没有正确配置,这个隐藏目录就会被公网访问

漏洞原理

/.svn/ 目录下存储了代码的元数据,这些数据通常以 .svn/entries.svn/text-base/ 等形式存在。攻击者可以通过递归下载这些文件来还原出整个代码库

  • /.svn/entries:在 SVN 1.6 及更早版本中,这个文件包含了目录下所有文件的元数据,包括文件名、版本号、文件类型等。攻击者可以通过解析这个文件,获取所有文件的相对路径
  • /.svn/text-base/:这个目录存储了每个文件的原始版本副本。文件名通常是 filename.svn-base。攻击者可以下载这些文件来获取源代码

如何利用

利用 SVN 源代码泄露,通常需要一个自动化工具来递归下载所有 .svn 目录下的文件,并根据元数据将它们重组为完整的代码库

  1. 探测:在目标网站 URL 后面加上 /.svn/entries/.svn/wc.db(SVN 1.7+)来探测漏洞是否存在
    • http://example.com/.svn/entries
    • http://example.com/some-dir/.svn/entries
  2. 自动化下载与重构:使用 svn-dumperdvcs-ripper 等工具。这些工具能够自动化完成下载和还原代码的过程

Git 源代码泄露

Git 是一个分布式版本控制系统,它的核心目录是 .git。和 SVN 类似,当开发者将代码直接在 Web 目录下进行 git initgit clone 操作时,.git 目录就会被创建并暴露出来

漏洞原理

/.git/ 目录包含了 Git 版本库的所有信息,如对象(objects)、引用(refs)、索引(index)、配置文件(config)等。攻击者可以通过下载这些文件,利用 Git 内部的命令来还原代码

  • /.git/HEAD:指向当前分支,可以确定当前分支名
  • /.git/index:包含了暂存区的文件信息
  • /.git/objects/:这个目录存储了所有的 Git 对象(包括文件、目录、提交等)。这是攻击者还原代码最关键的目录

如何利用

  1. 探测:在目标 URL 后面加上 /.git//.git/config 来探测漏洞
    • http://example.com/.git/config
    • http://example.com/.git/HEAD
  2. 下载与重构:同样可以使用 dvcs-ripper 或专门针对 Git 的工具。这些工具会下载 .git 目录下的所有文件,然后在本地创建一个 Git 仓库并还原出源代码
    • 通过 git log 查看提交历史
    • 通过 git checkout 切换到不同版本,获取所有版本的代码
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:12:52

results matching ""

    No results matching ""