freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Burpsuite靶场 | 根据网站登录提示差异枚举存在的账号(基础篇)
2024-05-16 17:58:05

阅读须知

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

系列说明

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

靶场说明

测试背景:此靶场存在一个漏洞,它会受到用户名枚举和密码暴力破解攻击。请通过枚举找出有效的用户名,并暴力破解此用户的密码,然后访问其帐户页面。

使用工具:HTTP抓包测试工具、HTTP模糊测试工具。

下载地址:TangGo测试平台

必要条件:测试枚举所需要的账户用户名表单和账户密码表单均已提供。

测试靶场https://portswigger.net/web-security/authentication/password-based/lab-username-enumeration-via-different-responses

1715851627_6645d16b40b258eb33072.png!small?1715851628449

(靶场原文描述)

测试思路

访问目标网站:访问目标网站并进入登录页面。

判断漏洞是否存在:尝试输入一个不存在的用户名和密码并点击登录。页面内容显示“Invalid username”,初步推测网站可能存在用户名枚举的漏洞。

枚举用户名:使用 HTTP模糊测试工具,对用户名进行了枚举测试。通过观察返回的数据,若数据包含“Invalid username”,则判断该用户名不存在;反之存在。

得到正确的用户名:通过返回数据的不同,成功找到了正确的用户名。当用户名正确而密码错误的时候,此时页面返回提示变为“Incorrect password”,接下来只需要进行密码爆破。

枚举密码:填入正确的用户名后,利用HTTP模糊测试工具,针对该用户名下的密码进行了暴力破解。通过观察返回数据,若数据包含“Incorrect password”,则判断该密码不正确;反之正确。

得到正确的密码:通过返回数据的不同,成功找到了正确的密码。

成功登录:使用得到的账号和密码,成功登入网站,说明账号和密码无误。

使用实操

访问和登录

首先启动 HTTP抓包测试工具,打开右上角内置浏览器,之后在浏览器中访问靶场的网站,加载后是一个普通的网页:

1715851762_6645d1f243511963d3a6e.png!small?1715851762998

(靶场首页)

分析网页发现,右上角的“My account”其中文翻译为“我的账户”,猜测此处可能为登录入口,点击“My account”后会跳转至新页面,进入后发现为登录页面:

1715851782_6645d206ef00882973363.png!small?1715851783514

(登录页面)

在登录页面中,输入任意账号和密码后点击登录(本文中使用账号“aa”和密码“b”进行举例),页面返回会出现提示“Invalid username”:

1715851810_6645d222219bf1419f664.png!small?1715851810720

(无效的用户名)

该提示的中文翻译为“无效的用户名”,根据该翻译可以大胆推测此处存在用户名枚举漏洞。

枚举测试(Enumeration Testing)是一种特定的安全测试方法,主要用于识别和发现系统中潜在的安全漏洞和攻击面。通过枚举系统中可能存在的敏感信息或资产,测试人员能够更全面地了解系统的安全状况,并据此采取相应的防护措施。这种测试方法主要用于发现系统中的用户名、文件路径、服务信息、应用程序版本、端口状态等敏感信息,从而帮助安全团队评估系统的安全性和潜在风险。

枚举用户名

根据提供的账户用户名,进行用户名枚举,观察枚举后响应内容的数据,通过对比返回数据的不同来判断用户名是否存在。

抓取数据包

首先启动 HTTP抓包测试工具,开启抓包拦截,之后回到内置浏览器中,在登录框中输入账号(aa)和密码(b)后点击登录,此时通过 HTTP抓包测试工具,我们成功抓取到登录请求的数据包:

1715851869_6645d25d414f7d13c0b39.png!small?1715851870088

(登录数据包)

通过分析抓取到的登录请求数据包,我们可以得出数据包中的“username”字段的值为输入的用户名(aa),“password”字段的值为输入的密码(b),接下来使用 HTTP模糊测试工具对 “username”字段的值进行枚举。

在操作选项卡中把抓取到的数据发送到 HTTP模糊测试工具中,工具会自动打开并跳转:

1715851944_6645d2a805c20ffa70cdf.gif!small?1715851945577

(发送到 HTTP模糊测试工具中)

参数设置

在 HTTP模糊测试工具中,我们需要对用户名进行测试枚举测试,设置方法如下。

