旧树开新花:再谈GitHub监控

 本文不涉及常见的基于代码关键字匹配的 GitHub 监控。而是从 GitHub 的账户出发,通过人的关系来获得一些代码搜索不具有的优势。 

创新互联专业提供雅安机房托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买雅安机房托管服务,并享受7*24小时金牌售后服务。

  疑云乍现

  问题要从一个晴朗而又妩媚的下午说起,我喝着娃哈哈,看着自认为世界上***雅的代码,然而当我上传到 GitHub 私有仓库的时候,嘴角的一抹笑意停留在 10 秒 24 毫秒前的阳光下,因为我发现上传显示的用户并非是我,换句话说,commit 页面并未显示我帅气的头像,我的职业第二敏感性告诉我,这个事情有点蹊跷:

a.这个人是谁?

b.我的机器被劫持了?

c.我的账户被黑了?

d.GitHub 出问题了?

e.某些未知原因?

  a 问题是比较好回答的,点进去发现是一个非常正常的用户,我总不至于被黑了,不行,职业尊严让我强制排除了这个选项,但是我比较关心的一个问题是 ta 是不是能看到我的代码?ta 会不会因为如此优雅的代码而感到自愧不如?所以随后出于对他情感的考虑先清空了自己的代码。

  对于b,更换了多台机器,发现仍然具有相同的问题,同样出于职业尊严,我的机器不可能都被黑了,所以问题坚决不在b。 

  随后又细细过滤了最近的 GitHub 登录记录,c的可能性也被排除了;再问周围的童鞋,d的问题也被排除了。

  目前只剩下e原因,但是这句话其实相当于没有说,因为一切未知都能归结到未知。

  刨根问底

  问题在这已经陷入了死胡同,简单描述下就是:因为某些未知原因,我的 GitHub 的提交人变成了未知的某人,而且在换了多台机器之后,问题依然重复。一般遇到这种情况,我的习惯都是从头梳理整个流程,从全局分析可能存在问题的环节。当务之急是需要重新梳理下所有的流程,然后不断尝试,那么问题来了,从编写代码到下载 Git 并使用 Git 提交到 GitHub 的流程是什么呢?

  Git 首先需要下载到本地,下载本地的时候需要使用 HTTP 协议,HTTP 协议是基于 TCP 的,说到 TCP,那么就要了解三次握手…….

  半小时后……

  看着 16 位微处理器芯片 8086 微处理器总线接口部分(BIU) 和执行部件(EU)知识的我……感觉再深挖下去估计要开始学习二氧化硅的化学反应了,呵,知识啊。 

  只好另辟蹊径,找了一个熟悉 Git 的强力外援,我们先尝试了……然后尝试了……接着又尝试了……终于功夫不负有心人,找到了***的症结所在。不是故意跳过这段,实在是这个过程乏善可陈。

  总之看下边重点了:

  这个问题引发的根本原因是使用某发行版源仓库安装的 Git 默认内置了一个邮箱和用户名,然后 GitHub 在上传的时候识别用户是默认通过 Git 中配置的邮箱来识别,倘若用户邮箱存在(在 GitHub 注册或者登记)则显示匹配到的用户名,否则会显示 Git 配置中的用户名,验证之后发现这个邮箱不一定是注册邮箱,而是在设置里添加的都可以关联到,也就是刚刚提到的登记邮箱,即使你没有验证邮箱的归属权限,如下图:

  而且尤其比较诡异的是使用 Git config user.name 和 Git config user.email 这两个命令查看均显示为空,就像这个命令从未执行一样,但是在使用 Git log 的时候才会真正显示提交本次 commit 的用户名和邮箱,也就是该发行版 Git 内置的缺省账户和邮箱。

  拨云见日

  上边说了那么多,那么这个东西有什么用呢?我一直秉承一个观点:安全总是跟场景相关的,所以要想知道这个有什么危害,首先需要做的就是设想一些可利用的场景。

  在这里最基本的利用方式是可以伪造别人去提交代码,但是这个对我们来说其实并没有什么太大的用处。准确来说,更多有一种恶作剧的味道。

  那有没有什么其他的场景是比较有用的,其实在写这篇文章之前,我还是比较犹豫的,众所周知,GitHub 有很多用户提交了一些比较敏感的东西,而作者是不想在现实中被发现的,但是上述提到这个接口,可以通过批量爆破邮箱从而获得对应的用户名。那么也有可能获得了那些不愿意公开自己身份用户的联系方式。

  扯的有点远了,还是回归到题目当中 GitHub 监控的问题,当前 GitHub 监控一直是基于代码搜索中的关键字匹配,真的是谁用谁知道——那是相当的难用。所以目前很多人也是在爬虫和更好的过滤上下功夫。但是这个流程还有一个盲点存在,就是在发现违规上传的***时间并不能特别准确的定位到具体的个人。

  说完传统监控的缺陷同时,我们其实也找到了新的利用场景,因为入职信息登记都会写到自己的常用邮箱(还没有入职,所以基本填写自己私人常用邮箱),那么可以通过这个接口来获得对应的用户账户,换句话说,安全团队基本就有了部分员工注册的 GitHub 账户,这个时候违规上传公司代码的监控是不是可以做一些分级管理,重点监控。而且更重要的一点,这也解决了发现问题简单、定位人员困难的问题。

  至于操作过程,就相当简单了,新建一个项目,然后使用脚本修改自己用户邮箱进行 commit,在这里我以修改自己的邮箱为例:

  之后 push 到 GitHub 上去,***在 GitHub 上就可以看到绑定了对应邮箱的用户,如下图(项目地址:https://github.com/daysdaysup/TSRC_TEST):

  至于剩下的就不用再多说了。套用一句比较流行的打油诗:懂的自然懂,刀剑侠客梦,事了拂衣去,深藏身与名。

  ***特别致谢我的师兄吴恒,感谢他在撰写本文时提供的帮助。

本文题目:旧树开新花:再谈GitHub监控
网页URL:http://www.shufengxianlan.com/qtweb/news27/235127.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联