从业者-用户名枚举-响应的时差
# 实验室:通过响应的时差进行用户名枚举
# 题目
此实验室容易受到 基于响应时间的用户名枚举和密码暴力攻击。它具有一个可预测的用户名和密码,可以在以下单词列表中找到:
- 你的凭据:
wiener
:peter
- 用户名候选列表 (opens new window)
- 密码候选列表 (opens new window)
提示
为了增加挑战,该实验室还实施了一种基于 IP 的暴力攻击保护形式。但是,这可以通过操作 HTTP 请求标头 来实现轻松绕过。
- 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-response-timing
bgColor: '#001350'
textColor: '#4cc1ff'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 该实验室存在暴力攻击漏洞,但是响应信息完全相同,需要通过程序处理的响应时间进行识别。
- 为了增加难度,该实验室还增加了一种 “基于 IP 的暴力攻击保护”,但很容易绕过。
- 先枚举有效的用户名,再针对该用户名进行密码暴力破解,然后以该用户身份进行登录。
点击 “Access the lab” 进入实验室。

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

该实验室在 题目 当中,提供了一个用户名和密码wiener
:peter
,先尝试登录。

登录成功,说明这是一个正确的账户,我们可以:
- 正确账户的登录时间 VS 错误账户的登录时间
- 从而枚举出 其他正确的账户。
先点击 “Log out” 退出当前账户。

# 用户名枚举(绕过暴力攻击防护)
如果你登录失败的次数过多(好像时 5 次),就会被限制登录,如图:
暂时不用管。

打开 BurpSuite 并启用浏览器代理,输入实验室提供的用户名wiener
,但是密码随意输入(因为要判断登录响应时间),然后拦截登录请求数据包。

在暴力攻击的过程中,可能会因为登录失败次数过多,而被限制登录:

可以通过伪造 IP 的 HTTP 请求标头,来绕过该保护机制,一些常见的标头:
X-Forwarded-For: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Client-IP: 127.0.0.1
2
3
4
5

正确的账户 + 错误的密码,响应时间为 1.1秒(最大时长)。

正确的账户 + 正确的密码,响应时间为 0.8秒(最大时长)。

正确的账户 + 较长的错误密码,响应时间 1.3秒。

正确的账户 + 很长的错误密码,响应时间 7.6秒。

通过这种方式,再去测试 错误的账户 + 密码,可以猜到目标应用程序的逻辑:
- 检查账户是否正确 -->
- 正确 --> 检查密码
- 错误 --> 不检查密码,直接返回错误信息
使用 “Intruder” 功能,将 IP 标头和 用户名字段的值 都添加到选区(因为有登录保护机制,所以在暴破的过程中 要不断变换 IP 地址)

攻击类型选择第三个 “Pitchfork” 。
- 该攻击类型会 同步替换所有选区的 Payload 。

设置载荷2,导入实验室提供的 用户名列表。

设置载荷1
- 载荷类型:Numbers
- From:1
- To:101
- Step:1

在开始攻击前,需要设置响应超时,以此来标记异常的攻击条目。
- 此处设置为 6 秒,你可以设置更低一点。


攻击结束之后,对 “Timeout” 列进行排序,发现一个超时的条目,用户名为ftp
,大概率是正确的账户。

# 密码暴力攻击
使用 “Intruder” 功能:
- 将用户名字段的值替换为 刚刚获得的
ftp
- 将 IP 和密码字段的值 添加到选区,
- 攻击类型为 “Pitchfork” 。

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

设置载荷1
- 载荷类型:Numbers
- From:1
- To:100
- Step:1

攻击结束后,对结果进行排序,发现响应状态码为 302 的异常条目,说明登录成功,获得密码123qwe
。

访问登录页面,使用上述攻击中获得的 用户名和密码 进行登录:
- 用户名:
ftp
- 密码:
123qwe

登录成功,实验完成。
