Burpsuite靶场|根据网站登录提示差异枚举存在的账号(进阶篇)

本文介绍了如何通过TangGo的HTTP模糊测试工具优化网络安全测试,通过设置特定流程和匹配规则,避免对不存在的用户名进行密码暴力破解,从而更高效获取测试数据,重点关注了用户名枚举和密码暴力破解的测试场景。
摘要由CSDN通过智能技术生成

阅读须知

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

系列说明

本系列文章为Burpsuite 靶场测试教学。我们将基于Burpsuite提供的实验靶场,结合TangGo的各种工具对其进行复现和测试,以帮助你掌握TangGo在各类网络安全测试场景中的应用技巧。

靶场说明

在上篇文章中,我们介绍了根据网站登录提示差异枚举存在的账号。本文中,我们将继续延用此靶场,通过 TangGo 的独特功能,更便捷更高效的得到测试数据。那我们如何更高效的测试出数据呢?请看对比流程图:

(流程图)

通过对比流程图,我们可以明确得出以下结论:在基础篇中,我们采取了以下步骤:首先枚举用户名,一旦获取到正确的用户名,我们会继续枚举该用户名的密码,最终成功登录。然而,是否存在一种更为高效的方法,能够一步到位地直接获取到正确的用户名和密码呢?确实,按照传统的思路,我们可能会尝试将多个用户名与多个密码进行交叉匹配以获取数据。但是对于不存在的用户名,我们根本不需要去暴力破解密码,所以这种方法不仅耗时,而且还会多出很多不必要的测试请求。

在 TangGo 的 HTTP模糊测试工具中,我们能够通过设定特定的发包流程来优化这一过程。具体来说,当用户名不存在时,工具将不再进行密码的暴力破解,而是仅在用户名正确的情况下对其进行密码的暴力破解。此外,TangGo 工具还允许我们设置匹配规则,从而能够直接精确地筛选出正确的用户名和密码。这样,我们就不再需要在大量的返回数据条目中逐一查找正确的数据,从而大大提高了效率。

本文中我们将详细讲解如何通过 HTTP模糊测试工具的实用功能更高效便捷的得到测试数据。

使用实操

因为延用之前靶场且“抓取数据包”步骤一致,所以这里我们就不在赘述,详细步骤请参考根据网站登录提示差异枚举存在的账号,此处我们直接从“参数设置”开始讲解。

参数设置

启动HTTP模糊测试工具后,我们将按照以下步骤进行详细的设置:

  • 对用户名和密码进行变体设置。
  • 在发包后流程中,设置<关键节点条件判断>流程,跳过不存在的用户名的后续测试流程(不进行密码破解) 。
  • 设置匹配规则,以便从测试结果中直接筛选出正确的用户名和密码组合。

步骤 1- 设置请求参数

对需要枚举的用户名和密码进行标记,这里标记“username”字段的值“aa”和“password”的字段值“b”:

(标记 aa 和 b)

步骤 2-设置变体参数

1.重放模式

(模式选择)

重放模式选择多字典交叉爆破模式,因为此处需要对多个用户名和多个密码进行交叉测试,所以选择此模式。

2.变体赋值

在变体 1 中填入靶场给定的用户名:

(靶场给定的用户名)

(粘贴用户名)

在变体 2 中填入靶场给定的密码:

(靶场给定的密码)

(粘贴密码)

变体 1 和 2 的值均已设置完成,接下来在自定义流程中设置发包后流程。

设置自定义流程

点开自定义流程模块,可以发现自定义流程中有发包前和发包后流程。

在使用HTTP模糊测试工具时,若在发送数据包之前需执行诸如执行Token获取、验证码识别或提取、系统登录等各类前置流程等前置流程操作,可通过设置发包前流程来完成这些步骤。

在使用HTTP模糊测试工具时,若在发送数据包之后需执行如从响应数据中提取需要的数据、对数据进行处理、将需要的数据发送到某些接口或保存到文件中、判断本次测试是否因为验证码错误等原因需要重新尝试、或者因为某些条件不满足而中止测试等后续流程操作,可以通过设置发包后流程来完成这些步骤。

