0x01 信息搜集
git泄漏
git泄漏我理解拿到了就是白盒测试,因为可以下载源码了,源码泄漏感觉还是挺严重的,虽然我比较菜现在拿到源码也不知道能干啥。
(1)常规git泄漏
工具:scrabble 下载链接
用法直接./scrabble http://xxxx 相对花里胡哨的工具来说还是very easy的!
(2)git回滚
回滚的原因是,有可能修改或者删除掉了,就需要查看原来的版本。然后这时候需要你用scrabble下载之后然后再git reset跳到历史版本,那么上一版本的话命令是git reset--hard HEAD^
,现版本是HEAD
,上一版本是HEAD^
,注意一波就好啦。
然后还有一个命令可以用,这个更简单啦,就是git log-stat
这个可以查看每一次修改他修改了哪些文件,然后还可以比较当前版本与之前的某一修改之间的变化,命令是git diff HEAD commit-id
。哦对了,我们把每次的提交叫做commit,有些命令可能会遇到不要不认识啦。
(3)git分支
这个分支的概念,我理解就好像是一棵树,有主干也会有枝杈,主干的话默认叫做master,有时候flag不会在主干上面,就是可能会在分支上,这里有个命令git log
,可以查看提交历史,不过这个命令只能看到当前分支的修改,如果在其他分支的话这个命令是看不到哒,现有的git泄漏工具大多数都不支持分支,需要手动去进行文件的提取。
以GitHacker为例,用法就是python GitHacker.py --url http://xxxx/.git/ --folder 文件绝对路径
如果想要查看其他分支的提交历史你需要
运行过GitHacker那个命令(python GitHacker.py --url http://xxxx/.git/
--folder 文件绝对路径)过后,会在本地看到生成的文件夹,然后在该目录
下执行命令git log--all或者git branch-v,这样可以看到master分支的信
息。如果执行git reflog命令,可以看到一些checkout的记录,可能会看
到其他分支的信息,然后这样这样再那样那样,就得到flag了(你是在糊弄鬼吗啊喂)
好吧再开一个,如果看到其他分支的信息,是需要手动下载分支的head信息的,会保存到.git/refs/heads/secret里面。
(执行命令 wget http://127.0.0.1:8000/.git/refs/heads/xxx分支名字) 深谙看不懂的就抄下来的秘诀啊。然后回复head信息过后,修改一部分GitHacker代码,书上说是直接复用fixmissing函数,注释掉程序最后调用的main部分修改为这样
图片.png之后再执行GitHacker.py,运行脚本后再次进入到生成的文件夹里执行git log--all
或者git branch-v
,分支信息就可以恢复了,从gitlog里面找到对应提交的hash,执行git diff HEAD b94c(hash的前4位)
,即可得到flag。
(4)git泄漏的其他应用
泄漏的git中可能有其他有用的信息,比如.git/config文件夹中可能含有access_token信息,从而可以访问这个用户的其他仓库。
SVN泄漏
SVN是源代码版本管理软件,可以用.svn/entries或者wc.db文件获取服务器源码等信息。工具:https://github.com/kost/dvcs-ripper和Seay-svn(windows下的)。
HG泄漏
初始化项目时,HG会创建一个.hg的隐藏文件夹,其中包含代码和分支修改记录的,上述dvcs-ripper那个工具支持这个。
一点感想
感觉源代码泄漏这块儿,以上提到的几个能不能发现完全看你字典硬不硬。小菜鸡瑟瑟发抖,好多东西都没咋接触过,就只能抄作业这样子,好啦今天到这吧,end。
网友评论