说明

不知道从何时起,GitHub限制了搜索代码的结果,只能获取默认的前100条代码,且不支持排序筛选。

具体表现如下:

搜索aaa,共有22.5M条数据,我每页展示20条数据,当查看到第5页时,无法继续点击下一页,当通过修改参数查询第6页时,提醒我没有搜索结果。

github

后翻了一下官方的文档,可见是官方限制了搜索展示结果数量。

limit

尝试绕过

当前阶段还是想尽可能多的获取到代码结果,毕竟从GitHub信息收集也主要依赖代码搜索;但直接绕过GitHub搜索策略是不现实的(能绕过我就提hackerone了),所以只能从测面想一些办法尽可能多的获取到结果,一个人的思路比较局限,有其他师傅有思路可以相互交流。

演示以搜索163的SMTP账号密码为例,GitHub直接搜smtp.163.com password出来前100个结果没有1个能用的。

通过搜索引擎如Google

site:github.com intext:"smtp.163.com" intext:password

google search

可见能搜索一些可用的SMTP账号和密码。

res

通过完善搜索的语法

GitHub搜索语法更新,可以使用正则表达式、布尔等高级搜索语法进行条件限制。

163默认邮箱生成的客户端密钥是16位,如JLLM**********GL,因此可以采用增加搜索规则的方式来缩小搜索范围,如使用正则表达式

smtp.163.com AND /password = "[\w+]{16}"/

smtp_1

由于部分用户可能改过密钥,所以也可以用如下语法:

smtp.163.com AND /password = "\w+"/ NOT /password = "(password|xxx|your_email_password|123456|X+|密码|authCode)"/

smtp_2

通过GitHub API

在GitHub API文档中,发现可通过page来控制查询的页数,如果我们每页1条数据,那么第101页就是第101条数据,也就绕过了web的100条数据限制。具体演示如下:

# 认证
gh auth login
# 查询
gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/search/code?q=smtp.163.com+password&per_page=1&page=101'

可见能成功获取到对应的仓库信息。

success

一行获取对应文件的内容

curl $(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/search/code?q=smtp.163.com+password&per_page=1&page=205' | jq -r .items[0].git_url) | jq -r .content | base64 -d

content

问题点:

Github API查询的结果数量和GitHub网页中查询的结果数量不一致,会少很多很多。

question


初始安全
0 声望3 粉丝