某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

    • 实验室做题记录
    • 服务器端

      • SQL注入

      • 身份验证

        • 学徒-用户名枚举-不同的响应
        • 从业者-用户名枚举-响应的细微差异
        • 从业者-用户名枚举-响应的时差
        • 从业者-暴力破解防护-IP锁定机制
        • 从业者-暴力破解防护-账户锁定机制
        • 专家-暴力破解防护-一个请求多个凭据
        • 学徒-双因素身份验证-2FA简易绕过
        • 从业者-双因素身份验证-2FA逻辑缺陷
        • 专家-双因素身份验证-通过暴力攻击绕过2FA
          • 题目
          • 实操
            • 正常的登录流程
            • 简单尝试
            • 方法1 - 宏(BurpSuite自带功能)
            • 创建宏
            • 配置第1个请求
            • 配置第2个请求
            • 配置第3个请求
            • 测试宏
            • 添加处理规则
            • 宏的实际应用
            • 暴破邮箱验证码
            • 方法2 - 使用Turbo Intruder(扩展)
        • 从业者-保持用户登录-对保持登录的Cookie进行暴破
        • 从业者-保持用户登录-离线密码破解
        • 学徒-密码重置-破坏重置逻辑
        • 从业者-密码重置-中间件投毒
        • 从业者-密码更改-密码暴力破解
      • 目录遍历

      • OS命令注入

      • 业务逻辑漏洞

      • 信息泄露

      • 访问控制

      • 文件上传漏洞

      • SSRF漏洞

      • XXE注入漏洞

    • 客户端

    • 高级主题

  • BurpSuite及官方实验室
  • 实验室做题记录
  • 服务器端
  • 身份验证
clincat
2023-05-17
目录

专家-双因素身份验证-通过暴力攻击绕过2FA

# 实验室:通过暴力攻击绕过2FA

# 题目

此实验室的双因素身份验证 容易受到暴力破解攻击。你已经获得了有效的用户名和密码,但无法访问用户的 2FA 验证码。要解决实验室问题,请暴力破解 2FA 代码并访问 carlos 的帐户页面。

  • 受害者的凭据:carlos:montoya

笔记

由于验证码将在你运行攻击时重置,因此你可能需要多次重复此攻击才能成功。这是因为新代码可能是你当前 Intruder 攻击已经尝试过的数字。

提示

您需要将 Burp宏 与 Burp Intruder 结合使用,来完成本次实验。有关宏的更多信息,请参阅BurpSuite文档 (opens new window)。精通 Python 的用户可能更喜欢使用Turbo Intruder (opens new window)扩展,该扩展可从 BApp 商店获得。

实验室-专家

通过暴力攻击绕过2FA >>

- name: 实验室-专家
  desc: 通过暴力攻击绕过2FA >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/authentication/multi-factor/lab-2fa-bypass-using-a-brute-force-attack
  bgColor: '#001350'
  textColor: '#d112fe'
1
2
3
4
5
6

# 实操

根据题意,可得实验目标:

  • 该实验室存在双因素身份验证,但该验证容易受到 暴力破解攻击。
  • 你已经拥有了 carlos 用户的密码,但无法获取他的 电子邮件验证码。
  • 以 carlos 用户的身份登录,然后对 邮件验证码 进行暴力破解,最后访问其账户页面。

点击 “Access the lab” 进入实验室。

点击 “My account” 进入登录页面。

# 正常的登录流程

我们先进行一次正常的登录流程,看下会经过哪些操作。

启用浏览器代理,输入用户名和密码carlos:montoya,然后进行登录操作。

BurpSuite 不需要启用拦截,起到一个监控作用。

登录之后,目标系统会向 carlos 用户的邮箱中发送验证码,然后跳转到 /login2 页面,让我们输入验证码。

随意输入验证码,例如 0000 ,然后点击 Login 进行提交。

在输错两次验证码之后,会被强制退出,并重定向至 /login 页面,需要重新登录。

接下来看看捕获的数据包。

