Burpsuite靶场|使用成功登录破除IP限制后暴力破解密码

阅读须知

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

靶场说明

测试背景:本靶场设定的登录用户密码为弱密码,请你尝试暴力破解密码并登录。请注意,靶场已实施 IP 请求限制措施。具体而言,同一账号若连续登录失败3次,将触发 IP 地址封禁机制。然而,在达到3次失败限制之前,若账号登录成功,系统将重置该 IP 的失败次数限制。

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

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

工具下载: TangGo测试平台

测试靶场Lab: Broken brute-force protection, IP block | Web Security Academy

(靶场原文描述)

测试思路

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

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

抓取登录数据包:使用HTTP抓包测试工具,抓取正确用户名的登录数据包,并保存下来,以便后续使用。

规避IP限制:在进行密码爆破之前,设定一个发包前置流程,即先使用正确用户名进行登录,以解除IP登录限制。

枚举测试用户密码:利用HTTP模糊测试工具,对指定的测试用户“carlos”的密码进行枚举尝试。

获取正确密码:通过比较和分析响应状态码的差异,我们成功找到了“carlos”用户的正确密码。

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

使用实操

访问和登录

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

(靶场首页)

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

(登录页面)

在登录页面中,输入正确的用户名(winner)和密码(peter),点击登录后,成功进入后台页面:

(登录后台)

点击“Log out”回到登录界面,抓取登录的请求数据包,操作如下:

首先我们回到 HTTP抓包测试工具中,开启抓包拦截,之后回到内置浏览器中,在登录框中输入账号(winner)和密码(peter)后点击登录,此时通过 HTTP抓包测试工具,我们成功抓取到登录请求的数据包:

(登录数据包)

通过分析抓取到的登录请求数据包,我们可以得出数据包中的“username”字段的值为输入的用户名(winner),“password”字段的值为输入的密码(peter),此数据包为正确用户的登录请求数据包,我们将此数据包发送到数据重放模块以便于保存和后续使用。

在操作选项卡中把抓取到的数据发送到数据重放模块中保存起来。

因为可以通过修改登录请求包的‘username’和‘password’字段来进行接下来的暴力破解测试,所以不需要重新抓取新的登录请求数据包,只需要修改数据包中对应的字段值即可进行测试。

参数设置

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

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

步骤 1- 设置请求参数

修改“username”后的字段值为测试用户的名字,即把“winner”修改为“carlos”:

(修改 winner)

对需要破解的密码字段进行标记,这里标记需要“password”字段的值“peter”:

(标记 peter)

步骤 2-设置变体参数

1.重放模式

(模式选择)

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

2.变体赋值

点击靶场提供的“Candidate password”:

(Candidate password)

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

(复制密码)

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

(粘贴密码)

启动测试

点击“测试过程”-->“启动测试”。

在测试返回的数据中,我们发现前三个数据返回的长度和后面长度不一致,我们分别查看对应长度返回的数据内容:

(返回数据)

长度为 3322 的数据包响应内容为“Incorrect password”,表示无效的密码。

(长度 3322)

长度为 3385 的数据包响应内容为“You have made too many incorrect login attempts. Please try again in 1 minute(s).”

(长度 3385)

翻译成中文的意思为“您进行了太多不正确的登录尝试。请在1分钟后重试”,表明我们爆破的次数过多,IP 已经被限制登录,这时候我们会考虑,如果使用 IP伪造能不能绕过限制呢?

IP伪造:通过添加X-Forwarded-For、Client-IP等头部来伪造IP地址,以绕过目标站点获取IP地址的检测(仅适用于目标站点获取客户端IP地址机制存在缺陷的情况下)

ip 伪造

通常 IP伪造 的做法是在 HHTP 请求头中添加“X-Forwarded-For”,而 TangGo 中只需要在“测试配置”中勾选 IP 伪造。

(勾选伪造 IP)

再次点击测试,我们可以发现测试返回数据包前三个的长度依旧为“3322”,后三个为“3385”:

(返回数据)

查看返回长度为“3385”的数据包,显示内容为“You have made too many incorrect login attempts. Please try again in 1 minute(s).”说明 IP 伪造后依旧被限制了登录。

(长度 3385)

通过上面测试发现,靶场做了对应的 IP 请求限制, 如果同一账号登录失败 3 次则限制该 IP 地址,那么如果在登录失败 3 次之前,进行一次正确的登录,是否能绕过该限制呢?

传统的方法涉及到一个用户名 carlos 和 winner 交替的字典生成,并在该字典中为每个 winner 用户名添加对应的密码 peter。然后,进行交替的暴力破解尝试,模拟 carlos 不断猜测密码和 winner 正常登录的场景。然而,这种方法需要消耗时间去构建密码字典,即使可以借助代码或程序自动化这个过程,也仍然需要投入学习和开发的时间。

而TangGo 的做法简单了许多,我们只需要在自定义流程中设置一个发包前流程,在每次爆破密码前进行正确用户名的登录。具体方法如下:

设置自定义流程

点开自定义流程模块,在发包前流程中点击右上角新建按钮。

(新建规则)

在弹出的页面中选择“发送 HTTP 请求”。

(设置操作类型)

选择请求数据包,导入之前存放在 HTTP抓包测试工具重放模块中的正确用户请求登录数据包,最后响应数据绑定到变量中,即可全局调用该变量本文中并未使用绑定变量值,因为此处的发包前流程只模拟正确的用户登录。

(导入数据)

点击右下角的测试按钮,在弹窗中可以通过点击“流程测试”按钮,查看请求数据包是否成功发送,响应数据是否正确;此处响应数据中的响应码为 302,表示正确登录。

(测试数据)

设置完成后点击确定按钮,完成发包前流程设置。

(发包前流程设置完成)

启动测试

设置完成后,点击“测试过程”-->“启动测试”:

可以发现返回的数据长度均为“3245”,并且绕过了 3 次登录的 IP 请求,说明我们的猜想是正确。

(返回数据)

如果您觉得测试速度很慢,可以在“测试配置”中使用多线程,不过请注意,为了避免同一时间的请求线程超过对应的 IP 限制,这里的线程数应当小于 IP 请求的限制数,所以设置线程数为 2.

(多线程设置)

查看响应数据中的状态码,正确的密码会成功登录页面,所以响应的状态码为 302,通过点击状态码进行排序,得到正确的密码为“thomas”。

(302 状态码)

输入账号“carlos”和密码“thomas”成功登录。

(成功登录)

至此绕过了 IP 登录的限制并且成功拿到了正确的用户密码。

测试总结

测试漏洞:密码暴力破解漏洞

  • 用户连续输入错误密码后系统会暂时禁止登录,但可通过重置计数器来规避此限制。
  • 攻击者利用此漏洞进行密码暴力破解攻击,尝试多个用户名和密码组合。

解决方案:

  • 强化密码策略,要求用户使用更强密码,并定期更换密码。
  • 实施账号锁定策略,在一定次数的错误尝试后暂时禁止登录。
  • 增加登录验证机制,采用多因素身份验证来提高身份验证的复杂度和安全性。
  • 实施延迟响应机制,在用户连续输入错误密码后增加登录尝试的时间间隔。

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

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值