<pre class="lang-java" data-lang="java">//在/jcms/setup/opr_licenceinfo.jsp文件中
//获取Session中cookie_username的值,赋值给strUser
String strUser = (String)sessions.getAttribute("cookie_username");
// 判断strUser值 是否为空?
if( strUser == null || strUser.trim().length() == 0 ) {
out.println('请先登录!')
return;
} //如果为空,则未登录,直接返回
// 如果不为空,说明已经登录
</pre><p>可以看到这里之判断session中是否有cookie_username这个元素, 不存在的话就判断为未登录用户,否则就判断为已登录用户</p><p>单单这段代码本身是没有问题的, 开发者会觉得session在本地所以是安全的?</p><p>但是恰巧大汉网络的java servlet中存在漏洞代码可以往session中添加特定名称元素</p><pre class="lang-java" data-lang="java">/VerifyCodeServlet 获取请求参数 var,赋值给 strVar
String strVar = Convert.getParameter(request, "var", "");
if(strVar == null){
request.getSession().setAttribute("COMPLAT", str_code); // 将随机码保存到SESSION中
}else{
// 如果 strVar 不为空的话,创建 strVar 为名称的 SESSION 值
request.getSession().setAttribute(strVar, str_code); // 将随机码保存到SESSION中
}
所以通过参数 var, 就可以控制SESSION的名称的创建
</pre><p>以上通过调用该servlet就可以创建名称为cookie_username的session元素达到绕过验证的目的</p><p>参考链接:<br>1. <a href="http://www.wooyun.org/bugs/wooyun-2015-0107138" target="_blank">乌云漏洞库(漏洞来源)</a></p>
全部评论 (4)