这是第 1 个请求数据包,进行登录操作,验证用户输入的用户名和密码,登录成功之后会分配一个 Cookie 并跳转至 /login2 页面。

除了用户名和密码 这两个参数之外,还会携带一个随机的 csrf token 参数。

第 2 个请求数据包,携带刚刚登录成功的 Cookie,跳转到 /login2 页面。

第 3 个请求数据包,二次登录操作,验证用户输入的邮箱验证码。

其中还携带了一个随机的 csrf token 参数。

以上就是登录过程中 产生的所有数据包:

  1. token + 用户名 + 密码 = 登录(获得Cookie)
  2. 携带 Cookie 跳转至 /login2
  3. token + 验证码 = 二次登录

第 1 个 csrf token 可以在 /login 页面中找到:

第 2 个 csrf token 可以在 /login2 页面中找到:

# 简单尝试

使用旧的 csrf token 提交邮箱验证码,请求失败,每个 token 只能使用一次。

想要暴破邮箱验证码,首先需要获得 /login2 页面中的 csrf token 参数。

直接请求 /login2 页面,看看是否能获得 csrf token 参数。

请求失败,响应信息 “用户没有登录” 。

想要获得 /login2 的 token ,就必须先登录。

使用旧的 csrf token 进行登录操作,请求失败,每个 token 只能使用一次。

想要登录,需要先获得 /login 页面中的 csrf token 参数。

直接请求 /login 页面,看看是否能获得 csrf token 参数。

请求成功,获得了登录所需要的 token 参数。

那么现在就产生了一个利用步骤:

  1. GET 请求 /login 页面,获得第一个 csrf token 。
  2. (token + 用户名 + 密码)POST 请求 /login 页面,进行登录操作,获得 Cookie 。
  3. (Cookie)GET 请求 /login2 页面,获得第二个 csrf token 。
  4. (token + 验证码)POST 请求 /login2 页面,进行二次登录操作。

一共四个步骤,如果手工来做的话太繁琐、费时了。

现在需要自动执行前 3 个步骤,以获取第二个 csrf token ,然后在提交验证码的时候,自动更新 csrf 参数。

# 方法1 - 宏(BurpSuite自带功能)

# 创建宏

BurpSuite 中的 “宏” 是一个类似于 “按键精灵” 的东西。可以录制一段数据包,帮用户执行某些操作,例如 自动发送请求、自动更新参数 等。

下面我们创建并使用一个宏。

打开 BurpSuite 窗口,添加一个宏,点击 “Settings --> Sessions --> Macros --> Add”。(注意:我的 BurpSuite 是 2023 版本的,其余版本的界面可能不太一致,有些功能点的位置不一样。)

点击 Add 之后,会自动跳出一个窗口,窗口里面是 BurpSuite 的历史数据包,我们选择其中的三个请求(自己提前抓好数据包):

  • GET /login
  • POST /login
  • GET /login2

默认只能选中一条请求,按住 Ctrl 键可以同时选择多条请求。

选好数据包之后,更改宏的描述信息(标题),方便寻找。

请求顺序很重要,你可以通过旁边的 “Move up” 和 “Move down” 来对请求进行排序。

# 配置第1个请求

接着,选中第 1 个请求,然后点击旁边的 “Configure item” 对其进行配置。

然后点击 “Add” 添加一个自定义参数。

当前请求是 GET /login ,用于获取第一个 csrf token 。

  • 参数名称:csrf
  • 在下方选中对应的数据

然后点击 “OK” 保存。

# 配置第2个请求

选中第 2 个请求,点击旁边的 “Configure item” 对其进行配置。

当前请求是 POST /login 登录请求,设置其 csrf 参数,选择 “Derive from prior response”(源自先前的响应)。

在发送 POST /login 请求时,csrf 参数会自动更新为上一个请求的配置项。

# 配置第3个请求

选中第 3 个请求,点击旁边的 “Configure item” 对其进行配置。

