Brute Force:(暴力破解)简单来说就是用大量的身份认证信息来不断尝试登录目标系统,如果幸运,将得到正确登录信息(账号与密码)。一般采用字典(还有大量登录信息)的工具进行爆破。
一、手动爆破(借助burpsuite)
1.首先配置好Firefox和burpsuite,打开爆破页面,输入一个随机账号与密码进行捕获。Burpsuite拿到请求:
image.png image.png
2.将请求参数的账号与密码部分设置为payload位置。如下:
image.png
3.在D盘下放置两个txt字典,有两个,一个是user.txt, 一个是passwd.txt,然后里面的内容是如下:
image.png
image.png image.png
4.设置导入:第2个字段同理。
image.png
5.设置flag,如下: (因为错误提示Username and/or password incorrect.),所以字符设置为incorrect。
image.png
6.进行攻击:如图,可看到admin,password的组合是没有incorrect标志,说明是成功的。
image.png
7.试一下在前端:如图成功爆破:
image.png
二、防御陷阱
1、验证码放在前端:
一般会在用户登录页面放置验证码,来防止攻击者自动化脚本攻击。但是如果验证码判断的逻辑是在前端JS,那么这也是可以被绕过的。因为如果用burpsuite捕获到请求,伪造后进行重发包,那么验证码就没作用。
2、后端验证码:可能会出现验证码错误,但用户名密码正确,所以登录了,那么这逻辑也是有问题的。
3、加token的认证:如果token是在前端用户还没有进行认证的情况下,直接返回给前端,比如在一个<input type='hidden'>的标签里,那么这个token只要被获取到,就可以被利用,直接获取到重发包。
三、正确防御
1、设置密码用户名的限制,比如长度必须在8位以上,字母加特殊字符与数字的组合等
2、要有验证码,但验证码要写在后台,逻辑要正确,且不能被猜测
3、要有错误限制,比如连续登录5次密码错误,账号就应该被锁定5分钟这样的
网友评论