原理:
猜密码,将密码进行逐个推算,直到找出真正的密码为止
防御:
1、强制要求输入验证码
2、验证码只能用一次,用完立即过期!不能再次使用。验证码不要太弱。扭曲、变形、干扰线条、干扰背景色、变换字体等。
3、强密码8位以上,数字字符混合。定期更新。登录设定次数锁定IP。不用连续数字字母的弱口令,不跟用户名重复,不用手机号邮箱等明显特征的做密码。
4、多重身份验证,比如密码+短信验证码,
4、大网站最好统一安全验证码,验证码6位以上,可以先用token前期没有在输入错误次数达到后在出现验证码,继续错误在封IP
登录页面也能存在的漏洞
1、SQL注入点和万能密码登录
2、不安全的用户提示,一般提示用户名不存在或密码及验证码错误。
这个提示是对的,如果只提示用户名不存在,可以字典跑用户名,确定好用户名之后在跑密码进行破解。
注册的时候没限制
3、查看登录页面源代码,是否存在敏感信息泄露。
比如源代码有注释密码,或者前端校验一些规则,用bp抓包后重新发送。
密码虽然是加密的,但是改成test就可以直接看到明文密码。
4、不安全的验证码(有服务端和客户端的校验,客户端可以直接抓包删掉,如果验证码是数字的可以用工具直接读取)
5、在注册帐号的时候是否存在不安全的提示(跑出来存在的账户)
6、不安全的密码,在注册帐号的时候,密码没有限制复杂度
7、在暴力破解的时候未限止ip,锁定用户
8、一个帐号可以在多地登录,没有安全提示(手机,电脑等不同地方设备登录都提示不允许同时登录)
9、帐号登录之后,应该具备超时功能(银行2分钟没操作退出有助于保护资金安全)
10、任意无限注册帐号
11、OA、邮件、默认帐号等相关系统,在不是自己注册的情况下,应该在登录之后要强行更改密码
12、逻辑漏洞,任意密码重置
13、越权漏洞,纵向,横向越权
14、数据包含有敏感信息泄露,如cookice
15、不安全的数据传输,密码为明文,未使用https证书(密码要用md5加密)
16、任意文 件下载
破解前准备
1、暴力破解字典,有郊的字典Top100 TOP2000 csdn QQ 163等
2、判断用户是否设置了复杂密码
3、网站是否存在验证码。想办法绕过
4、尝试登录的行为是否有限制。比如要准备上万IP每次用2次就换
5、网站是否双因素认证、Token值。比如银行输入3次就限制
分类
C/S架构:客户端/服务器
用 Hydra、Bruter、X-scan破解,还有超级弱口令检查工具
验证码绕过在客户端:删验证码
Bruter工具破解:只能在英文路径
速度快,可以自定义密码,不同的数据库。http的用BP破解
mysql要开启远程访问
Hydra是linux破解:kali有自带,详见Hydra参数-CSDN博客
B/S架构:浏览器/服务器
用Burp Suit 镜像表单爆破
验证码绕过在服务端:
代码要加上每次销毁验证代码,才会避免下面的一个验证码能破解多个密码进行破解。
php默认24分钟验证码有效
token破解:
token提取后绕过,不能解决暴力破解,只是复杂一点。token主要解决的是CSRF问题
弱验证识别攻击:用pkav
图片识别,根据发包启动返回的长度判断是否登录。
如果验证码识别不了这个办法就不适用