写出一个网站登录的地方有那些漏洞,用自己的语言做一个总结。
1、 用户是否设置了复杂的密码
2、网站是否存在验证码
3、 网站尝试登录的行为是否有限制
4、 网站是否双因素认证(一般在管理后台登陆使用)
5、 网站是否设置了Token值
6、提示用户名错误或者提示密码错误会泄露信息(真确的应该为提示用户名或密码错误)
7、注册账号时可以批量注册账号
8、 修改密码时不需要提供旧密码
9、注册用户时不存在唯一性可以注册多个同名账号
10、 密码未加密明文传输
11、 源代码框架存在密码
C/S与B/S的结构区别:
硬件环境不同,C/S通常是建立在专用的网络上,小范围的网络环境。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行;
安全要求不同,C/S结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强;而B/S结构面向的范围广,所以安全性比较低;
系统维护不同,B/S结构维护升级比较简单,而C/S结构维护升级相对困难。
2、完成(b/s)(浏览器/客户端)验证码暴力破解(on client、on server、Token)三个实验
on server:我们可以看见当我们输入错误的验证码时验证码输入错误
on server常见问题:验证码在后台不过期,导致长期使用(php默认session是24分钟过期);验证码校验不严格,逻辑出现问题;验证码设计的太过简单和有规律的被猜解
当我们正确的时候提示我们账号或密码错误所以我们可以去爆破验证码并没有被替换
on client:常见问题:不安全的前端js实现验证码;不安全的将验证码在cookie中泄露;不安全的将验证码在前端源代码中泄露
我们可以看到我们抓包输入错误的验证码并没有提示验证码错误而提示用户名或密码错误因为这是客户端验证只是欺骗前端我们可以直接把验证码去掉进行爆破
Token:由于token值输出在前端源代码中,容易被获取,因此也就失去了防暴力破解的意义,一般Token在防止CSRF上会有比较好的功郊。
我们使用音叉攻击注意:线程数设为1;Grep-Extract设置好开始token"value=" 结束为"
/> ;有郊载荷设为递归搜索
"token" value="
3、完成验证码识别实验
因为我们的使用工具还不能抓包所以
1.Burp抓包,然后复制URL、数据包到Pkav。
2. 设置密码标记、验证码标记、配置、加载外部字典、配置验证码、发包。
4、完成Bruter、hydra对smb、ssh、mysql等进行密码暴破
Bruter(使用字典时不能有中文目录)
Bruter对mysql破解
Bruter对mysql破解:(mysql不能使用ip地址连接)所以我这里用本地连接
Bruter对ssh破解
hydra对smb、ssh、mysql破解
对smb破解:
# hydra -l administrator -P top100.txt 192.168.0.102 smb
对ssh破解1.破解ssh:
# hydra -l 用户名 -p 密码字典 -t 线程-vV -e ns ip ssh
# hydra -l 用户名 -p 密码字典 -t 线程-o save.log -vV ip ssh
root@kali:~# hydra -L user.txt -P top100.txt -t 1 -vV -e ns
-o save.log 192.168.0.109 ssh
对mysql破解
root@kali:~# hydra -L user.txt -P
top100.txt -t 2 -vV -e ns -o save.log 192.168.0.113 mysql
5、写出暴力破解及验证码安全防范
1. 密码长度8位及以上。
2. 不允许以自己的手机号码、QQ、邮箱等关键“特征”为密码。
3. 用户名与密码不能有任何联系,如用户名为“admin”,密码为“admin888”。
4. 密码密码复杂度要求:字符、大小写、数字等。
5. 设置验证码过期时间、使用了马上失效等,加大验证码复杂度:颜色干扰、符号干扰等。
6有时间的同学看一下http://drops.leesec.com/#!/drops/525.%E9%AA%8C%E8%AF%81%E7%A0%81%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98%E6%B1%87%E6%80%BB
看一下验证码总结文章,可以结合这个站http://wooyun.2xss.cc/ 查看攻击过程