1,基于表单的暴力破解
先随便输入字符尝试登陆,看回显,页面没有出现太大变动,只是多了一行登陆错误的提示。
直接显示登陆错误,那么可以尝试通过抓包来抓取表单内容。
将包发给测试器,使用集束炸弹来进行多个点的组合爆破,圈选用户名(username)与密码(password)的值,之后可以向这两个位置添加负载了。
这里将提示的用户名添加到有效载荷位置一(一共是三个),将密码字典添加到位置二。
由于只添加三千多条密码,这样只需要跑一万多次 ,一分钟不到就可以跑出来(实战中的密码字典就非常多了)。
可以在收到的数据长度可以看出有三个数据长度明显不一样的组合,其数据包长度为35077,而其他的为35101,在登陆页面测试下这三个组合,显示登陆成功。
2,验证码绕过(on server)
添加了一个验证码,输错了会提示验证码错误同时替换掉验证码,先抓包看看。
抓到包了,看下报文,vcode所传输的参数应该就是验证码了,改成正确验证码发包试试。
回显页面只提示用户名或者密码错误,换个用户名,依旧只显示用户名或者密码错误,那么这个验证码只能本地验证,那么后面就基本与第一题一样了,圈选用户名与密码经行爆破。
爆出结果。
3,验证码绕过(on client)
这题,我们输错验证码会跳出一个提示弹窗。
这样我们似乎不能直接抓到包,试一试输入正确的验证码,页面正常回显(没有跳出弹窗了),这个时候,在抓一次包试试。
在输入正确验证码后成功抓到包,那么就测试下这个验证码是否可以持续使用了。
经过测试,在重发器中更改用户名与密码不会使验证码失效,那么基本步骤也与之前一样了,添加载荷,爆破即可。
成功爆破出来。
4,token防爆破?
页面与之前没多少区别,尝试抓包,发现不同的是包里面多了一串token的数据,token可以验证身份与信息完整性,那不动token,来看看这个包的回显如何?
经过重发测试,发现后续的回显都是基本页面了,看来要保证每一次token的值都符合服务器发送的数值,那么尝试找到每一次变化的token值,在响应包中搜索token可以找寻到这次的token值。
那么在爆破时,我们可以设置两个载荷,圈上密码与token的数值,用户名不变使用admin,攻击工具使用音叉,然后需要设置token的值了。
在选择页面找到Grep-Etract,点击添加。
搜索token ,找到后面的value值,选中它,先复制,然后保存即可,就会自动生成相应位置的表达式。
然后,我们在token的有效载荷中设置递归搜索 ,添加之前的表达式,这样可以使每一次测试后响应包中token值都替换到下一次测试中的token,向第一个请求负载粘贴之前复制的token即可。
由于每次测试token都会变化,使用单线程来防止出错。
之后可以攻击测试了,可见结果中有一个字节长不一样的组合,登陆页面测试密码,成功登陆。
再这题有个问题,我先使用集束炸弹来同时爆破用户名与密码,但是之后的token无法形成递归,会出现一段token被多次使用,至于出现这种情况,暂且不知如何解决,只好使用音叉来逐步爆破了。