从业者-暴力破解防护-账户锁定机制
# 实验室:通过帐户锁定信息来进行用户名枚举
# 题目
此实验室容易受到用户名枚举的攻击。它使用帐户锁定策略,但这包含一个逻辑缺陷。若要解决实验室问题,请枚举有效的用户名,并对此用户的密码进行暴力破解,然后访问其帐户页面。
- name: 实验室-从业者
desc: 暴力破解防护-账户锁定机制 >>
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/password-based/lab-username-enumeration-via-account-lock
bgColor: '#001350'
textColor: '#4cc1ff'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 该实验室存在暴力攻击漏洞,同时存在 “账户锁定机制” 的保护策略。
- 利用保护策略中的缺陷,来枚举有效的用户名,再针对该用户名进行密码暴力破解,然后以该用户身份进行登录。
点击 “Access the lab” 进入实验室。

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

先进行一次失败的登录,查看响应信息。

响应信息为 “Invalid username” 。

使用一个不存在的用户名,进行多次失败的登录,该账户并未被锁定。
说明错误的账户 不会触发账户锁定策略。

# 用户名枚举
抓取登录请求数据包,使用 “Intruder” 功能,将用户名添加到选区。

设置载荷,导入 实验室提供的用户名列表,然后点击 “Start attack” 开始攻击。
此处导入了 5 次列表(101 * 5 = 505),因为要触发账户锁定策略,所以要进行多次登录。

攻击结束后,对结果进行排序,发现一个异常条目,获得用户名arlington
。
请求序号是 389 ,说明每登录失败 3 次,就会触发账户锁定策略。

# 密码暴破
将 username 字段的值替换为刚刚枚举到的arlington
。
然后将 password 字段的值添加到选区。

设置载荷,导入 实验室提供的密码列表。

由于每登录失败 3 次,账户就会被锁定 1 分钟,所以此处要对暴破的速率做调整:
- 线程数:3
- 请求间隔:60000毫秒(60秒)
然后点击 “Start attack” 开始攻击。
(这样会导致暴破时间变得很久,暂时没想到更好的点子)

对攻击结果进行排序,发现一个异常条目,获得密码1234567890
。
(等了几十分钟,终于暴出来了...)

使用获得的用户名和密码进行登录:
- 用户名:
arlington
- 密码:
1234567890

登录成功,实验完成。

# 更好的密码暴破方案
由于我在上面写的密码暴破 太耗费时间了,所以我去看了答案,没想到...
在该实验室中,当一个账户处于锁定状态:
- 此时进行登录,如果密码错误,会提示你 账户已被锁定,需要等待 1 分钟。
- 如果密码正确,会返回异常的提示信息。
通过异常的提示信息,来判断密码暴破是否成功。密码暴破成功之后,等待 1 分钟使账户解锁,然后用正确的用户名和密码进行登录,即可完成实验。
(这个防护策略,防了个寂寞)
我又做了一遍实验室,这是密码暴破:


就算账户被锁定,依然可以暴破密码(通过响应信息来判断)。
root
:love
