最近在公司搭建了一个github代码泄露的预警平台,添加了公司名称,邮箱后缀等关键词规则,上班一大早就收到了不少告警邮件。
打开告警的github代码发现确实是公司相关的,想通知删除,翻了一圈确没有作者的联系方式,以下是我在网上找到的一些溯源方法,供大家尝试。
一、我为什么查不到作者信息:
GitHub 提供了两种方法来保护我们的联系方式邮箱的隐私安全性:
1、在推送时发现隐私邮箱则阻止推送;
2、使用 GitHub 专用的替代邮箱。
勾选以下两个功能后点击保存:
Keep my email addresses private功能(隐私地址转换:如果发现以上列表中的邮箱地址,则会转换为 GitHub 专用的邮箱地址)
Block command line pushes that expose my email功能(阻止推送:如果发现暴露了邮箱地址,则阻止推送。)
开启后github官方会给我们提供一个虚拟的邮箱号,效果如下
二、github溯源方法整理
一、手动获取个人邮箱
2.1:通过commits
找到作者提交的,点击箭头位置
在出现的url后面加上.patch
https://github.com/xxxx/xxxexample/commit/4a0b0613da9ca66c61bc9e8eeebe7325c4908afeb
修改后的
https://github.com/xxxx/xxxexample/commit/4a0b0613da9ca66c61bc9e8eeebe7325c4908afeb.patch
2.2:通过github API接口
https://api.github.com/users/<name>/events/public
替换name为需要查询的作者id
https://api.github.com/users/作者id/events/public
可查询到作者邮箱信息:
2.3:graphql 查询
地址https://docs.github.com/en/graphql/overview/explorer
{ repository(name: "填入要查询的GitHub存储库的名称", owner: "填入要查询的GitHub存储库的所有者的用户名") { ref(qualifiedName: "master") { target { ... on Commit { id history(first: 5) { edges { node { author { name email } } } } } } } }}
二、自动化工具获取作者信息
使用自动化工具Gitmails,是一款收集github存储库中包含的作者提交的名字和电子邮箱的工具。常用于攻防演练中的信息收集,溯源工作。
https://github.com/giovanifss/Gitmails
安装python依赖
python3 -m pip install -r requirements.txt
python3 -m pip install pygit2
使用方式
python3 gitmails.py -u 用户名
会遍历一些接口查询用户邮箱(需要kx上网)
最后:遇到个github泄露案例,使用了上面的方法还是查找不到,最后只能发给开发经理去想办法,公司有经费的话还是尽快上DLP(数据防泄漏)吧。