freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

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

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

FreeBuf+小程序

FreeBuf+小程序

Authentication身份验证漏洞内容学习笔记和通关攻略
2024-02-19 17:33:31

前言

身份验证漏洞可能允许攻击者访问敏感数据和功能。它们还会暴露其他攻击面,以便进一步利用。因此,了解如何识别和利用身份验证漏洞以及如何绕过常见的保护措施非常重要。本文将介绍:

  • 网站最常用的身份验证机制。
  • 这些机制中的潜在漏洞。
  • 不同身份验证机制中的固有漏洞。
  • 由不正确的部署引入的典型漏洞。
  • 如何使自己的身份验证机制尽可能可靠。

身份验证是验证用户是否是他们声称的身份的过程。授权涉及验证是否允许用户执行某些操作。、

例如,身份验证确定尝试使用用户名访问网站的人Carlos123是否真的是创建该帐户的同一个人。通过身份验证后Carlos123,他们的权限将决定他们被授权执行的操作。例如,他们可能被授权访问有关其他用户的个人信息,或执行删除其他用户帐户等操作。

暴力破解

暴力破解是指攻击者使用试错系统来猜测有效的用户凭据。这些攻击通常使用用户名和密码的单词列表自动进行。自动执行此过程,尤其是使用专用工具,可能会使攻击者能够高速进行大量登录尝试。

暴力破解并不总是只是对用户名和密码进行完全随机的猜测。通过使用基本逻辑或公开可用的知识,攻击者可以微调暴力破解,以做出更有根据的猜测。这大大提高了此类攻击的效率。依赖基于密码的登录作为验证用户身份的唯一方法的网站,如果没有实施足够的暴力保护,则可能非常容易受到攻击。

用户名采用特定的模式(例如电子邮件地址)特别容易猜到。例如,以firstname.lastname@somecompany.com(即:姓名@公司名.com)。即使没有明显的模式,有时目标会使用可预测的用户名(例如adminadministrator)创建高特权帐户。

在测试的过程中,检查网站是否公开披露了潜在的用户名。例如,您是否可以在不登录的情况下访问用户配置文件?即使配置文件的实际内容被隐藏,配置文件中使用的名称有时也与登录用户名相同。您还应该检查 HTTP 响应以查看是否有任何电子邮件地址被泄露。有时,响应包含高特权用户(如管理员或 IT 支持)的电子邮件地址。

密码同样可以被暴力破解,难度因密码的强度而异。许多网站采用某种形式的密码策略,迫使用户创建复杂密码,在理论上它们更难破解。这通常涉及使用以下命令强制执行密码:

  • 最小字符数
  • 小写和大写字母的混合
  • 至少一个特殊字符

然而,虽然复杂密码很难单独被计算机破解,但我们可以使用人类行为的习惯(懒)来利用用户在不知不觉中引入该系统的漏洞。用户通常不会使用随机字符组合创建强密码,而是使用他们可以记住的密码,并尝试将其修改使其适合密码策略。例如,如果mypassword不允许,用户可以尝试类似Mypassword1!orMyp4$$w0rd的操作。

如果策略要求用户定期更改其密码,则用户通常只需对其首选密码进行可预测的微小更改。例如,Mypassword1!变为Mypassword1?Mypassword2!.这种对可能的凭据和可预测模式的了解意味着暴力破解通常比简单地遍历每个可能的字符组合要复杂得多,因此也更有效。

用户名枚举

用户名枚举是指攻击者能够观察网站行为的变化,以确定给定的用户名是否有效。用户名枚举通常发生在登录页面上,例如,当您输入有效的用户名但密码不正确时,或者当您输入已使用的用户名时,页面给出特别的显示。这大大减少了暴力破解登录所需的时间和精力,因为攻击者能够快速生成有效用户名的候选列表。

在尝试暴力破解登录页面时,应特别注意以下方面的任何差异:

  • 状态代码:在暴力破解期间,对于绝大多数尝试,返回的 HTTP 状态代码可能相同,因为大多数猜测都是错误的。如果暴力破解中某个payload返回不同的状态代码,则表明用户名存在。所以无论结果如何,网站始终返回相同的状态代码是最佳做法,但实际上开发时并不总是遵循这种做法。
  • 报错消息:有时返回的报错消息会有所不同,具体取决于用户名和密码是否不正确,或者只有密码不正确。在这两种情况下,网站最好使用相同的通用消息,但有时会出现小的打字错误。只要一个字符不合适,就会使两条消息截然不同,即使该字符在呈现的页面上不可见。
  • 响应时间:如果大多数请求都以类似的响应时间处理,则任何偏离此请求都表明幕后发生了不同的事情。这是猜测的用户名可能正确的另一个迹象。例如,如果用户名有效,网站可能只会检查密码是否正确。这个额外的步骤可能会导致响应时间略有增加。这可能很微妙,但攻击者可以通过输入过长的密码来使这种延迟更加明显,网站需要明显更长的时间来处理。