本文需要根据响应数据执行对应判断,所以选择使用发包后流程模块,设置如下。

点击右上角新建按钮:

(新建规则)

在弹出的页面中选择“关键节点条件判断”。

(设置操作类型)

在判断规则中点击新建按钮:

(新建规则)

在弹出的页面中设置判断规则:

  • 对象类型:模糊测试响应数据。
  • 对象属性:HTTP 响应 Body。
  • 判断方法:包含字符串。
  • 特征数据:Invalid username。

在上文中我们可以得知,当用户名不存在的时候返回的响应数据中含有字符串“Invalid username”,所以此处我们需要根据响应数据中是否包含字符串“Invalid username”进行判断,故判断方法为包含字符串、特征数据填“Invalid username”。

(判断规则)

设置完判断规则后,接下来我们进行匹配规则成立后,需要执行操作的对应设置。

如果匹配上述规则,则说明响应数据中包含字符串“Invalid username”,此时必然是不存在的用户名,所以并不需要对此用户名进行密码暴力破解,而应该直接测试下一个用户名。搞清楚该逻辑后,我们就清楚该如何设置了,首先如果该用户名不存在则不会进行密码暴力破解,也就丢弃此变体本来测试所用变体值;所以勾选丢弃本轮测试所用变体值,其次该规则丢弃的数据应该是用户名,所以规则应用于选择变体 1:aa,最后丢弃数据后应当直接进行下轮测试,继续测试其他的用户名,所以选择直接进行下轮测试。

(执行操作)

点击确定按钮完成设置。接下来为了方便能够精确的筛选出正确的数据,我们设置匹配规则。

设置匹配规则

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

(匹配规则)

根据之前的思路我们可以得知,当用户名错误的时候返回数据中包含字符串“Invalid username”,当用户名正确但密码错误的时候,返回数据中包含字符串“Incorrect password”,所以如果排除掉包含“Invalid username”的返回数据包,也排除掉包含“Incorrect password”的返回数据包,那么该数据即为唯一符合的数据,所以设置如下。

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

(添加规则)

在新弹出的页面中:

  • 匹配位置:HTTP 响应头部
  • 匹配类型:包含字符串
  • 匹配规则:Invalid username

(设置规则)

因为我们需要包含两个字符串,所以需要创建两次,同理创建规则包含字符串“Incorrect password”。依次创建好两个匹配规则后,接下来就可以启动测试了。

(完成 2 个匹配规则设置)

启动测试

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

在测试返回的数据中,可以发现我们成功触发了发包后关键节点判断,丢弃了大量的变体数 (10000),同时发现数据包匹配规则大多数为“是”。

(返回数据)

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

(筛选匹配规则)

当我们使用匹配功能筛选“否”的时候,此时返回的数据包即不包含“Invalid username”也不包含“Incorrect password”,所以筛选出的数据即为正确的数据。

(正确数据)

至此我们成功拿到了靶场用户名“anaheim”和密码“michael”。

测试总结

测试漏洞:用户名枚举和密码暴力破解。

用户名枚举:

  • 攻击方法: 发送不同的用户名,观察页面返回数据的响应以判断用户名是否有效。
  • 响应特征: 网站可能对存在用户和不存在用户返回不同的数据内容,测试人员通过返回数据来区分存在的和不存在的用户。

密码暴力破解:

  • 攻击方法: 对已经存在的用户名尝试多个密码组合,以得出正确的密码。
  • 响应特征: 网页可能根据密码的正确性返回不同的数据响应,如密码错误或密码无效,测试人员通过返回数据来区分正确和错误的密码。

解决方案:

  • 用户隐私保护:系统应避免在错误消息中泄露有关用户名的详细信息,例如明确指出“用户名错误”或“密码错误”。
  • 限制登录尝试:实施登录尝试次数限制,例如在多次失败的尝试后锁定用户账户或增加延迟时间。
  • 密码策略:要求用户使用强密码,并实施密码复杂性要求,例如包含大小写字母、数字和特殊字符。
  • 监控和报警:实施实时监控和报警机制,以检测异常登录行为并及时采取响应措施。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值