在学习本章前,建议先对前序章节进行了解,传送门如下:
本章节结合靶场试验来仔细研究基于密码的登录机制中不太常见的防护方式及攻击手段。
HTTP基本认证
这种方式虽然相当古老,但是其相对简单和易于实现,目前还有很多应用会使用这种HTTP基本身份验证。
在HTTP基本身份验证中,客户端从服务器接收到一个身份验证令牌,该令牌由用户名和密码连接起来,并使用Base64进行编码。这个令牌由浏览器存储和管理,浏览器会自动将其添加到每个后续请求的Authorization标头中,如下所示:
由于多种原因,这通常不被认为是一种安全的身份验证方法。
首先,它涉及在每个请求中重复发送用户的登录凭据,除非该网站还是实施HSTS,否则用户凭据很容易被中间人捕获。
此外,HTTP基本身份验证通常不支持暴力保护,由于令牌完全由静态值组成,这可能使其容易受到暴力破解。
HTTP基本身份验证也特别容易受到与会话相关的攻击,特别是CSRF,它本身无法提供任何保护。
在某些情况下,利用易受攻击的HTTP基本身份验证可能只会授予攻击者访问到看似无意义页面的权限。但是除了提供进一步攻击面外,以这种方式公开的凭据可能会在其他更机密的环境中重复使用。
用户速率限制
网站试图防止暴力攻击的另一种方法是通过用户速率限制。在这种情况下,短时间内发出过多的登录请求会导致IP地址被阻止。通常,只能通过以下方式才能解锁IP:
●经过一定时间后自动解除
●由管理员手动解除
●成功完成验证码后由用户手动解除
由于不太容易受到用户名枚举和拒绝服务攻击,用户速率限制有时优于账户锁定。但是它仍然不是完全安全的,攻击者可以通过多种方式来绕过防护。
由于这种限制基于从用户IP地址发送的HTTP请求的速率,因此如果能弄清楚如何通过单个请求猜测多少个密码,有时也可以绕过这种防御。
场景试验-每个请求多个凭据:
https://portswigger.net/web-security/authentication/password-based/lab-broken-brute-force-protection-multiple-credentials-per-request
场景说明:
这个场景由于防爆破的逻辑缺陷,容易受到暴力破解攻击。
试验目的:
要完成这个试验,暴力破解carlos的密码,然后登录访问他的账户页面。
攻击过程:
①访问登录页面后用carlos账户登录下,发现这次登录信息是用JSON表单提交的,由于有对登录错误次数进行IP限制,因此只能尝试想办法通过改造JSON表单,将这个请求发送给Repeater。
②构造JSON表单,将密码字典的内容放进去,进行发送
"username": "carlos",
"password": [
"123456",
"password",
"qwerty"
...
]
③响应包会返回302状态码,右键点击这个响应,选择Showresponse in browser,复制URL到浏览器进行打开
④通过浏览器访问后即可完成此试验。
试验小结:
这个场景关键是没有对JSON提交的表单进行格式查验,从而使攻击者可以利用这个缺陷对密码进行字典攻击并登录授权成功。
原文始发于微信公众号(H君网安白话):身份验证漏洞-基于密码的登录漏洞(高级)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论