旧树开新花

您所在的位置:网站首页 监控web是什么意思啊 旧树开新花

旧树开新花

2024-05-24 10:21| 来源: 网络整理| 查看: 265

文章作者: @彦修

原文地址: https://security.tencent.com/index.php/blog/msg/132

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

疑云乍现

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

拨云见日

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

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

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

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

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

至于操作过程,就相当简单了,新建一个项目,然后使用脚本修改自己用户邮箱进行commit,在这里我以修改自己的邮箱为例:问题要从一个晴朗而又妩媚的下午说起,我喝着娃哈哈,看着自认为世界上最优雅的代码,然而当我上传到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,那么就要了解三



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3