步骤 1- 设置请求参数

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

1715851990_6645d2d686477261773d4.png!small?1715851991741

(标记 aa)

步骤 2-设置变体参数


1.重放模式

1715852066_6645d322d65fc79e4e8ec.png!small?1715852067610

(模式选择)

重放模式选择单字典逐一爆破模式,因为此处只需要对用户名进行枚举,所以选择此模式。

2.变体赋值

点击靶场提供的“Candidate usernames”:

1715852101_6645d345deca9ce53a4a1.png!small?1715852103081

(Candidate usernames)

点击链接后,在弹出页面中,复制所有的用户名。

1715852485_6645d4c5ea1555e3ab515.png!small?1715852486699

(复制用户名)

点击粘贴按钮将所复制的用户名全部粘贴到 HTTP模糊测试工具中。

1715852761_6645d5d9c3628876e8c14.png!small?1715852762434


(粘贴用户名)

启动测试

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

1715852942_6645d68e90a33f7f4fa14.png!small?1715852943244


(启动测试)

根据之前测试思路,我们可以得出以下总结:如果用户名有效,响应数据中将不会包含字符串“Invalid username”。由于不同响应数据的长度不同,因此我们可以利用“长度”按钮对返回数据进行排序。

1715853048_6645d6f8bdf61f582618a.gif!small?1715853049821

排序完成后,顶部的数据长度明显和其余数据长度明显不一致,而其余数据中内容均带有字符串“Invalid username”。

1715853058_6645d70293374a688d149.png!small?1715853059195

选择顶部的数据,在右侧中单击“页面浏览”查看返回内容的界面,可以看到用户名正确的时候页面返回的提示内容变为“Incorrect password”。

1715853064_6645d7087ae4dbd630b21.png!small?1715853065423


(用户名正确)

至此成功枚举出账户的用户名为“arizona”,接下来只需要暴力破解出此用户的密码即可。

枚举密码

因为之前抓取到的登录数据包中包含用户名和密码,所以不需要重新抓包,只需要重新设置对应的请求参数之后再次进行测试。

步骤 1- 设置请求参数

回到“请求包及变体设置”,修改 “username”字段值为之前枚举出的正确用户名“arizona”,因为需要暴力破解密码,所以此处标记“password”字段的值“b”:

1715853101_6645d72d583c8c184c798.png!small?1715853102608

(标记 b)

步骤 2-设置变体参数

1.重放模式

1715853106_6645d732ca6b77e99ff6a.png!small?1715853107726

(设置重放模式)

重放模式选择单字典逐一爆破模式,因为此处只需要对密码进行破解,所以选择此模式。

2.变体赋值

点击靶场提供的“Candidate passwords”。

1715853113_6645d739d745d57b717de.png!small?1715853114620

(Candidate passwords)

点击链接后,在弹出页面中,复制所有的密码。

1715853119_6645d73f756a4e831e860.png!small?1715853120304

(复制密码)

点击粘贴按钮将所复制的密码全部粘贴到 HTTP模糊测试工具中。

1715853125_6645d7450e182f46689bb.png!small?1715853125858

(粘贴密码)

启动测试

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

1715853132_6645d74c014f58fd8d0e3.png!small?1715853132776

(启动测试)

根据之前思路可以得知,此时用户名是正确的,如果密码正确,返回的响应数据中就不会包含字符串Incorrect password,由于不同响应数据的长度不同,因此我们可以利用“长度”按钮对返回数据进行排序。

1715853164_6645d76c79bb71abc4722.gif!small?1715853165114

排序完成后,顶部的数据长度明显和其余数据长度明显不一致,顶部数据中的变体值即为正确的密码,而其余数据中内容均带有字符串“Incorrect password”。

1715853176_6645d77898ee2aa0ee146.png!small?1715853177614

此时成功枚举出用户名并暴力破解了用户密码,账户的用户名为“arizona”,用户密码为“000000”,回到登录页面输入用户名和密码后,成功进入账户页面。

1715853172_6645d774cd59b61a418f4.png!small?1715853177613

(成功登录)

测试总结

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

用户名枚举:

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

密码暴力破解:

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

解决方案:

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

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




# 漏洞 # 网络安全 # web安全 # 系统安全 # 抓包工具
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录