旧树开新花:再谈GitHub监控

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

  疑云乍现

  问题要从一个晴朗而又妩媚的下午说起,我喝着娃哈哈,看着自认为世界上***雅的代码,然而当我上传到 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):

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

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

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/137004.html<

(0)
管理的头像管理
上一篇2025-03-02 08:40
下一篇 2025-03-02 08:41

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注