主页 > 苹果如何下载imtoken钱包 > GShark-Monitor your Github 敏感信息泄露

GShark-Monitor your Github 敏感信息泄露

苹果如何下载imtoken钱包 2023-10-05 05:13:42

个人炒股持股信息会泄露吗_btcShark会泄露个人信息吗_网贷会泄露个人信息吗

近年来,因Github信息泄露引发的信息安全事件屡见不鲜,且规模越来越大。 前段时间,华住集团酒店开业记录疑似泄露,涉及近5亿个人信息。 后来调查发现,华住的程序员在Github上上传的CMS项目,包含了华住敏感的服务器和数据库信息,被黑客利用,导致信息泄露(这次是程序员的责任)。

起源

对于大型IT公司或者其他行业来说,这种事件发生的概率实在是太普遍了,只是看影响的范围而已。 大家现在看到的,就是已经流传出来的。 企业没有办法保证大家能够遵守规定,不上传敏感信息到Github,尤其是对外包特别依赖的甲方企业,甲方的开发者也是无知的。 平凡。

说了一大堆废话(可能是最近安全大佬的文章看多了)btcShark会泄露个人信息吗,终于要介绍一下我的项目GShark了。 名字是不是很酷,希望在Github上能像鲨鱼一样敏锐捕捉“猎物”。 本工具主要基于golang实现。 这也是学习golang的第一个项目。 它是一个基于go-macron Web框架的系统。 其实我最先看到的是小米安全开源的x-patrol项目。 网上Github上扫描敏感信息的工具实在是太多了。 看过上千星的项目,感觉实现方式不是很好。 因为归根结底,大家还是通过Github提供的API结合相应的关键词进行搜索。 不过我觉得x-patrol的这种实现方式比较合理,通过爬虫来爬取信息,再对结果进行审核。 所以,最初我是一个 x-patrol 用户。 在使用过程中也遇到了一些问题,因为这个库好像是小米某某维护的,文档也不是特别清楚。 中间提了PR,都被直接拒了。 后来想基于x-patrol实现一套自己的系统,这就是GShark的由来。 目前这个项目和x-patrol已经有了很大的改变,比如去掉了对本地代码的检测,因为这个场景不需要,其实我自己也实现了一个基于lucene的敏感信息检索工具。 另外整理了前端代码,模板引擎用于模板的嵌套使用。 基于casbin等实现基于角色的权限控制。

btcShark会泄露个人信息吗_网贷会泄露个人信息吗_个人炒股持股信息会泄露吗

原则

说完了由来,再来说说这个系统的原理。 这类工具基本上都是先在Github上申请相应的token,然后通过相应的API进行爬取来实现的。 本项目主要基于谷歌的go-github。 这个API使用起来相当方便。 通过这个API,我们可以在Github上进行搜索,基本相当于Advanced Search。 因为API提供的搜索能力肯定是Github本身就有的搜索能力。 最基本的包括关键字,一些所有者信息,以及星星数等。

btcShark会泄露个人信息吗_个人炒股持股信息会泄露吗_网贷会泄露个人信息吗

还有一点就是Github的搜索是基于elasticsearch的,所以也支持lucene语法。 GShark的黑名单过滤其实就是通过这个规则来实现的。

通过爬虫将代码结果爬取到数据库中,然后我们就可以在web界面上查看代码了。 因为其实很多包含关键字的代码不一定是你想要的。 有很多种可能,比如爬虫项目,一些文件、博客中出现随机乱码等。但是一般来说,对于人工审核,一般这种代码仓库很容易区分,审核也比较快。 对于比较可疑的,可能需要进一步调查,可能需要进一步获取信息,比如阅读代码信息,查看上传者信息等。 作为记录,总共有三个操作。 确认是敏感信息,忽略这条记录,忽略代码库中包含这条记录的所有记录。

网贷会泄露个人信息吗_个人炒股持股信息会泄露吗_btcShark会泄露个人信息吗

遇到的问题

在做这个项目的时候,我遇到了很多大大小小的问题。 这也是我第一次学习golang。 以前总觉得golang的语法比较奇怪,但是觉得学了还是可以的。 Golang 中的依赖是个让人头疼的问题。 golang中的依赖包一般都安装在GOPATH中。 另外,对于一些golang依赖包的安装,是无法通过goget安装的,比如net/http。 由于某些特殊原因,我们只能从Github上获取源码,并一直放在GOPATH中。 另一个纠结的问题是你应该如何将自己的包引入到你的项目中。 有三种方法。 以模型模块为例。 如果我想将模型引入其他包:

三种参考方法我都用过,也切换过几次,最后选择了最后一种,也是最标准的实现方法。 第一种方法在我看来其实问题不大,但是我用Travis的时候,它就认不出来了。 第二种方法可能不会出现第一种方法同样的问题,但是使用起来比较麻烦,容易出错。 第三种方式也被大部分golang项目采用,方便别人介绍你的项目。

