前言
本篇将讲解使用密码登录时可能会存在的漏洞,如何利用这些漏洞,以及在针对这些漏洞进行防御的情况下如何绕过这些防御。
与密码登录相关的漏洞类型
既然是密码登录,那就涉及到了账号和密码,那么会产生漏洞的地方就只有两个,分别是账号破解与密码破解。
账号破解
关于账号破解这点相对比较简单,现如今基本上使用的是手机账号或者邮箱账号进行登录。而这两样在个人信息中可以说最容易获取的,信息泄露中泄露得最多的就是这两样。获取这些的最简单方式就是到社工库上进行查询,其次是利用社会工程学相关知识获取。然后在猜解时根据页面返回的状态码、响应时间等特征进行判断当前账号是否为该网站的用户。
密码破解
而密码破解方面说难不难,说容易也不容易。以笔者为例,虽然密码设计得很长,但在很多账户上用的基本上都是同一个密码;虽然知道要定期更改密码,但已经很长一段时间没有变更过密码了……归根究底,其原因还是在于人这种生物有很强的惰性。
尽管现在注册账号时已经强制要求使用强密码,但很多人的密码依旧可以轻易猜解。比如手机号或生日加姓名字母,然后姓名的某个字母大写,再加上某个字符。这就构成了一个简单易记的强密码,但这也导致该密码变得相对容易猜解。
因此在密码破解方面依旧要依靠社工等获得个人信息,然后依此组成的字典才具有很强的针对性,极大的节省时间精力并降低被发现的风险。
如何利用密码登录时的漏洞
目前的常规套路都是先获得受害者的个人信息,然后利用这些个人信息组成字典进行暴力破解。但现如今有很多网站都采取了针对暴力破解的防御,因此本篇的关注点在于如何在有一定的防御下进行暴力破解。
如何绕过与密码登录相关的防御
无论是账号破解还是密码破解也好,都要涉及到大量的尝试,因此很多防御都会对当前发送登录请求的"用户"进行限制,根据限制的方面不同,绕过的方式也不尽相同。
限制IP
如果进行大量猜解尝试并且失败后,服务器将会限制当前IP进行访问。而解决方式有很多,比如说VPN技术提供了相当多的IP地址。也可以在破解途中“稍事休息”,进行一次自己账户的成功登录(根据猜解的目的不同可能没有当前网站正常登录的账号密码)以解除即将触发到的警报。
锁定账户
有的开发者在针对暴力破解进行防御时会采用账户锁定的形式,也就是说如果同一账户登录尝试过多将会锁定该账户,导致无法对该账户进行登录尝试。
这一防御措施的有效性取决于攻击者暴力破解的目的和时间成本。如果时间成本允许且攻击者的目的是能够获得登录用的账号密码,那么完全可以换一个账号再次进行尝试。但如果是针对某一固定账户进行破解则可能相当致命。不仅时间成本过高,而且在网站通知或者强制帮助该用户修改密码后,即使解除了账户锁定,那先前的努力也将白费。但如果在特定时间内该账户被锁定无法登录才是其真是目的则另当别论。
用户速率限制
有的网站针对暴力破解采用的是限制用户速率的方式,当服务器发现某一IP地址短时间内发送大量登录请求后将会限制来自该IP地址发送的请求速率。在这种情景下只能数量不行质量来凑。假如是对针对密码进行猜解,那么我们可以将请求包中的单个密码更改为密码数组来绕过这一防御机制。
总结
虽然针对暴力破解的防御多种多样,但有些防御方式依旧可以进行绕过。有些绕过方法相对简单,但也有些绕过方法将会提高时间成本。而在时间成本和漏洞利用这两方面的权衡将是非常重要的。