漏洞赏金目标中的密钥挖掘完全指南

本文详细介绍了在漏洞赏金项目中挖掘敏感信息的多种技术方法,包括GitHub代码搜索、JavaScript文件分析、配置文件发现等技术,帮助安全研究人员扩大攻击面并获取更高额赏金。

漏洞赏金目标中的密钥挖掘:完全指南

GitHub代码搜索

代码协作平台如GitHub和GitLab使软件开发团队能够轻松地在项目上合作。不幸的是,开发人员仍然会意外地将包含硬编码密钥的新代码提交推送到公开仓库。

这为我们寻找这些硬编码密钥提供了机会。这种通过浏览代码提交进行信息收集的行为也被称为GitHub代码搜索。这种搜索方法涉及将我们的关键词缩小到单个组织或用户,同时过滤常见模式。

让我们看一个例子:

使用GitHub搜索寻找OpenAI API密钥

在上面的例子中,我们将搜索范围缩小到目标组织。此外,我们还包含了一个关键词来过滤OpenAI API密钥。OpenAI是被组织广泛使用的服务,用于将AI集成到现有技术栈中。找到此类令牌可以帮助我们访问他们的OpenAI账户,并可能消耗积分或读取训练数据。

以下是更多示例的简短列表,每个都有相应的描述:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
org:"example" /"sk-[a-zA-Z0-9]{20,50}"/                                           # 硬编码的OpenAI API密钥
org:"example" (AWS_ACCESS_KEY_ID OR AWS_ACCESS_SECRET_KEY)                        # 硬编码的AWS访问密钥和秘密密钥
org:"example" ("sk_live_" OR "pk_live_")                                          # 硬编码的Stripe秘密密钥
org:"example" (SENDGRID_API_KEY OR sendgrid_api_key)                              # SendGrid API密钥
org:"example" (ANTHROPIC_API_KEY OR anthropic_api_key)                            # Anthropic API密钥
org:"example" (PAYPAL_CLIENT_SECRET OR paypal_client_secret)                      # PayPal凭据
org:"example" (SQUARE_ACCESS_TOKEN OR square_access_token)                        # Square支付令牌
org:"example" (AZURE_CLIENT_SECRET OR AZURE_CLIENT_ID)                            # Azure凭据
org:"example" (CLOUDFLARE_API_TOKEN OR CF_API_TOKEN)                              # Cloudflare令牌
org:"example" (filename:.env OR filename:.env.local OR filename:travis.yml)       # 配置和构建文件
org:"example" /http(s)?:\/\//                                                     # 硬编码链接
org:"example" ("mongodb://" OR "mongodb+srv://" OR "mysql://")                    # 数据库连接字符串
org:"example" ("jwt_secret" OR "JWT_SECRET" OR "jwtSecret")                       # 身份验证和安全令牌
org:"example" (extension:pem OR extension:key OR extension:p12 OR extension:pfx)  # 证书文件
org:"example" (SLACK_BOT_TOKEN OR SLACK_WEBHOOK_URL)                              # Slack集成令牌
org:"example" (GITHUB_TOKEN OR GITHUB_PAT OR GH_TOKEN)                            # GitHub个人访问令牌
org:"example" /\/\/(.*\.)?amazonaws\.com/                                         # AWS端点
org:"example" /\/\/(.*\.)?firebaseio\.com/                                        # Firebase端点

通过GitHub代码搜索获取更多漏洞

想要通过GitHub代码搜索获得更多赏金吗?请务必阅读我们全面的GitHub代码搜索指南!

JavaScript文件

对于寻找安全漏洞的漏洞赏金猎人来说,JavaScript文件是金矿。现代Web应用程序严重依赖JavaScript,这常常无意中暴露了对未记录的应用程序路由、API端点和输入参数、身份验证令牌(如AWS凭据)、应用程序逻辑以及应该保持隐藏的配置细节的引用。

这些密钥通常可以帮助我们扩大攻击面,甚至导致直接漏洞(如基于DOM的漏洞)。例如,开发人员可能在函数调用中不知情地硬编码AWS凭据:

使用JavaScript文件枚举寻找AWS密钥

如果我们能够映射出目标的所有JavaScript文件,实际上,我们可以运行自动化工具来grep常见模式,以捕获如上例中的密钥。

我们的下一步是验证这些密钥。API密钥和身份验证令牌通常可以通过浏览产品的文档轻松确认。像Streaak的Keyhacks这样的开源存储库也可以帮助验证密钥。这里的关键是确保找到的凭据确实是密钥,并且可以帮助提升标准权限,因为某些令牌和API密钥是公开的。

通过JavaScript文件获得更多赏金

JavaScript文件是漏洞赏金猎人的金矿!在我们的综合指南中,我们向您展示如何通过执行JavaScript分析来发现漏洞。

暴露的配置文件

配置文件有助于集中敏感信息,如数据库凭据、API密钥、加密密钥(如SSH密钥对)、服务端点等。问题是这些文件可能出现在任何地方。例如,通过配置错误的Web服务器、对某些目录和路径缺乏访问控制,甚至在被遗忘的备份副本中。

对于我们这样的安全研究人员来说,最困难的部分是知道在哪里寻找这些敏感的配置文件。让我们看看我们可以应用的几种方法来查找这些文件。

内容暴力破解

在目标服务器上暴力破解文件名是发现隐藏配置文件最可靠的方法之一。关键在于使用全面的、自定义的单词列表,这些列表与目标使用的技术相匹配。像Ffuf和Dirbuster这样的开源工具可以轻松帮助我们发现通过其他方法未能发现的资产。

使用自定义单词列表进行内容发现(暴力破解)

使用自定义单词列表进行暴力破解

在我们的详细指南中,我们概述了如何为您的目标创建自定义单词列表以找到更多资产。

Google搜索

像Google和Bing这样的搜索引擎不断爬取和索引网站,有时会索引开发人员从未打算公开的文件。这对我们来说很有趣,因为我们可以利用内置的搜索运算符来查找已被索引的暴露配置文件。

使用Google查找更多漏洞

如果您想了解更多关于如何利用Google和Bing搜索来查找更多漏洞的信息,请务必阅读我们关于此主题的综合文章。

互联网存档

与搜索引擎类似,互联网存档也不断索引网站,但也以"快照"的形式保存互联网上各个页面的版本。这些快照可能很有价值,因为现在不再可用的资源仍然可以通过互联网存档服务查看。

例如,如果硬编码凭据在配置文件或JavaScript文件中短暂暴露,并在几天后被删除。可能通过检索正确的快照仍然可以查看这些内容。

这使得值得查看互联网存档服务,如Wayback Machine或CommonCrawl,以获取目标的存档版本:

JavaScript文件旧版本的示例

结论

执行侦察总是有回报的,因为它可以帮助您发现可能的密钥并扩大初始攻击面。棘手的部分是了解要寻找什么以及在哪里寻找。在我们的文章中,我们详细介绍了识别和验证披露密钥的几种方法。

所以,您刚刚学到了关于在漏洞赏金计划中寻找密钥的新知识……现在是时候将您的技能付诸实践了!您可以通过在易受攻击的实验室和CTF上练习开始,或者……浏览我们在Intigriti上的70多个公共漏洞赏金计划,谁知道呢,也许在您下一次提交时获得赏金!

立即开始在INTIGRITI上进行黑客攻击

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计