GitHub敏感信息扫描工具

功能设计说明

GitPrey是根据企业关键词进行项目检索以及相应敏感文件和敏感文件内容扫描的工具,其设计思路如下:

  • 根据关键词在GitHub中进行全局代码内容和路径的搜索(in:file,path),将项目结果做项目信息去重整理得到所有关键词相关的项目,即疑似项目结果;
  • 基于PATTERN_DB中的敏感文件名或敏感代码对所有疑似项目做文件名搜索(filename:)和代码搜索(in:file);
  • 将匹配搜索到的结果按照项目整理输出; 由于无法做到精确匹配和精确识别,因此扫描结果或存在一定的漏报(比如项目中未出现关键词路径或内容)或误报(比如第三方项目引用关键词内容)情况,其中漏报的原因还包括Github的搜索限制:
  • 默认只搜索主分支代码,多数情况下是master分支;
  • Github最大只允许搜索1000条代码项,即100页代码;
  • 代码搜索仅搜索不大于384Kb的文件;

此外,不同关键词搜索的疑似项目数量不同,少则数个,多则数十个甚至数百个,并会对搜索和扫描时间造成直接影响(另一影响因素是匹配的文件名关键词数量和内容关键词数量),项目和关键词越多,扫描时间越长。因此可以根据需要进行扫描深度的选择,这一维度由GitHub最近索引(Recently Indexed)排序的代码页决定,深度越深,检索的项目数量越多,反之亦然。深度选项和说明如下:

  • Level 1:检索最近索引的前10页代码页;
  • Level 2:检索最近索引的前20页代码页;
  • Level 3:检索最近索引的前50页代码页;
  • Level 4:检索最近索引的前70页代码页;
  • Level 5:检索最近索引的前100页代码页;

深度选择与企业扫描周期性应该成正相关,深度选择小,则相应扫描的周期性也应当较小,如深度选择为Level 1,则相应的扫描周期基于企业情况可定为每天或每周,深度选择为Level 5,则相应的扫描周期可适当延长。例如,关键词“Google”最大(Level 5)可搜索两天前上传的项目代码,而关键词“repoog”搜索结果则不足1页。

技术实现说明

项目配置文件Config.py中需要配置使用者的Github用户名、密码:

  • 未登录Github进行代码搜索会因为请求速度过快(约10页代码结果页)而返回HTTP STATUE 429,即Too Many Requests的错误,因此需要登录后进行搜索;
  • 在项目内关键词文件名和关键词内容扫描时未采用API,原因有两点:一是搜索代码的API频率限制很大(认证后30次/分钟)无法满足快速搜索;二是某些项目关键词的搜索结果项超过100条,而API在设置per_page参数后至多支持展现100条结果项; 项目配置文件Config.py中需要配置FILE_DB/INFO_DB/PASS_DB/PATH_DB项,用途如下:_
  • 敏感文件搜索是基于配置项中的PATH_DB内容检索特定文件的泄漏;
  • 敏感内容搜索是基于PASS_DB和FILE_DB进行检索,再根据INFO_DB和PASS_DB输出相关代码行;_

程序使用帮助

GitPrey v2.2版本后去除了ACCESS_TOKEN的配置以及配置文件中的SEARCH_LEVEL和KEYWORDS配置项,改用命令行参数方式执行:

USAGE:
        -l  Set level for searching within 1~5, default level is 1.
        -k  Set key words for searching projects.
        -h  Show help information.
  • -l:选填参数,用于设置代码搜索深度;
  • -k:必填参数,用于设置搜索关键词,若关键词中包含空白字符,需用双引号将关键词括起来;
  • -h:帮助信息。

文件配置说明

pattern为搜索项文件配置目录,相关文件说明如下:

  • path.db:敏感文件名或文件后缀,用于搜索文件名,如:htpasswd
  • file.db:敏感内容关键词搜索的文件名称范围,内容搜索在该文件名称范围内进行,如:.env
  • info.db:敏感内容关键词(由于AND/OR/NOT操作符在Github单次搜索中最多支持五个,故关键词会进行轮询),如:password

程序更新列表

  • v1.0 初始版本
  • v2.0 更新搜索设计和算法
  • v2.1 更新搜索结果输出展现
  • v2.2 优化部分代码,增加项目搜索进度条,解决代码输出BUG
  • v2.4 优化程序目录设计,优化源码实现,增加默认文件输出
  • v2.5 优化代码搜索为整页代码搜索,优化颜色输出及文件输出,优化代码实现

下载地址:https://github.com/repoog/GitPrey

原文发布于微信公众号 - 网络安全社区悦信安(yuexin_an)

原文发表时间:2017-11-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构

网站高并发大流量访问的处理及解决方法

.硬件升级 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不...

31460
来自专栏cs

ubuntu DNS解决方案。

Ubuntu采用宽带上网(DSL),昨天发现打不开网页了,真是无语,所以就得解决 首先我的wine qq可以登上,firefox打不开网页,我采用ping命令...

65460
来自专栏zhangdd.com

网站高并发大流量访问的处理及解决方法

1.硬件升级 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化...

9930
来自专栏编程一生

干货 | 云智慧透视宝Java代码性能监控实现原理

36320
来自专栏杨建荣的学习笔记

Oracle中的PGA监控报警分析(r11笔记第96天)

最近接到一个数据库报警,让我颇有些意外,这是一个PGA相关的报警。听起来感觉是应用端的资源调用出了问题。 报警内容大体如下: 报警内容: PGA Alarm o...

40080
来自专栏JAVA高级架构

服务器应对大流量请求措施

硬件升级 硬件是基础,如果流量级别真的到大流量级别了,那么硬件基础肯定不能差。 负载均衡 根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服务器群...

37870
来自专栏zhangdd.com

生产内网ssh登陆变慢问题原因及解决办法

最近发现内网一些服务器ssh连接变慢,原来都是秒开的现在基本上要等10几秒才能返回登陆界面,因为是在内网基本上排除网络连接问题

14710
来自专栏Java后端技术栈

大型网站应用之海量数据和高并发解决方案总结一二

开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的...

15230
来自专栏Java后端技术栈

大规模分布式应用之海量数据和高并发解决方案总结一二

开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的...

11320
来自专栏向治洪

android系统分层

  Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户...

242100

扫码关注云+社区

领取腾讯云代金券