设为首页 收藏本站
查看: 1173|回复: 0

[经验分享] svn,git信息泄漏利用原理及现状

[复制链接]

尚未签到

发表于 2018-9-17 13:40:03 | 显示全部楼层 |阅读模式
1,google hack
  svn 搜索技巧
  图1
  git 搜索技巧
  图2
2,svn信息利用原理
2.1 svn1.6
  svn在1.6之后引入了wc.db来管理文件,该文件位于.svn/wc.db。普通文件位置:somedomain/.svn/pristine/"XX"/"CHECKSUM".svn-base,CHECKSUM是文件的sha1值,xx则是他的前两位。那这个CHECKSUM去哪找呢?就是我们刚才提到的wc.db,这是一个sqlite数据库。数据库的大体结构如下:

  •   $ sqlite3 wc.db .tables
  •   ACTUAL_NODE NODES PRISTINE WC_LOCK
  •   EXTERNALS NODES_BASE REPOSITORY WORK_QUEUE
  •   LOCK NODES_CURRENT WCROOT
  •   $ sqlite3 wc.db 'select local_relpath, checksum from NODES'
  •   index.php|$sha1$4e6a225331f9ae872db25a8f85ae7be05cea6d51
  •   scripts/menu.js|$sha1$fabeb3ba6a96cf0cbcad1308abdbe0c2427eeebf
  •   style/style.js|$sha1$2cc5590e0ba024c3db77a13896da09b39ea74799
  •   $ sqlite3 wc.db 'select local_relpath, ".svn/pristine/" || substr(checksum,7,2) || "/" || substr(checksum,7) || ".svn-base" as alpha from NODES;'
  •   index.php|.svn/pristine/4e/4e6a225331f9ae872db25a8f85ae7be05cea6d51.svn-base
  •   scripts/menu.js|.svn/pristine/fa/fabeb3ba6a96cf0cbcad1308abdbe0c2427eeebf.svn-base
  •   style/style.js|.svn/pristine/2s/2cc5590e0ba024c3db77a13896da09b39ea74799.svn-base
  第一步下载wc.db,然后从NODES表中找到文件名和其sha1值,最后构造下载链接。
3,git 信息利用原理
  首先从git/config信息里面可以得到仓库地址

  •   [core]
  •   repositoryformatversion = 0
  •   filemode = true
  •   bare = false
  •   logallrefupdates = true
  •   [remote "origin"]
  •   fetch = +refs/heads/*:refs/remotes/origin/*
  •   url = git@git.jingdigital.net:root/pcb001.git
  •   [branch "master"]
  •   remote = origin
  •   merge = refs/heads/master
  基本上三步走:
  (1)下载.git/index文件,这是一种git特有的格式,在该文件中包含着文件名和文件SHA1值。
  (2)根据该文件SHA1值到objects目录下载相应文件,具体路径somedomain/.git/objects/"XX"/"CHECKSUM"
  (3)zlib解压文件,按照原始目录写入源代码。
4,对国内80端口的简单扫描
  有了前面这些基础,就可以通过泄漏的信息来还原代码,能还原代码的话就可以干很多事了。最常见就是代码中泄漏email地址,数据库连接方式,调试接口,一些第三方key的泄漏。另外还可以对你感兴趣的目标进行代码审计,发现注入,命令执行等等。
4.1 扫描实现
  (1)从文件读取80ip段数据,设最大并发16,最大连接数60,这个时候的带宽基本控制在600KB,利用周末时间跑了一天即可跑完。
  (2)设置pycurl的一些参数,如PROXY,MAXREDIRS=0,这样就不跳转了,nosignal=1 这个参数必须为1,这是pycurl的一个bug,中间测试的过程中就是因为参数未加,导致跑了半天结果中途挂了。
  (3)请求/.git/config信息,如果200,返回的类型为text/plain并且存在repositoryformatversion字段。请求/.svn/entries,如果200,Content-Type为text/plain,并且dir存在于返回值。其实这个是有误的,因为在svn大于1.6的情况下,在返回值中只有一个简单的数字,并不存在dir,所以扫描结果中基本上没有1.6以上的结果。
4.2 结果过滤
  在扫描的结果中分析出现的url,有些.svn/entries返回200,但是首页确是有问题,还有发现某些ip不在中国。于是写了脚本去请求这些url的首页,并且从一个ip查询网站去查询ip地址归属。
4.3 初步结果
  在525万80端口数据中,跑出6000条结果,相当于千分之一的概率,另外还未包括前面对svn 1.6判断有误的分析,所以这个概率还是很高的。
  简单的分析了git信息的泄漏,总共有接近600条数据,去除在国外的和首页不正常的,能达到250多,其中差不多一半的都是在阿里云的ip上,这些公司一般都是创业公司。在这些泄漏的代码中sql注入一般很少。
  svn的话,一般都是一些比较老的网站,这主要可能还是我前面的判断逻辑有点小问题。注入问题比较严重。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588471-1-1.html 上篇帖子: git全部常用命令详解 下篇帖子: git 版本控制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表