1.目的:获取应用系统的认证信息。
2.实现过程:使用大量应用系统的认证信息在认证端口尝试登陆,知到产生正确结果
3.使用类型:web应用系统没有采用或者采用了比较弱的认证安全策略
a:是否要求用户设置复杂的密码;
b.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
c.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
d.是否采用了双因素认证;
4.常见工具:burpsuite--repeater(重发器板块),intruder(测试器板块)
5.常见题目:
(1).pikachu--基于表单的暴力破解:
问题:常用表单数据
(2).pikachu--验证码绕过(on server)
前语:验证码三大方面的漏洞:可验证码错误->做了校验;验证码不能为空->做了校验;验证码过期->安全隐患
验证码实现原理:
客户端request登录页面,后台生成验证码:
1.后台使用算法生成图片,并将图片response给客户端;
2.同时将算法生成的值全局赋值存到SESSION中;
校验验证码:
1.客户端将认证信息和验证码-同提交;
2.后台对提交的验证码与SESSION里面的进行比较;
客户端重新刷新页面,再次生成新的验证码:
验证码算法中一般包含随机函数,所以每次刷新都会改变;
找到后用第一类题的方法爆破。
产生的原理:一般提交的验证码会被与存储在服务器session中的验证码做验证,但是这道题由于在验证完成后,没有及时的销毁session,使用过的session值仍然可以重复使用,所以产生了可利用漏洞。
剩下与第一题同
(3).pikachu--验证码绕过(on client)
同样未作绕过,和验证码无关,与(1)同
(4).pikachu--token防爆破
前语:认识token:
(1)Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
(2)Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
(3)使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮
如果我们没有这个token值的话,无法去请求得到想要的数据。
随意输一个值,注意抓包后有token标志。
token爆破适合运用于已知账号,然后爆用户密码,故要先假设username,即uername那里不添加payload位置符。
如果value在后续失效(token是会实时变化的),就点击refetch response再出一个值
第一个payload set为password的,直接像第一题一样输入就行
设置线程的目的:防止Burp爆破时出现Error:recursive grep payloads cannot be used with multiple request threads