对应靶场

地址:https://portswigger.net/web-security/learning-paths/server-side-vulnerabilities-apprentice/authentication-apprentice/authentication/password-based/lab-username-enumeration-via-different-responses

进入靶场,单击my account。

1708247063_65d1c8176dabd5aa1640b.png!small?1708247066978

在用户名处随便输入点东西,抓包。

1708247173_65d1c88581335addc7c78.png!small?1708247175320

1708247197_65d1c89d313b195144ff4.png!small?1708247199193

在burp suite右击,将数据包送入intruder选择sniper模式。

1708247287_65d1c8f769b00ef2fc1ec.png!small?1708247289307

1708247611_65d1ca3ba78fad83b0a6b.png!small?1708247613624

在intruder中清除所有符号,选中username的值,加入破解标记。

1708247467_65d1c9abc35b906f7312d.png!small?1708247469622

1708247498_65d1c9ca429c721584d46.png!small?1708247499990

复制靶场介绍里给出的用户名。

1708247243_65d1c8cb30a38d3e213b2.png!small

将用户名放入burp suite候选名单。

1708247719_65d1caa7d0fcd71a746ae.png!small?1708247721872

单击右上角的start attack开始攻击,攻击完成后点一下红框处的length按照长度排列,大到小和小到大都看看,发现有一个长度不一样,这就是要找的有效用户名。实战中可以再看看status code error 等参数有没有不一样的。

1708248369_65d1cd313c33e0991679f.png!small?1708248371054

1708247875_65d1cb43f406d7fe1d6dc.png!small?1708247877784

此时使用破解出的用户名进行针对密码的暴力破解。将破解出的用户名填入username参数中,清除标记后选定password处添加破解标记。

1708248148_65d1cc54d6f45dcd7111e.png!small?1708248150832

此时复制给出的密码,填入候选payload中进行破解。

1708248250_65d1ccba01d2d74d23308.png!small?1708248252160

注意先清除之前的用户名字典,再粘贴我们的密码字典。

1708248329_65d1cd09743e182219a91.png!small?1708248331301

同样通过查看长度发现密码。

1708248411_65d1cd5bd834dc97df69d.png!small?1708248413781

如此我们知道了用户名:ak,密码:master。登录后就通关了。

1708248454_65d1cd866762f1520df88.png!small?1708248456341

绕过两步认证

如果首先提示用户输入密码,然后在单独的页面上提示用户输入验证码,则用户在输入验证码之前实际上处于“已登录”状态。在这种情况下值得测试一下在完成第一个身份验证步骤后是否可以直接跳到“仅登录”页面。有时,您会发现网站实际上并没有在加载页面之前检查您是否完成了第二步。

靶场部分

地址:https://portswigger.net/web-security/learning-paths/server-side-vulnerabilities-apprentice/authentication-apprentice/authentication/multi-factor/lab-2fa-simple-bypass#

使用给定账号登录。

1708333745_65d31ab18548dc249df3b.png!small?1708333746731进入邮箱客户端。

1708333891_65d31b437e7f938f00335.png!small?1708333892674

记下验证码并输入到登录处,单击login。

1708334157_65d31c4dbf94ec473f5c9.png!small?1708334158849

1708334195_65d31c7337704f46fa273.png!small?1708334196198

观察URL发现多出了一个路径,这就是用户界面。回到之前所介绍的知识点:当输入完密码点击登录后,我们已经进入了用户的个人界面,只是我们和界面之间多出了验证码要我们输入。可以理解为破解密码就是我们要撬开门锁进入房间,成功的验证码机制中验证码和密码分别是门上的两道锁,失败的验证码机制则是只有密码这一道锁,我们输入完密码已经进入了房间,验证码只是一道没上锁的木门,直接不管它进入房间即可。

1708334508_65d31dac5f67dcf137637.png!small?1708334509647

复制多出的路径,登出账号,使用受害者的账号登录。

/my-account?id=wiener

1708334612_65d31e1477009205fae74.png!small?1708334613560

1708334626_65d31e22a336a5a2afec5.png!small?1708334627644

此时进入验证码输入页面。

1708334660_65d31e44d9cedd8cee706.png!small?1708334661839

此时将之前发现的用户界面的位置补上URL,根据常理推断修改id为carlos(要登录的用户名),回车访问。

1708334758_65d31ea6e68bd7f9693b0.png!small?1708334760010

成功登录。

1708334786_65d31ec20489a3f98af15.png!small?1708334787071

# 漏洞 # 渗透测试 # 网络安全 # web安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录