gshark实现了一套粗略的权限管理,主要是基于casbin。 GShark使用的go-macaron可以支持使用中间件authz来实现权限管理。 其实它的实现方法比较粗糙。 核心代码其实就是下面这个函数:

  1. func Authorizer(e *casbin.Enforcer) macaron.Handler {

  2.    return func(res http.ResponseWriter, req *http.Request, c *macaron.Context) {

  3.        user, _, _ := req.BasicAuth()

  4.        method := req.Method

  5.        path := req.URL.Path

  6.        if !e.Enforce(user, path, method) {

  7.            accessDenied(res)

  8.            return

  9.        }

  10.    }

  11. }

btcShark会泄露个人信息吗_个人炒股持股信息会泄露吗_网贷会泄露个人信息吗

可见必须使用BasicAuth进行认证,从而获取用户的角色,实现权限控制。 因为 GShark 没有使用 BasicAuth 进行认证,所以角色转移也是个头疼的问题。 事实上,最好使用标准的身份验证方法。 目前因为还没有做,只能通过cookies中转。 因此,这种方法是不可接受的。 太靠谱了。

项目部署

目前我把这个项目部署在我腾讯云的小水管上,运行没有问题,因为这个应用占用的资源不多。 只是最近Github好像越来越严格了。 有一段时间VPS访问Github一直不成功,一定要注意限制爬取频率,防止触发Github滥用告警。 项目部署之前就是项目的安装,其实主要还是看包的安装。 由于 golang 的跨平台特性,这个应用程序可以在各种平台上运行。 main.go 是启动文件:

  1. go build main.go

Build后会生成平台对应的可执行文件。 项目的运行可以通过CLI实现:

个人炒股持股信息会泄露吗_btcShark会泄露个人信息吗_网贷会泄露个人信息吗

  1. NAME:

  2.   GShark - Scan for sensitive information in Github easily and effectively.

  3. USAGE:

  4.   main [global options] command [command options] [arguments...]

  5. AUTHOR:

  6.   neal <bing.ecnu@gmail.com>

  7. COMMANDS:

  8.     web      Startup a web Service

  9.     scan     Start to scan github leak info

  10.     help, h  Shows a list of commands or help for one command

  11. GLOBAL OPTIONS:

  12.   --debug, -d             Debug Mode

  13.   --host value, -H value  web listen address (default: "0.0.0.0")

  14.   --port value, -p value  web listen port (default: 8000)

  15.   --time value, -t value  scan interval(second) (default: 900)

  16.   --help, -h              show help

  17.   --version, -v           print the version

项目运行时,会初始化一些应用和规则配置。 需要将项目中的app-template.ini重命名为app.ini:

  1. HTTP_HOST = 127.0.0.1

  2. HTTP_PORT = 8000

  3. MAX_INDEXERS = 2

  4. DEBUG_MODE = true

  5. REPO_PATH = repos

  6. MAX_Concurrency_REPOS = 5

  7. [database]

  8. ;support sqlite3, mysql, postgres

  9. DB_TYPE = sqlite

  10. HOST = 127.0.0.1

  11. PORT = 3306

  12. NAME = misec

  13. USER = root

  14. PASSWD =

  15. SSL_MODE = disable

  16. ;the path to store the database file of sqlite3

  17. PATH =

其实主要是服务和数据库信息的配置。 值得注意的一件事是,如果您希望您的服务可以从外部访问,那么您应该将 HTTP_HOST 设置为 0.0.0.0。 我用的是sqlite3数据库,使用起来比较方便,比较适合小型VPS。 对于scan运行的时间间隔,我建议可以设置大一点,这样这个服务可以一直运行,也可以一直运行。 不过说实话,短时间内取得的成果是比较有限的。 下面主要是管理界面的使用,使用起来比较简单。 核心界面是搜索结果的查看和一些其他信息的设置。 最重要的是给程序提供一个token,可以在Github上申请。

个人炒股持股信息会泄露吗_btcShark会泄露个人信息吗_网贷会泄露个人信息吗

网贷会泄露个人信息吗_个人炒股持股信息会泄露吗_btcShark会泄露个人信息吗

总结与展望

其实这个项目从开始到现在已经半年多了,但是因为一直都是一个人在维护和使用,所以一直在鼓捣,在细节上做更多的改进。 虽然这个项目目前还不是特别成熟,但是我还是想把这个项目开源出来进行正式维护,介绍给更多的开发者,吸收更多的建议和意见。 所以欢迎任何建议,欢迎发布和 PR。

当然btcShark会泄露个人信息吗,对这个项目还有更多的期待,以后可能还有更多的坑要填:

以上就是GShark开发过程中的一点点心得。 如果您觉得对您有帮助,可以加star。

个人炒股持股信息会泄露吗_网贷会泄露个人信息吗_btcShark会泄露个人信息吗