一、源代码获取
二、网上泄露的数据
三、GitHub Dorking
四、WaybackMachine
五、postman收集
六、特殊文件路径
七、公开的Docker注册表
八、JavaScript文件
九、通过已拿下的目标横向
十、注入恶意JavaScript
原创 白帽子左一
作为红队成员,就像许多其他APT一样,我们须找到通往目标网络和资产的方法,因此要付出大量努力,从我们可以获得的任何资源中获取登录凭证或令牌。
这并不意味着我们只寻找登录特定服务的用户名和密码,在许多情况下,我们还需要寻找令牌,API密钥,甚至有效Cookie。特别是在采用最佳安全实践并在许多不同服务中使用2FA/MFA的目标中。
有很多方法可以找到凭证或令牌,在这里,我将展示我发现的10种在我的工作中非常有用的方法,而且不需要进行社工。
我们要找什么样的凭证?
我们之前提到的有不同的类型和不同的用例。
第一种当是用户名 + 密码
。找到用户名总是好的,如果他们持有高权限,这可能会节省我们横向移动和权限提升工作。
虽然有很多情况下,一对好的用户名和密码可能能够直接让我们拿下目标,但有两点我们必须考虑:
我们不可能每次都可以找到好用的用户名和密码
即使我们找到了,我们还可能需要面对2FA验证
因此,我们需要将目光转移到其他凭据类型。
Cookies
我们都知道。但是这是我们比较难得到的,但一旦我们得到了,它比密码更强大,cookie可以绕过99%的2FA。稍后,我们将讨论从目标收集cookie的方法。
我们要讨论的最后一种凭证是令牌
和API密钥
。这种凭证也是绕过2FA的一种很好的方式,因为它通常是在身份验证过程之后发布的令牌,或者可能是应该用于自动服务的令牌/密钥。令牌和密钥有很多种,不同类型的令牌(与Cookie不同)的用法可能不同。看看这个keyhacks的repo,了解更多关于常见类型的服务令牌使用的信息。
让我们深入了解一些练习方法,以便在我们的参与中收获尽可能多的凭据。
一、源代码获取
一般闭源商用源代码是不能从网上直接下载的,因此这个方法不推荐,如果涉及商用代码信息窃取是违法
的。
二、网上泄露的数据
有一些资源包含从不同漏洞泄露的大量用户名和密码集合。例如,几年前发生的LinkedIn违规事件。但人与人一样,通常不会更改密码,除非他们被迫更改,即使如此,很多时候也会从“coolcat2023”更改为“coolcat2024”。
下面是我在信息收集时通常使用的工具:
breachdirectory.com
dehashed.com
leak-lookup.com
【图】BreachDirectory搜索结果
在某些情况下,结果可能不是明文密码,而是散列密码的集合。
在这种情况下需要对其进行破解,我们可以使用hashcat结合我们的字典t(就像一个简单的rockyou列表),或者我们可以使用一个在线破解工具,它已经包含了一些巨大的列表:
cloudcracker.net
hash-cracker.com
crackstation.net
onlinehashcrack.com
等等
三、GitHub Dorking
尽管大多数人对github很熟悉,但仍然有很多红队和bug猎人会忽略这个点。
让我们来谈谈这种方法的优点和缺点。
优点:
公开可用,我们可以使用一些智能关键字,使我们更快搜索凭据
存储库可能包含各种凭证:密码、令牌和API密钥!
在程序代码中找到c凭证可以节省我们的时间,因为其中往往会包含凭证的用法
缺点:
在大多数情况下,公司不会向公众公开他们的敏感存储库,通常是错误的
有时这种github的呆子可能需要很多时间,我们可能会出来与零学分在手
值得一提的是,即使仓库本身没有凭证,它有时可以帮助我们更好地理解如何使用我们从其他地方找到的凭证。
这种方法可能有点耗时,但有一些工具可以自动化这个过程。
我最喜欢的工具之一是Trufflehog
:https://github.com/trufflesecurity/trufflehog,它可以以docker方式安装运行。
【图】Trufflehog示例的输出
此外,获取更多种类的dorking工具和github关键字,可以看到HackTricks:https://book.hacktricks.xyz/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets。
四、WaybackMachine
有时候,为了从目标那里获得一些有效的凭证,我们可以查看目标网站的历史页面。
WaybackMachine
:https://archive.org/ 是挖掘我们目标存档的最佳资源。
WaybackMachine不仅可以从不同时间恢复网页,还可以从GET请求中收集URL。
很多时候,当我有一个黑盒目标,没有任何办法注册自己的用户,我去WaybackMachine搜索我的目标的一些相关域和子域。
之后,我打开结果页面中的URL选项卡,并按日期(最新到最新)排序。
在右上角我们有一个搜索框,我们可以用它来查找具有特定关键字的URL,如user,email,uuid,password,key,secret,token等。
【图】从WaybackMachine捕获有效的JWT
我之前在漏洞挖掘中通过这个网站直接挖掘到了目标的IDOR漏洞。
五、postman收集
Postman是一个测试、构建和调试API的平台,这是开发人员构建API的最常用工具之一。
Postman可以用于制作HTTP请求:参数,主体数据,头部,令牌等等。这个工具在开发人员中非常受欢迎,因为他们可以专注于构建后端并轻松测试它,而不需要前端在中间传递数据。
【图】Postman界面(来自Postman.com)
那么,为什么这个工具对黑客也很重要呢?
现在,为了使用Postman,开发人员需要在Postman.com中创建一个帐户。就像在GitHub中一样,在创建帐户并开始处理项目后,他们需要配置项目(“集合”)的类型:公共或私人。
在很多情况下,我在公共的项目集合中看到过敏感的凭证,主要是API密钥和令牌,但也有cookie,并拥有管理员权限。对于许多组织来说,这绝对是一个安全盲点,即使是大型和(几乎)安全的公司。
【图】Postman集合中的Cookie、key、token和uid
只需访问Postman.com并搜索我们的目标集合,我们就可以找到有时比用户名和密码更有价值的有价值的数据。
如果我们找到JWT或访问令牌,我们可以绕过2FA!
【图】在Postman集合中找到授权header
并且这些凭据通常由应用程序的开发人员使用,因此它通常拥有整个应用程序的管理员权限。
六、特殊文件路径
当我们进行信息收集(ffuf,gobuster,dirbuster等)时,我们有时会在单词列表中遗漏一些重要的文件路径,这些路径是默认文件的凭据。我举一些具体的例子。
VSCode SFTP配置文件
。VSCode允许开发人员通过安装SFTP扩展来远程编辑文件。如果开发人员安装了这个扩展,他/她可以在本地VSCode编写代码并会自动同步保存在远程节点如-生产服务器。但问题在哪里?有一个小的配置文件,很多时候可能会有遗留。该文件包含IP地址、用户名和密码
,用于将代码自动发送到远程服务器。如果我们发现类似的东西,我们可能可以用FTP连接到服务器,有时这些是SSH的相同密码!
【图】使用VSCode SFTP扩展的FTP凭据
Config.json文件
。这些文件对我们来说也是非常有价值的,它们拥有各种各样的信用:
【图】config.json文件
Git文件
。这是我的最爱之一。fuzzing /.git文件,如果你找到这个端点,使用GitTools:https://github.com/internetwache/GitTools这样的工具来转储和提取文件。一个网站的git文件夹在大多数情况下,代码包含对我们有用的硬编码密钥。为了自动化从转储的git目录中寻找秘密,我推荐使用Trufflehog。
七、公开的Docker注册表
就像公共GitHub存储库和公共Postman集合一样,我们可以找公开可用的Docker注册表。我见过许多公司开放自己的注册表来上传他们的Docker镜像并管理它(而不是向DockerHub付费)。但他们忘记了他们必须配置一个安全的密码来访问这个注册表。
结果是这些公司将他们的Docker镜像上传到这些注册中心,任何人都可以下载这些Docker镜像,其中包含公司的纯源代码。就像是找到了目标的代码库!
对此,请看到本公众号中的文章:《安全盲点:如何从Docker Registry到RCE》,这里不会在这里深入讨论细节。
八、JavaScript文件
我们可以通过JavaScript了解很多关于网站的信息。JavaScript包含前端逻辑的一部分,它告诉我们当XHR/AJAX请求被发送时会发生什么,API路径等等。
除此之外,JavaScript也可能包含一些凭证。在大多数情况下,它将是一些API密钥,Firebase令牌和其他第三方密钥。但在其他情况下,甚至可能是JWT的服务和密码留在代码中。
【图】在目标的JavaScript文件中找到有效的JWT
上面的图片来自我的一个项目,发现了一个拥有高级权限的“测试”用户的JWT。这有助于进一步寻找后面的漏洞。
九、通过已拿下的目标横向
假设我们已经设法获得了对目标服务器的特权访问权限,并且我们希望横向移动以获得对其他资产的访问权限,我们可以考虑使用这些已经拿下的节点作为密码陷阱。
在大多数情况下,服务器的密码在公司的其他服务器之间共享。特别是当有像Ansible这样的自动化时,为了做自动化的事情,它必须使用SSH凭据连接到每个节点。如果有一个共享的密码,你可以击败整个网络,只需危及一台服务器。
如果我们在一个随机的Ubuntu服务器上有root用户,我们可以安装一个工具,如3Snake,用于转储每个SSH密码或键盘记录SUDO命令。如果我们等到下一次人类/自动化登录到我们的拿下的服务器时,我们将获取密码,并能够将其密码喷洒到其他服务器。
十、注入恶意JavaScript
在这种情况下,我们可以通过登录表单或cookie更改或注入恶意JavaScript代码到网页。这可以通过两种主要方式来实现:
注入存储XSS键盘记录程序
存储加载到网页的静态文件(JS、CSS、图像)的Bucket S3
关于第二种方式(使用S3桶),请看本公众号中的文章《红队攻防 | 从S3存储桶到企业内部专网》。
如果我们将目光放在加载到网站的JavaScript内容上,我们可以窃取使用该网站的所有用户的凭据!
总结
在几乎每一次攻防、红队和bug赏金中,凭据都能改变游戏规则。我们在信息收集和漏洞研究上投入了大量的精力和时间,通过找到一些有效的凭据可能会节省我们大量的时间,并推动整个操作向前发展。
我在这里提到的大多数方法都很简单,并且不会消耗很多时间。
以上内容由白帽子左一翻译并整理。
原文:https://medium.com/@red.whisperer/credential-stuffing-like-an-apt-mastering-credentials-harvesting-0018dc3c8134
标签:10,令牌,凭证,JavaScript,密码,红队,com,我们 From: https://www.cnblogs.com/o-O-oO/p/18392564声明
⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!