攻击者可以在可以访问源代码控制管理 (SCM) 文件的服务器上做什么?

信息安全 攻击 服务器 混帐 开放式瓦斯 单片机
2021-08-30 18:39:12

我正在使用 OpenVAS 测试一些服务器,并且遇到了一些可远程访问的 SCM 文件:

.git/config
.git//info/exclude
.git/description
.git/HEAD that contains refs/heads/master

.git/refs/heads/master that contains a hash

我是 git 的新手,我的经验非常基础。我的问题是攻击者可以如何处理这些文件中的信息以及我在 .git/refs/heads/master 中找到的哈希值?

1个回答

对于我的回答,我假设这是服务器正在运行的应用程序的 git 存储库,它包含完整的 git 存储库,并且您可以下载整个内容。这既出奇的普遍,也出奇的危险。git repo 不仅包含主动部署在服务器上的所有代码,还包含曾经为应用程序编写(部署或未部署)的每一行代码。有几件事与此有关:

在存储库中搜索访问令牌/Api 密钥/数据库凭据

一个常见的问题是您不应该在 git 中存储密码/密钥/凭据这起事件是一大原因。当攻击者找到它们时,它可能会以非常糟糕的方式结束。. 在网站上找到公开的 git repo 意味着是时候去寻宝了。你能找到的每一把钥匙基本上都是一张藏宝图,你永远不知道你会找到什么!甚至还有一些工具可以尝试在 git repos 中为您自动查找凭据。

例如,(对您而言)最好的情况是数据库密码和主机是否存储在代码中。如果数据库接受远程连接并且没有适当的防火墙,您最终也可能很容易将自己升级到完全数据库访问权限。

白盒渗透测试

白盒测试比黑盒测试更有效,因为您有更多信息可以帮助您进行搜索。通过完全访问源代码,您现在基本上是该站点的白盒测试人员。您可以花几个小时了解他们的应用程序的组合和组织方式(如果您碰巧熟悉他们的技术,这显然更容易)。从那里您可以获得更多可用于查找错误的信息。当然你没有无限的时间来阅读他们的代码,所以我会从简单的开始。我会检查他们的路由表中是否有看起来非常有趣的端点(管理员/用户、管理员/订单、管理员/reset_user_password),并检查这些端点是否存在可以利用的访问控制漏洞。同样,我会选择一些“高影响力”

社会工程学攻击

这对于您典型的错误赏金方案来说有点多,但我想我还是会提到它。git 不仅记录所有编写的代码,还记录谁编写的。它要求每个提交都附加一个名称和电子邮件地址(尽管它不检查是否提供了实际的电子邮件地址)。这意味着您还可以访问曾经为此系统进行过任何编程的每个人的姓名和电子邮件地址列表。这可能会为更明智的社会工程攻击带来许多机会,从而增加成功的几率。

概括

找到某人的 git repo 绝对是不好的,并且本身就是一个可报告的错误。这也可能导致发现更大的漏洞。然而,就像渗透测试中的其他任何事情一样,这样做仍然需要一些努力,并且不能保证结果。如果他们不将密钥保存在他们的仓库中,如果他们总体上具有良好的应用程序安全性,那么他们的 git 仓库实际上可能对您没有丝毫好处。当然,首先允许 repo 可公开访问是一个重大的安全错误,所以如果没有更多错误等待被发现,我会感到惊讶。

另外,回答你的最后一个问题:你找到的哈希对渗透测试没有帮助。git 使用哈希作为文件提交的 id 。这只是提交的哈希(也就是 id),它是活动分支的 HEAD。换句话说,该哈希只是告诉 git 哪些代码当前是“活动的”,因为 git 保留了完整的代码历史记录。它是由在 git 存储库中以纯文本格式轻松访问的数据构建的。