安恒玄武盾也有拦截不了的漏洞--逻辑漏洞
安恒玄武盾也有拦截不了的漏洞--逻辑漏洞
因为大部分的扫描器是无法直接扫描出逻辑漏洞,所以玄武盾自然也就无法拦截逻辑漏洞
逻辑漏洞通常需要对JS框架进行分析,最终分析出逻辑的走向,才能判断如何发掘逻辑漏洞
上图为一个短信发送接口
这时候可以利用的逻辑可以分为很多种
一种是直接正常请求去获取用户参数
一种是输入错误的验证码,进行逻辑绕过
一种是通过逻辑触发XSS
还有一种是非正常的请求获取用户参数
思路可以是很多种,前提是利用的危害是什么
这时候利用response修改的包,玄武盾是根本无法拦截的
if (wait == 0) { obj.attr("disabled", false); obj.val("重新发送"); } else { obj.attr("disabled", true); obj.val("重新发送(" + wait + ")"); wait--; setTimeout(function() { time(obj,wait) }, 1000) } } function sendsn(obj,type,tid) { time(obj,30); var scget = new GetData(context+"/PassWordAction.SendMessage.act?type="+type+"&tid="+tid); scget.OK(function(m){ if(m.flag != "00000"){ if(m.flag=="-1" && type==1){
这个一段短信判断的代码
从这里我们可以明确的发现,wait和flag参数 分别控制重新发送和发送
但是我们在源代码,找了很久也没有发现新密码的验证,这时候,思路是回到第一步
//定义请求成功事件 get.OK(function(u){ if(u.code == '0000'){ window.location=u.redirect; } else { if(u.code == '9001') { $("#tip1").text("帐号不存在!"); } else if(u.code == '9002') { $("#tip2").text("验证码错误!"); } else if(u.code == '9003') { $("#tip2").text("验证码已过期!"); } else if(u.code == '9004') { $("#tip1").text("帐号不能为空!"); } $("#verify").attr("src",context+"/VerifyServlet?id=accountver_verify&"+Math.random()); }
这里只是简单定义了code回显的状态,实际上可以看到0000就为成功
反之就会出错,接着往下看
$("#verify").attr("src",context+"/VerifyServlet?id=accountver_verify&"+Math.random());
这里定义了一个verify取验证的随机方法
仔细分析是需要先触发发送事件
也就是这里
ekt/PassWordAction.SendMessage.act?type=1&tid=undefined&_=1591724167419
这段参数必须触发一次发送!
因为json调用,所以需要发送,获得一个get的json方法,接着才是
接着才是POST的 json方法去修改
到了这一步也就意味着逻辑绕过成功了
精准覆盖各类 Web 应用攻
精准覆盖各类 Web 应用攻击
下一篇 >>