引言
在本实验中,你将学习如何执行“Sniper”攻击,这是 Burp Suite Intruder 工具中最基本且常用的攻击类型之一。Burp Intruder 是一个强大的工具,用于自动化针对 Web 应用程序的定制攻击,以识别和利用安全漏洞。
Sniper 攻击旨在遍历一个 Payload 列表,将它们逐个插入到 HTTP 请求中的单个指定位置。这使其非常适合执行诸如猜测用户名、查找密码重置令牌或模糊单个参数以查找漏洞等任务。
我们将逐步介绍将请求发送到 Intruder、配置 Payload 位置、选择 Sniper 攻击类型、加载简单的 Payload 列表,最后启动攻击并分析结果的过程。在本实验中,Burp Suite 已安装在环境中。
在 Intruder > Positions 中,选择一个参数值并点击“Add §”
在此步骤中,你将定义攻击的目标。将请求发送到 Intruder 后,你需要精确指定 Payload 的插入位置。
首先,你需要有一个可用的请求。在本实验中,我们将假设你已在 Burp Proxy 中拦截了一个登录请求,并将其发送到 Intruder(通过右键单击请求并选择“Send to Intruder”)。Intruder 中的请求可能如下所示:
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=myuser&password=mypass
默认情况下,Burp Intruder 会自动在它认为请求中有趣的部分周围添加 Payload 标记(§)。为了获得精确的控制,最好清除这些标记并设置自己的标记。
- 导航到
Intruder>Positions选项卡。 - 点击右侧的
Clear §按钮,移除所有自动添加的 Payload 标记。 - 在请求编辑器中,使用鼠标仅高亮显示
username参数的值(在本例中为myuser)。 - 高亮显示该值后,点击
Add §按钮。
你的请求现在应该如下所示,只有用户名值被标记为 Payload 位置:
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=§myuser§&password=mypass
这会告诉 Intruder 只在 myuser 的位置插入 Payload,在每次尝试时保持请求的其余部分不变。
将攻击类型设置为“Sniper”
在此步骤中,你将为你的目标选择合适的攻击类型。Burp Intruder 提供四种不同的攻击类型,每种都有不同的用途。在本实验中,我们将使用 Sniper。
以下是攻击类型的简要概述:
- Sniper: 使用单个 Payload 集。它逐个定位每个 Payload 位置(
§...§)。对于每个位置,它会遍历列表中的每个 Payload。这是模糊单个参数最常用的类型。 - Battering ram: 使用单个 Payload 集。它同时将相同的 Payload 插入所有定义的 Payload 位置。
- Pitchfork: 使用多个 Payload 集。对于每个请求,它从每个集中取一个 Payload,并将它们放入相应的 Payloads 位置。
- Cluster bomb: 使用多个 Payload 集。它测试所有集合中 Payload 的所有可能组合。
由于我们的目标是在单个参数中测试一系列不同的用户名,因此 Sniper 是完美的选择。
要设置攻击类型:
- 保持在
Intruder>Positions选项卡中。 - 找到屏幕顶部的
Attack type下拉菜单。 - 点击下拉菜单,然后从列表中选择
Sniper。
你现在已将 Intruder 配置为使用 Sniper 攻击方法。
导航到 Intruder > Payloads 选项卡
在此步骤中,你将进入定义攻击实际使用数据的部分。既然你已经配置了目标位置(username)和攻击类型(Sniper),下一步就是提供 Payload 列表。
Payloads 是 Intruder 将替换你在步骤 1 中定义的 §...§ 位置的值。
要继续,只需导航到 Intruder 工具中的 Payloads 子选项卡。你会发现它就在你刚才操作的 Positions 选项卡旁边。点击此选项卡将带你进入 Payload 配置屏幕,在下一步中你将在那里设置你的潜在用户名列表。
加载简单的 Payload 列表(例如:admin, test, user)
在此步骤中,你将配置攻击的 Payload 列表。由于我们的攻击类型是 Sniper 并且只有一个 Payload 位置,我们只需要配置一个 Payload 集。
在 Intruder > Payloads 选项卡中,你将看到 Payload Sets 和 Payload Options 部分。
- 在
Payload Sets部分下,确保Payload set设置为1,Payload type设置为Simple list。这是默认设置,用于提供一个简单的字符串列表。 - 在
Payload Options [Simple list]部分下,你将添加你的 Payloads。你可以直接在文本框中输入,或使用Add按钮。
让我们添加一些常见的用户名进行测试: 在文本区域中,输入以下值,每行一个:
admin
test
user
root
guest
你的 Payload Options 部分现在应该包含此列表。Intruder 将为列表中的每一行发送一个请求,将该值替换为你之前标记的 username 参数。底部的 Payload Count 现在应该显示 5。
发起攻击并观察结果表
在此步骤中,你将发起已配置的攻击并分析结果。在位置、攻击类型和 Payloads 都设置好之后,你就可以开始了。
- 要发起攻击,请点击位于
Intruder选项卡右上角的Start attack按钮。 - 一个新的“Attack”窗口将打开,显示一个结果表。该窗口会随着 Intruder 发送每个请求而实时填充数据。
结果表是整个过程中最重要的部分。请密切关注各个列,特别是:
- Payload: 该请求使用的特定 Payload(例如:
admin,test)。 - Status: 响应的 HTTP 状态码(例如:
200,302,401)。 - Length: 响应体的大小(以字节为单位)。
要查找潜在的漏洞或有效的用户名,请寻找异常。例如,成功的登录可能会导致 302 Found 状态(重定向到仪表板),而所有失败的尝试都会导致 200 OK(重新显示登录页面)。同样,一个有效用户名的响应可能与其他响应的 Length 不同,因为错误消息发生了变化(例如,“Incorrect password”vs. “User not found”)。
通过按 Status 或 Length 列对表格进行排序,你可以轻松地发现任何与基线不同的响应,这可能表明存在潜在的发现。
总结
在本实验中,你成功使用 Burp Intruder 执行了一个基础的 Sniper 攻击。这是任何 Web 应用程序安全测试人员的一项基本技能。
你学会了如何:
- 通过清除默认标记并添加自己的标记,在
Positions选项卡中隔离一个特定的请求参数进行测试。 - 将攻击类型设置为
Sniper,这非常适合使用 Payload 列表测试单个参数。 - 导航到
Payloads选项卡并加载一个简单的自定义输入列表。 - 发起攻击并分析结果表,寻找 HTTP 状态码和响应长度中的异常,以识别有趣的行为。
掌握 Burp Intruder 中的 Sniper 攻击,为你提供了一种强大的方法来自动化重复性测试任务,例如用户名枚举、密码猜测和常见漏洞的模糊测试。
