Burpsuite靶场|根据Cookie规则暴力破解密码

阅读须知

本文的知识内容,仅供网络安全从业人员学习参考,用于已获得合法授权的网站测试,请勿用于其它用途。请勿使用本文中的工具、技术及资料,对任何未经授权的网站、系统进行测试,否则,所造成的直接或间接后果,均由您自行承担。

靶场说明

测试背景:本靶场设定的登录用户密码为弱密码,请你尝试暴力破解密码并登录。请注意,靶场已实施 IP 请求限制措施,同一账号若连续登录失败3次,将触发 IP 地址封禁机制。然而,可以通过登录时勾选保持登录的复选框,在成功登录靶场之后观察 Cookie 的生成方式,尝试构造 Cookie 进行爆破登录。

使用工具:HTTP抓包测试工具、HTTP模糊测试工具。

必要条件:正确用户名和账号、测试用户名和暴力破解所需账户密码表单均已提供。

测试工具: TangGo测试平台

测试靶场名称:Brute-forcing a stay-logged-in cookie

测试靶场地址Lab: Brute-forcing a stay-logged-in cookie | Web Security Academy

(靶场原文描述)

测试思路

访问目标网站:首先,访问目标网站并进入其登录页面。

验证账号有效性:接下来,输入正确的用户名和密码并勾选Stay logged in,以确保账号的有效性并确认能够成功登录。

抓取后台界面数据包:使用HTTP抓包测试工具,抓取带有设置 Cookie 状态的登录数据包。

推测 Cookie 规则观察正确用户的 Cookie 生成方式,得到其 Cookie 生成为用户名:md5(密码)进行 base64 编码后的组合方式。

枚举测试用户密码:利用HTTP模糊测试工具,通过 Cookie 状态对指定的测试用户carlos的密码进行枚举尝试。

获取正确密码:通过匹配规则筛选,我们成功找到了carlos用户的正确密码。

成功登录验证:最后,使用获取到的账号和密码尝试登录,若登录成功,则说明账号和密码无误。

使用实操

访问和登录

首先启动 HTTP抓包测试工具,打开右上角内置浏览器,之后在浏览器中访问靶场的网站,加载后是一个普通的网页:

(靶场首页)

分析网页发现,右上角的My account其中文翻译为我的账户,猜测此处可能为登录入口,点击My account后会跳转至新页面,进入后发现为登录页面:

(登录页面)

在登录页面中,输入正确的用户名(winner)和密码(peter)并勾选Stay logged in,点击登录后,成功进入后台页面,此时我们观察并记录后台页面中的关键字Update email,方便后续使用匹配规则筛选出正确的数据。

(登录后台)

抓取成功登录后台的请求数据包之后观察 Cookie 的生成方式,操作如下:

首先我们回到 HTTP抓包测试工具中,开启抓包拦截,之后回到内置浏览器中,刷新该页面,此时通过 HTTP抓包测试工具,我们成功抓取到登录请求的数据包:

(登录请求包)

因为我们勾选了Stay logged in,所以登录的状态会进行保持,于是我们分析请求后台页面数据包中的Cookie,其中有一个stay-logged-in的字段,该字段的值为 base64 编码,我们框选该值,依次点击右键-->编码解码选中的数据-->解码-->base64 解码

(逆向 Cookie)

解码完成后,我们可以看到此字段由两部分组成,前半段为登录的用户名(wiener),后半段为一串 32 位的字符串,并使用冒号将两个字段分隔开。

猜测该 32 位的字符串为 md5 加密,复制该字符串进行 md5 解密,果然字符串解密为正确的登录密码peter

(MD5 查询)

至此我们明白了stay-logged-in字段值的构成,该值首先由用户名+分隔符冒号+密码(md5)组合构成,其次在对构成后的组合进行 base64 的编码。

MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,它可以将任意长度的字节串映射为一个128位(16字节)的大整数,并且以32个十六进制数字表示的字符串的形式给出。

接下来我们可以通过爆破stay-logged-in字段的值来尝试登录用户carlos。首先我们回到后台页面中,通过点击Log out先退出当前用户。

