阅读须知
本文的知识内容,仅供网络安全从业人员学习参考,用于已获得合法授权的网站测试,请勿用于其它用途。请勿使用本文中的工具、技术及资料,对任何未经授权的网站、系统进行测试,否则,所造成的直接或间接后果,均由您自行承担。
靶场说明
在上篇文章中,我们介绍了根据网站登录提示差异枚举存在的账号。本文中,我们将继续延用此靶场,通过 TangGo 的独特功能,更便捷更高效的得到测试数据。那我们如何更高效的测试出数据呢?请看对比流程图:
(流程图)
通过对比流程图,我们可以明确得出以下结论:在基础篇中,我们采取了以下步骤:首先枚举用户名,一旦获取到正确的用户名,我们会继续枚举该用户名的密码,最终成功登录。然而,是否存在一种更为高效的方法,能够一步到位地直接获取到正确的用户名和密码呢?确实,按照传统的思路,我们可能会尝试将多个用户名与多个密码进行交叉匹配以获取数据。但是对于不存在的用户名,我们根本不需要去暴力破解密码,所以这种方法不仅耗时,而且还会多出很多不必要的测试请求。
在 TangGo 的 HTTP模糊测试工具中,我们能够通过设定特定的发包流程来优化这一过程。具体来说,当用户名不存在时,工具将不再进行密码的暴力破解,而是仅在用户名正确的情况下对其进行密码的暴力破解。此外,TangGo 工具还允许我们设置匹配规则,从而能够直接精确地筛选出正确的用户名和密码。这样,我们就不再需要在大量的返回数据条目中逐一查找正确的数据,从而大大提高了效率。
本文中我们将详细讲解如何通过 HTTP模糊测试工具的实用功能更高效便捷的得到测试数据。
使用实操
因为延用之前靶场且“抓取数据包”步骤一致,所以这里我们就不在赘述,详细步骤请参考根据网站登录提示差异枚举存在的账号,此处我们直接从“参数设置”开始讲解。
参数设置
启动HTTP模糊测试工具后,我们将按照以下步骤进行详细的设置:
- 对用户名和密码进行变体设置。
- 在发包后流程中,设置<关键节点条件判断>流程,跳过不存在的用户名的后续测试流程(不进行密码破解) 。
- 设置匹配规则,以便从测试结果中直接筛选出正确的用户名和密码组合。
步骤 1- 设置请求参数
对需要枚举的用户名和密码进行标记,这里标记“username”字段的值“aa”和“password”的字段值“b”:
(标记 aa 和 b)
步骤 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”。
测试总结
测试漏洞:用户名枚举和密码暴力破解。
用户名枚举:
- 攻击方法:发送不同的用户名,观察页面返回数据的响应以判断用户名是否有效。
- 响应特征:网站可能对存在用户和不存在用户返回不同的数据内容,测试人员通过返回数据来区分存在的和不存在的用户。
密码暴力破解:
- 攻击方法:对已经存在的用户名尝试多个密码组合,以得出正确的密码。
- 响应特征:网页可能根据密码的正确性返回不同的数据响应,如密码错误或密码无效,测试人员通过返回数据来区分正确和错误的密码。
解决方案:
- 用户隐私保护:系统应避免在错误消息中泄露有关用户名的详细信息,例如明确指出“用户名错误”或“密码错误”。
- 限制登录尝试:实施登录尝试次数限制,例如在多次失败的尝试后锁定用户账户或增加延迟时间。
- 密码策略:要求用户使用强密码,并实施密码复杂性要求,例如包含大小写字母、数字和特殊字符。
- 监控和报警:实施实时监控和报警机制,以检测异常登录行为并及时采取响应措施。
注意:工具使用内容请以最新版本为主。
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)