黑客技术:一个“登录框”引发的安全问题(2)

将数据包返回至当前页面,修改code值

alt

alt

登录成功

alt

风险分析:

如果应用程序在认证上没有做好,可以导致恶意用户或者攻击者绕过认证,访问内部资源,这类漏洞通过防火墙和入侵检测系统很难预防。

修复方案:

可从以下几个方面预防认证绕过:

1.对于每一个访问的URL都首先检查是否已经登录(不需要认证的URL除外,例如,帮助页面、免费下载页面等),如果没有登录,则跳转到登录页面。对于已经登录的用户,在退出的时候或者在会话很长时间处于idle状态的时候,需要保证原来的会话被正确的销毁并且不会再被重利用。

2.规定密码强度要求,防止密码被猜测到。

3.对于用户是否已经认证,禁止依赖客户端传过来的参数标识,而应将是否登录的标识保存在服务器端的会话中,当接收到该会话的请求时,从会话保存的状态判断是否登录。

4.对于SessionID一定要使用安全的随机数生成算法,使得SessionID不可预测。

5.对于暴力破解攻击,建议在尝试3次左右失败之后,使用图形验证码。

存在暴力破解

漏洞描述:

暴力破解的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。常常存在于网站的登录系统中,通过对已知的管理员用户名,进行对其登录口令的大量尝试。

测试方法:

找到网站登录页面。

利用burp对登录页面进行抓包,将其发送到Intruder,并设置其密码参数,如pwd=为变量,添加payload(字典),进行攻击,攻击过程中查看其返回的字节长度,来判断是否成功。

一般情况下,暴力破解有三种形式:

固定账号对密码暴力破解。

在得知账号具有规律性,或者通过某种方式获取到大量账号的前提下,固定密码对账号暴力破解。

使用网上流传的账号密码库进行撞库攻击。

示例:

alt

风险分析:

攻击者一般会使用自动化脚本组合出常见的用户名和密码,即字典,再结合软件burpsuite的intruder功能进行暴力破解。

修复方案:

防止暴力攻击的一些方法如下:

1、账户锁定

账户锁定是很有效的方法,因为暴力破解程序在5-6次的探测中猜出密码的可能性很小。但是同时也拒绝了正常用户的使用。如果攻击者的探测是建立在用户名探测成功之后的行为,那么会造成严重的拒绝服务攻击。对于对大量用户名只用一个密码的探测攻击账户锁定无效。如果对已经锁定的账户并不返回任何信息,可能迷惑攻击者。

2、返回信息

如果不管结果如何都返回成功的信息,破解软件就会停止攻击。但是对人来说很快就会被识破。

3、页面跳转

产生登录错的的时候就跳到另一个页面要求重新登录。比如126和校内网都是这样做的。局限性在于不能总是跳转页面,一般只在第一次错误的时候跳转,但是第一次之后又可以继续暴力探测了。

4、适当的延时

检查密码的时候适当的插入一些暂停,可以减缓攻击,但是可能对用户造成一定的影响。

5、封锁多次登录的IP地址

这种方法也是有缺点的,因为攻击者可以定时更换自己的IP。

6、验证码

验证码是阻止暴力攻击的好方法,但设计不好的验证码是可以绕过的,而且对于特定目标的手工探测来说验证码是没有作用的。

图形验证码不失效

漏洞描述:

有些网站登录框存在图形验证码,防止暴力破解攻击,但是正常的逻辑是前端输入验证码之后进行校验图形验证码的正确性,而后若是为真则进行登录操作,为假则返回验证码输入错误,而使用一次的验证码应该立即失效。然而有些网站验证码可能是可控的,输入一些特殊字符可能就能打到欺骗服务器或验证码使用一次之后并没有及时刷新(所谓的验证码可以被自动识别这个问题,我个人觉得没啥卵用,就不写了)

测试方法:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxsdz.html