“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
(1)随便输入用户名和密码,并用burp进行抓包;
(2)把数据包send to intruder
;
(3)选择cluster bomb
模式,将usename
和password
作为变量;
(4)设置payload,并导入字典,然后进行穷举。
(5)根据length,查看结果,可知:用户名为admin,密码为123456。
(1)客户端request登录页面,后台生成验证码:
(2)校验验证码:
(3)客户端重新刷新页面,再次生成新的验证码:
(4)验证码算法中一般包含随机数,所以每次刷新都会改变。
不安全验证码on client常见问题:
(1)随便输入账号密码,不输入验证码,提示请输入验证码;输入错误验证码,提示验证码输入错误;输入正确验证码,提示账号密码错误。
(2)由于验证码每次会变,我们无法从验证码这块进行暴力破解。查看页面的源码,看一下这个验证码是不是在前端做的,发现验证码是在javascript实现的。
(3)既然验证码是前端做的,可以通过以下方法绕过验证码:
这里,我们先正确填写验证码,再使用burp抓包,然后爆破。
不安全验证码(on server)常见问题:
(1)通过抓包,随便输入账号密码,不输入验证码,提示请输入验证码;输入错误验证码,提示验证码输入错误;输入正确验证码,提示账号密码错误。
(2)验证验证码是否存在不过期的问题,发现验证码可以重复使用。
(3)使用同样的方法进行爆破。
(1)这关没有验证码了,用户名或者密码输错会提示用户名或密码不存在。
(2)抓取两次登录的数据包,然后放到compare
里进行比较,查看二者的区别;
(3)尝试直接用第一/二次的token试试,报crsf token error
;
(4)尝试删除token,发现同样不行;
(5)在返回包里,发现了下一次验证的token,试试能不能绕过验证。事实证明返回包里的token就是下一次验证的token。
(6)使用burp的intrude模块进行爆破,选择pitchfork
。最好知道用户名,因为在pitchfork
模式下,如果你的字典只有100个密码组合,burp只执行100次。
前一个变量的设置跟之前一样,最后token
的设置选择recursive grep
。