0x01 前言
技术是老技术了,网上搜一下github账号查询作者邮件有很多方法,但是在实际使用的过程中遇到了一些问题,并对这些问题进行一些改进方法查询。
0x02 手动查github作者邮箱的方法
搜索得知主要有两种方法:
这里我引用一下互联网上的文章截图(这里不方便找账号截图演示)
原文:
https://blog.csdn.net/Aaron_Miller/article/details/113397622
1、github接口:https://api.github.com/users/<name>/events/public
2、找到提交的commits,后面加.patch(看了有些文章说这个项目不能是fork来的,其实不对,只要在这个项目上该作者有提交过commits的,即使是fork项目也可以查到邮件。重点在于是否提交过commits)
3、注意不是所有的commit都可以看到邮件地址,如果在提交时选择了一些参数。,就无法看到作者邮件了。邮件地址就会变成**@users.noreply.github.com
0x03 实际手动操作遇到的问题&解决思路
问题1:查询作者 a 的 a1 项目,随便点一个commits发现隐藏了邮件地址。这个时候其实并不是查不到邮件了,换一个commits或者换一个项目同样可能查到邮件地址。这个时候就发现可能需要一个自动化工具去跑或者试试API的方法。
问题2:使用0x02提到的第一种方法,使用API查询,发现里面还有不属于作者的commits。接着使用author参数筛选发现,作者的githubID假设是"asdf",但是在API里author的值可能不是asdf。筛选会出错,总之有些难受。(个人见解,不代表一定正确)。而且API一次只能查30条,用page参数控制,查多了会被封禁。(这里不希望出现使用github的访问令牌,有点麻烦而且对于渗透测试人员来讲多了一个暴露面)
0x04 优化的查询流程
基于上面的问题,优化了一下工具的查询流程。
1、使用API查询项目名(工具里使用page参数控制,可以自动遍历查询所有项目)
const githubAPIBaseURL = "https://api.github.com"
url := fmt.Sprintf("%s/users/%s/repos?page=%d", githubAPIBaseURL, username, page)
2、这也是核心的地方,添加了?author参数筛选,这个接口比较准确。(fork项目同样也可能存在提交commit的情况,这里需要筛选出所有项目中的提交)
const githubAPIBaseURL = "https://api.github.com"
url := fmt.Sprintf("%s/repos/%s/%s/commits?author=%s", githubAPIBaseURL, owner, repo, owner)
0x05 工具的缺点&优点
缺点1:多次查询之后,依旧存在IP被封禁的情况
缺点2:需要能够访问github,但是未提供代理配置(我想你应该有自己的代理方案)
缺点3:对于比较高要求的分析(比如该作者是否修改过自己的绑定邮箱,这样可能查出历史结果)就需要查询所有的commits。因为考虑到查多了一定会被封禁,工具查询到邮箱就停止查询了。(真不想用github访问令牌。但是有开源工具用github访问令牌查的,可以去搜索一下。这里主打一个方便)
0x06 工具获取
后台回复:Github
声明:
工具可能存在一些问题或者有更好的写法,但是这个只是练手的demo,实在不想改来改去了。
工具为go语言编写并编译exe。
发布绝不会存在马子后门等。(体积有点大32M我也不知道为啥,应该是那个gui框架编译出来就挺大的)
最好从公众号获取,其他地方来源安全性不保证,不负责。
-hashfile GitSG-M.zip MD5
MD5 的 GitSG-M.zip 哈希:
f77b193f987f9cba617a9b5ea59d5f40
CertUtil: -hashfile 命令成功完成。
工具仅作安全研究使用。
原文始发于微信公众号(星期天不睡懒觉):Github账号查询邮件GUI工具(自编写)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论