红队攻防 | 凭证获取的10个方法

server/2025/1/11 16:48:02/

  视频教程在我主页简介和专栏里 

目录: 

我们要找什么样的凭证?

方法#1:源代码获取

方法#2:网上泄露的数据

方法#3:GitHub Dorking

方法#4:WaybackMachine

方法#5:postman收集

方法#6:特殊文件路径

方法#7:公开的Docker注册表

方法#8:JavaScript文件

方法#9:通过已拿下的目标横向

方法#10:注入恶意JavaScript

总结

作为红队成员,就像许多其他APT一样,我们须找到通往目标网络和资产的方法,因此要付出大量努力,从我们可以获得的任何资源中获取登录凭证或令牌。

这并不意味着我们只寻找登录特定服务的用户名和密码,在许多情况下,我们还需要寻找令牌,API密钥,甚至有效Cookie。特别是在采用最佳安全实践并在许多不同服务中使用2FA/MFA的目标中。

有很多方法可以找到凭证或令牌,在这里,我将展示我发现的10种在我的工作中非常有用的方法,而且不需要进行sg。

图片

我们要找什么样的凭证?

我们之前提到的有不同的类型和不同的用例。

第一种当是用户名和密码。找到用户名总是好的,如果他们持有高权限,这可能会节省我们横向移动和权限提升工作。虽然有很多情况下,一对好的用户名和密码可能能够直接让我们拿下目标,但有两点我们必须考虑:

  • 我们不可能每次都可以找到好用的用户名和密码

  • 即使我们找到了,我们还可能需要面对2FA验证

因此,我们需要将目光转移到其他凭据类型。

Cookies我们都知道。但是这是我们比较难得到的,但一旦我们得到了,它比密码更强大,cookie可以绕过99%的2FA。稍后,我们将讨论从目标收集cookie的方法。

我们要讨论的最后一种凭证是令牌和API密钥。这种凭证也是绕过2FA的一种很好的方式,因为它通常是在身份验证过程之后发布的令牌,或者可能是应该用于自动服务的令牌/密钥。令牌和密钥有很多种,不同类型的令牌(与Cookie不同)的用法可能不同。看看这个keyhacks的repo,了解更多关于常见类型的服务令牌使用的信息。

让我们深入了解一些练习方法,以便在我们的参与中收获尽可能多的凭据。

方法#1:源代码获取

一般闭源商用源代码是不能从网上直接下载的,因此这个方法不推荐,如果涉及商用代码信息窃取是违法的。

方法#2:网上泄露的数据

有一些资源包含从不同漏洞泄露的大量用户名和密码集合。例如,几年前发生的LinkedIn违规事件。但人与人一样,通常不会更改密码,除非他们被迫更改,即使如此,很多时候也会从“coolcat2023”更改为“coolcat2024”。

下面是我在信息收集时通常使用的工具:

  • breachdirectory.com

  • dehashed.com

  • leak-lookup.com

图片

BreachDirectory搜索结果

在某些情况下,结果可能不是明文密码,而是散列密码的集合。在这种情况下需要对其进行破解,我们可以使用hashcat结合我们的字典t(就像一个简单的rockyou列表),或者我们可以使用一个在线破解工具,它已经包含了一些巨大的列表:

  • cloudcracker.net

  • hash-cracker.com

  • crackstation.net

  • onlinehashcrack.com

  • 等等

方法#3:GitHub Dorking

尽管大多数人对github很熟悉,但仍然有很多红队和bug猎人会忽略这个点。让我们来谈谈这种方法的优点和缺点。

优点:

  • 公开可用,我们可以使用一些智能关键字,使我们更快搜索凭据

  • 存储库可能包含各种凭证:密码、令牌和API密钥!

  • 在程序代码中找到c凭证可以节省我们的时间,因为其中往往会包含凭证的用法

缺点:

  • 在大多数情况下,公司不会向公众公开他们的敏感存储库,通常是错误的

  • 有时这种github的Dorking可能需要很多时间,

值得一提的是,即使仓库本身没有凭证,它有时可以帮助我们更好地理解如何使用我们从其他地方找到的凭证。

这种方法可能有点耗时,但有一些工具可以自动化这个过程。我最喜欢的工具之一是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。

方法#4:WaybackMachine

有时候,为了从目标那里获得一些有效的凭证,我们可以查看目标网站的历史页面。WaybackMachine:https://archive.org/是挖掘我们目标存档的最佳资源。WaybackMachine不仅可以从不同时间恢复网页,还可以从GET请求中收集URL。

很多时候,当我有一个黑盒目标,没有任何办法注册自己的用户,我去WaybackMachine搜索我的目标的一些相关域和子域。之后,我打开结果页面中的URL选项卡,并按日期(最新到最新)排序。在右上角我们有一个搜索框,我们可以用它来查找具有特定关键字的URL,如user,email,uuid,password,key,secret,token等

图片

从WaybackMachine捕获有效的JWT

我之前在漏洞挖掘中通过这个网站直接挖掘到了目标的IDOR漏洞。

方法#5: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

并且这些凭据通常由应用程序的开发人员使用,因此它通常拥有整个应用程序的管理员权限。

方法#6:特殊文件路径