然后点击 “Add” 添加一个自定义参数。

当前请求是 GET /login2 ,用于获取第二个 csrf token 。

  • 参数名称:csrf
  • 在下方选中对应的数据

然后点击 “OK” 保存。

# 测试宏

配置好所有的条目之后,你可以点击下方的 “Test macro” 测试一下宏,看看是否有问题。

看到以下 3 个状态码说明没问题,待会再详细说明为什么是这几个状态码。

# 添加处理规则

创建宏之后,宏并不会自动运行。

需要创建一个处理规则,将宏应用到相应的请求当中。

“Sessions --> Session handling rules --> Add”

切换到 “Details” 选项卡,更改规则名称,例如 auto-flush-csrf2 ,方便寻找。

然后选择下方的 “Add --> Run a macro” 添加规则操作,操作类型为 运行宏。

选择我们刚刚创建的宏,然后点击 “OK” 保存。

切换到 “Scope” 选项卡,设置该条规则的执行范围。

工具范围:Repeater 和 Intruder 勾选上(默认已经勾选)。

URL范围:这里选择 “Use custom scope”(自定义范围)。然后点击 “Add” 添加一个 URL,把 /login2 的路径添加进去,如图。

最后点击 “OK” 保存。

# 宏的实际应用

启用规则之前,我们尝试暴破验证码,请求失败,csrf token 错误。

我们切换到 BurpSuite 的 “Logger” 选项卡,将所有日志清除,方便待会的分析。

启用刚刚创建的规则,然后再次发送数据包。

响应状态码为 200 ,响应信息为 “验证码错误” ,请求成功。

切换到 “Logger” 选项卡,看到了四个请求条目。

我们刚刚只发送了 1 个数据包,但是现在出现了 4 个?

因为前 3 个数据包是在 “宏” 里面定义好的,如果当前请求触发了规则,宏就会自动帮我们发送这 3 个数据包,然后更新当前请求中的参数,最后再将当前请求发送出去。

看图:

# 暴破邮箱验证码

使用 “Intruder” 功能,将验证码字段的值添加到选区。

设置攻击载荷:

  • 载荷类型:Numbers
  • 范围:0000-9999
  • 步长:1
  • 最大和最小 整数位数:4
  • 最大和最小 分数位数:0

一个特别要注意的点,请求当中是带有 csrf token 的。如果请求过快,会导致之前的 csrf token 过期,此时会暴破失败。

所以我们只能使用 “单线程” 来进行暴破(很慢)。

设置 1 个线程,然后点击 “Start attack” 开始攻击。

暴破的过程中,你会看到两种长度的数据包,3259 和 2929 。

  • 提示验证码错误,请重新输入。
  • 提示验证码错误,然后跳转到 /login ,请重新登录。

所以两个包的响应长度不一样,但都是正常的。

暴破时间很漫长,而且不一定能成功,有时候需要多试几轮。

(建议:如果数字到了 2000 还没暴破成功,就重新开始暴破,因为验证码的数字大多集中在 0000-1999)

对结果进行排序,发现一个异常条目,跳转到了 /my-account 页面,说明登录成功。

选择 “右键数据包 --> Show response in browser”(在浏览器中显示响应)。

然后会弹出一个窗口,点击 “Copy” 复制 URL 。

在浏览器中打开一个新窗口,启用 BurpSuite 代理,然后访问刚刚的 URL 。

(必须有 BurpSuite 代理,因为这个 URL 是通过 BurpSuite 来进行跳转的)

访问之后,成功跳转到账户页面,实验完成。

# 方法2 - 使用Turbo Intruder(扩展)

还没学会,等我学会再说......

(诶诶诶,下手轻dsacnxzkncuwa......)

编辑 (opens new window)
从业者-双因素身份验证-2FA逻辑缺陷
从业者-保持用户登录-对保持登录的Cookie进行暴破

← 从业者-双因素身份验证-2FA逻辑缺陷 从业者-保持用户登录-对保持登录的Cookie进行暴破→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式