(退出当前用户)

之后开启抓包拦截,然后点击主页的My account,在 HTTP抓包测试工具中可以看到我们已经抓取到了登录的数据包。

(点击账户界面)

观察抓取到的数据包,可以发现stay-logged-in其字段值为空,接下来我们使用 HTTP模糊测试工具进行爆破测试。

(抓取数据包)

参数设置

在操作选项卡中把抓取到的数据发送到 HTTP模糊测试工具中,工具会自动打开并跳转:

(发送到 HTTP模糊测试工具中)

步骤 1- 设置请求参数

设置需要进行爆破的值,此处由于stay-logged-in的值为空,所以我们只需要直接点击标记即可:

(标记变体值)

步骤 2-设置变体参数

1.重放模式

(模式选择)

重放模式选择单字典逐一爆破模式,因为此处只需要对密码进行暴力破解,所以选择此模式。

2.1 变体赋值

点击靶场提供的Candidate password

(Candidate password)

点击链接后,在弹出页面中,复制所有的密码。

(复制密码)

点击粘贴按钮将所复制的密码全部粘贴到 HTTP模糊测试工具中。

(粘贴密码)

2.2 按以下规则对赋值进行处理

之前分析可知该值首先由用户名+分隔符冒号+密码(md5)组合构成,其次在对构成后的组合进行 base64 的编码。我们进行 3 步设置,具体如下:

1.生成密码对应的 MD5 值:

点击右侧加号进行设置处理规则。

(新建规则)

处理方式选择变体值哈希,哈希选择 MD5(32 位):

(MD5 处理)

2.添加变体值的前缀

此时密码的 MD5 值已经生成,接下来为该密码添加前缀用户名,注意一并添加分隔符冒号,依旧点击添加规则,然后选择变体值添加前缀,前缀为carlos:

(添加前缀)

3.base64 编码

设置完成后上述两步后,此时我们只需要对整体的值进行 base64 编码即可,依旧点击添加规则,然后选择变体值编码,编码方式为 Base64 编码。

(base64 编码)

至此我们已经成功设置完成了变体值的处理方式 。

(设置完成)

点击赋值方式右侧的小眼睛可以对设置完成的数据进行预览。

(预览规则)

设置匹配规则

通过之前收集后台界面信息可知,成功登录的页面包含字符串Update email,所以我们进行规则匹配,具体操作如下:

点击测试过程模块,在模块中选择匹配规则。

(匹配规则)

点击添加按钮创建新的匹配规则。

(添加规则)

在新弹出的页面中:

(设置规则)

设置完成后,接下来就可以启动测试了。

启动测试

设置完成后,点击测试过程-->启动测试,可以看到返回数据很多:

(测试数据)

接下来我们直接通过筛选匹配规则精确得出正确的数据:

(筛选匹配)

如果你遇到了状态码返回全部为 302,请在测试配置中切换 HTTP 重定向为无条件跟踪重定向

复制筛选出数据包中的变体值,打开 TangGo 主界面中的编码解码工具:

(编码解码工具)

 对数据包依次进行 base64 解码-->md5 解密后即可得到正确的密码值

(base64 解码)

(MD5 查询)

输入账号carlos和密码121212成功登录。

(成功登录)

至此使用 Cookie 认证的方式爆破得到了用户的密码并成功登录了后台。

测试总结

漏洞总结:

  1. 使用基于 Base64 编码和 MD5 哈希的身份验证 Cookie,其中包含了用户名和密码的信息。
  2. 攻击者可以通过对该 Cookie 进行逆向工程,尝试使用 MD5 哈希算法生成密码的哈希值,并与已知的用户名组合,以尝试构造有效的身份验证 Cookie。

解决方法:

  1. 使用更强大的加密算法,如 SHA-256,替代不安全的 MD5 哈希算法。
  2. 不要将用户的密码直接存储在 Cookie 中,而是使用随机生成的令牌,并在服务器端进行验证。
  3. 加强会话管理,确保在用户登录时生成新的会话令牌,并在用户注销或会话超时后使其失效。

注意:工具使用内容请以最新版本为主。

  • 32
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值