当我们进行信息收集(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。

方法#7:公开的Docker注册表

就像公共GitHub存储库和公共Postman集合一样,我们可以找公开可用的Docker注册表。我见过许多公司开放自己的注册表来上传他们的Docker镜像并管理它(而不是向DockerHub付费)。但他们忘记了他们必须配置一个安全的密码来访问这个注册表。

结果是这些公司将他们的Docker镜像上传到这些注册中心,任何人都可以下载这些Docker镜像,其中包含公司的纯源代码。就像是找到了目标的代码库!

对此,请看到本公众号中的文章:《安全盲点:如何从Docker Registry到RCE》,这里不会在这里深入讨论细节。

方法#8:JavaScript文件

我们可以通过JavaScript了解很多关于网站的信息。JavaScript包含前端逻辑的一部分,它告诉我们当XHR/AJAX请求被发送时会发生什么,API路径等等。

除此之外,JavaScript也可能包含一些凭证。在大多数情况下,它将是一些API密钥,Firebase令牌和其他第三方密钥。但在其他情况下,甚至可能是JWT的服务和密码留在代码中。

图片

在目标的JavaScript文件中找到有效的JWT

上面的图片来自我的一个项目,发现了一个拥有高级权限的“测试”用户的JWT。这有助于进一步寻找后面的漏洞。

方法#9:通过已拿下的目标横向

假设我们已经设法获得了对目标服务器的特权访问权限,并且我们希望横向移动以获得对其他资产的访问权限,我们可以考虑使用这些已经拿下的节点作为密码陷阱。

在大多数情况下,服务器的密码在公司的其他服务器之间共享。特别是当有像Ansible这样的自动化时,为了做自动化的事情,它必须使用SSH凭据连接到每个节点。如果有一个共享的密码,你可以击败整个网络,只需危及一台服务器

如果我们在一个随机的Ubuntu服务器上有root用户,我们可以安装一个工具,如3Snake,用于转储每个SSH密码或键盘记录SUDO命令。如果我们等到下一次人类/自动化登录到我们的拿下的服务器时,我们将获取密码,并能够将其密码喷洒到其他服务器

方法#10:注入恶意JavaScript

在这种情况下,我们可以通过登录表单或cookie更改或注入恶意JavaScript代码到网页。这可以通过两种主要方式来实现:

  • 注入存储XSS键盘记录程序

  • 存储加载到网页的静态文件(JS、CSS、图像)的Bucket S3

关于第二种方式(使用S3桶),请看本公众号中的文章《红队攻防 | 从S3存储桶到企业内部专网》。

如果我们将目光放在加载到网站的JavaScript内容上,我们可以窃取使用该网站的所有用户的凭据!

总结

在几乎每一次攻防、红队和bug赏金中,凭据都能改变游戏规则。我们在信息收集和漏洞研究上投入了大量的精力和时间,通过找到一些有效的凭据可能会节省我们大量的时间,并推动整个操作向前发展。

我在这里提到的大多数方法都很简单,并且不会消耗很多时间。

 视频教程在我主页简介和专栏里

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关  


http://www.ppmy.cn/server/157516.html

相关文章

网易云音乐登录两部手机:IP属地归属何方?

在数字化生活日益普及的今天,音乐平台成为了我们日常娱乐不可或缺的一部分。网易云音乐,作为众多音乐爱好者的首选,其丰富的音乐资源和个性化的推荐算法深受用户喜爱。然而,随着多设备登录成为常态,一个问题也随之浮现…

PHP MySQL 读取数据

PHP MySQL 读取数据 PHP 和 MySQL 是网页开发中常用的技术组合,PHP 负责后端逻辑处理,而 MySQL 则用于存储和管理数据。在 PHP 中读取 MySQL 数据库中的数据是一项基本技能,广泛应用于各种网站和应用程序中。本文将详细介绍如何在 PHP 中读取…

第五章 起航04 教与学

琦琦是我团队的拼命三郎,应届加入公司1年半,专长是QA,同时兼了几个产品的PM。 最近大家确实太忙了。 本周老板又有个新的需求,做一个KF系统。KF系统乍看起来和琦琦负责的FW系统比较近似,所以,理所当然让琦…

利用Java爬虫获取义乌购店铺所有商品列表:技术探索与实践

在当今数字化时代,数据的重要性不言而喻。对于采购商和市场分析师而言,能够快速获取并分析供应商店铺内的所有商品信息,是制定有效采购策略和市场分析的关键。义乌购作为国内知名的在线批发平台,拥有海量的商品数据。本文将介绍如…

基于滑动窗口的限流方案

一、实现原理 根据Redis有序集合(sorted set)结构特点,sorted set的member作为独立的请求元素,score作为时间戳 逻辑图如下 物理图如下 二、代码实现 DistributedSlidingWindowLimiter.java文件 Resource private JedisClient jedisClient;/*** 滑动窗口* 该方法…

【IEEE出版,连续4年EI收录,检索稳定 |南京航空航天大学主办,航空航天交叉研究院承办】第五届传感器与信息技术国际学术会议(ICSI 2025)

重要信息: 本会议已签约合作 IEEE 出版社!ISBN号: 979-8-3315-4288-7 连续4年EI收录,检索稳定!南京航空航天大学主办,航空航天交叉研究院承办 大会官网:更多详情【论文投稿】 截稿时间:以官…

走进 JavaScript 世界:掌握核心技能

目录 一、引言 二、JavaScript 基础 (一)历史与特点 脚本语言 与 HTML 和 CSS 紧密结合 事件驱动和异步执行 (二)语法基础 变量与数据类型 运算符与表达式 控制结构 条件语句 循环语句 (三)函…

UDP -- 简易聊天室

目录 gitee(内有详细代码) 图解 MessageRoute.hpp UdpClient.hpp UdpServer.hpp Main.hpp 运行结果(本地通信) 如何分开对话显示? gitee(内有详细代码) chat_room zihuixie/Linux_Lear…