GitHub侦察- 用于查找敏感信息的"骚姿势"
这篇文章是关于我对GitHub侦察的方法的介绍。
介绍 GitHub
GitHub是一个开发平台,允许开发人员创建、存储、管理和分享他们的代码。除此之外,它还包含API密钥、密码、客户数据等。基本上,它包含大量敏感信息,这对于黑客来说可能非常有用。这些敏感信息的泄露可能会给一家公司造成数千美元的损失。
GitHub Search 的新更新是什么?
GitHub移除了排序功能,而且在新更新中只显示5页的旧代码搜索结果。
您可以在这里阅读更多信息:
https://github.blog/changelog/2022-11-09-introducing-an-all-new-code-search-and-code-browsing-experience/
下面,我将介绍手动使用GitHub Dorking的方法:
手动代码搜索或GitHub Dorking
GitHub代码搜索是一个非常强大且有用的功能,可用于使用GitHub dorks在存储库中搜索敏感数据,如密码、API密钥、凭据、授权令牌、数据库文件等。我们可以在特定存储库或组织中搜索代码。
要在所有公共存储库中搜索代码,我们必须登录GitHub帐户。除了存储库,我们还可以检查代码、提交、问题、讨论、软件包、维基和用户。
在GitHub上找到敏感信息并不容易,我们需要花费大量时间,并且需要检查特定公司或用户的每个存储库。GitHub Dorking减少了搜索敏感信息的工作量。
我们必须使用布尔运算符,如OR、NOT和AND,并且我们也可以使用正则表达式在GitHub存储库中查找泄漏信息。
如何开展?
1.使用专门的限定词,如path:、language:、user:、path:、org:和repo:
要搜索确切的字符串,我们可以将字符串用引号括起来,使用正则表达式,或者在限定词中也可以使用引号括起来的字符串。
我们可以使用多个NOT运算符来过滤示例数据或演示数据,如NOT example、NOT guest、NOT localhost、NOT fake、NOT 1234、NOT 127.0.0.1和NOT test。
例如:
1
path:**/.npmrc _auth
2
path:*/*config.sh password abc.com NOT example.com
3
path:*.pem private key
4
path:src/*.js
5
language:Python
6
owner:octocat abc
7
repo:repo owner name
举例:
1
path:*.env (
NOT
homestead
NOT
root
NOT
example
NOT
gmail
NOT
sample
NOT
localhost
NOT
marutise) password outlook.com
我们可以根据需要制定我们的搜索查询,并与之一起使用任何关键词,比如password、authtoken、pwd,我们还可以搜索其他文件。
举个例子:
1
(path:*.xml
OR
path:*.json
OR
path:*.properties
OR
path:*.txt
OR
path:*.log path:*.config
OR
path:*.conf
OR
path:*.cfg
OR
path:*.env
OR
path:*.envrc
OR
path:*.prod
OR
path:*.secret
OR
path:*.
private
OR
path:*.
key
)
AND
(access_key
OR
secret_key
OR
access_token
OR
api_key
OR
apikey
OR
api_secret
OR
auth_token
OR
authsecret)
AND
(“sk-”
AND
(openai
OR
gpt))
有关更多信息,请访问:
https://gist.github.com/win3zz/0a1c70589fcbea64dba4588b93095855
您可以在此处阅读有关GitHub代码搜索语法的更多信息:
https://docs.github.com/en/search-github/github-code-search/understanding-github-code-search-syntax
2. 使用正则表达式 (Regex)
我们可以使用一些正则表达式来制定一个模式,通过将正则表达式用斜杠括起来来匹配我们的字符串或关键词。
以下是一些示例:
对于Stripe密钥:
1
/([srp]k_live_[0–9a-zA-Z]{24})/
2
3
/sk_live_[0–9a-zA-Z]{24}/
对于 Slack
1
/https://hooks.slack.com/services/T[a-zA-Z0–9_]+/B[a-zA-Z0–9_]+/[a-zA-Z0–9_]+/
域名搜索:
1
/https://[A-Za-z0–9-_]+.dell.com/+/
搜索密码:
1
/password=[A-Za-z0-9-_]+/
示例中使用的密码搜索:
1
/:password=[A-Za-z0-
9
-_]+/
NOT
example
NOT
guest
NOT
localhost
NOT
fake
NOT
1234
NOT
xxx
NOT
127.0
.
0.1
NOT
test
查找IP范围:
1
/35.21.[0–9]{1,3}.[0–9]{1,3}/
我们还可以使用多个限定词或布尔运算符与正则表达式一起使用进行搜索。
例如:
1
/:password=[A-Za-z0–
9
-_]+/
NOT
example
NOT
guest
NOT
localhost
NOT
fake
NOT
1234
NOT
xxx
NOT
127.0
.
0.1
NOT
test traget.com
2
3
/access_token=[A-Za-z0–
9
-_]+/
NOT
example
NOT
guest
NOT
localhost
NOT
fake
NOT
1234
我们可以根据需要制定正则表达式。我们可以使用正则表达式搜索确切的字符串,这些字符串包含您无法在搜索栏中输入的字符(特殊字符之类的)。
您可以在这里查找有用的正则表达式:
https://github.com/databricks/security-bucket-brigade/blob/3f25fe0908a3969b325542906bae5290beca6d2f/Tools/s3-secrets-scanner/rules.json
回答一个问题
问题:在最近的5页新功能更新后,如何更准确地执行GitHub侦察?
很多时候,我们会得到100多个或1000多个代码搜索结果,而我们只能在新的GitHub更新中访问5页。在一页上,我们看到20个存储库,这意味着5页上只有100个GitHub存储库。
为了减少代码,我使用了更多的运算符和正则表达式来过滤更多有用的信息。
我们还可以使用language:限定词来过滤想要或不想要的语言,比如如果我不想在搜索结果中看到markdown或html代码,我会使用这个 NOT language:Markdown, NOT language:html
针对关键漏洞利用,务必检查Keyhack项目-https://github.com/streaak/keyhacks
参考:
https://docs.github.com/en/search-github/github-code-search/understanding-github-code-search-syntax#using-regular-expressions
https://www.sshell.co/github-code-search
https://docs.github.com/en/search-github/github-code-search/understanding-github-code-search-syntax
More
https://medium.com/@pawan_rawat/github-recon-for-finding-sensitive-information-aecdeb9c9dce
原文始发于微信公众号(一个不正经的黑客):GitHub侦察- 用于查找敏感信息的骚姿势
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论