### 简要描述:
管理后台权限绕过,进入后台后轻松GetShell http://www.wooyun.org/bugs/wooyun-2015-0107138 矿主曾经提交了大汉的某个getshell的漏洞,但是并不完全,我将xxgk里涉及到后台绕过getshell的补充完整。都是没有提交过的。
### 详细说明:
1.http://xxx/xxgk/jcms_files/jcms1/web1/site/zfxxgk/ysqgk/que_code.jsp,que_code.jsp代码如下:
```
<%@page import="jcms.util.ValidateCode"%> <% String sessionId = request.getParameter("sessionid"); out.clear(); ValidateCode code1 = new ValidateCode(); if(sessionId==null) { sessionId = ""; } code1.setSessionName(sessionId); code1.getValidateCode(request,response); %>
```
ValidateCode.class文件,函数setSessionName,将this.sessionname 值设置为参数sessinid传入的值
[<img src="https://images.seebug.org/upload/201511/022251591c100d478ff9759838cb782f603f2a3e.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201511/022251591c100d478ff9759838cb782f603f2a3e.png)
ValidateCode.class文件,函数getValidateCode,e将this.sessionname 作为session,值为sRand。所以通过参数sessionid,就可以控制SESSION的名称的创建,从而利用创建任意的SESSION值绕过验证。
[<img src="https://images.seebug.org/upload/201511/0222521081f4c2af4180ba9d538390730ecbc89c.png" alt="01.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201511/0222521081f4c2af4180ba9d538390730ecbc89c.png)
效果:以某政府网站为例
[<img src="https://images.seebug.org/upload/201511/0721303558a8a366ee4abaacd9b80fea296a6757.png" alt="13.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201511/0721303558a8a366ee4abaacd9b80fea296a6757.png)
[<img src="https://images.seebug.org/upload/201511/072131213933b3eb0428e97e68402eb05e5d4c3e.png" alt="14.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201511/072131213933b3eb0428e97e68402eb05e5d4c3e.png)
2、http://xxx/xxgk/jcms_files/jcms1/web1/site/zfxxgk/ysqgk/sendcode.jsp?webid=2&destnum=cookie_username sendcode.jsp代码中第16行,先将destnum参数值赋值给变量destnum,第29行创建destnum为名称的SESSION值,所以通过参数destnum,就可以控制SESSION的名称的创建,从而利用创建任意的SESSION值绕过验证
```
String destnum = Convert.getParameter(request, "destnum", "", true, true); // System.out.println("手机号码为"+destnum+"-------;验证码为"+validatorcode); //3.调用短信接口,发送短信 SendMsmBLF blf = new SendMsmBLF(); boolean b = blf.isSendAgain(destnum); if(b){ //表示在次发送 String result = blf.sendSms(webid,destnum,validatorcode); //1:表示发送成功,0:表示发送失败 if("1".equals(result)) { request.getSession().setAttribute("destnum", destnum); request.getSession().setAttribute(destnum, validatorcode); out.print("1");
```
效果:以某政府网站为例
[<img src="https://images.seebug.org/upload/201511/072126149fa541c98c99b33f3dfc3a88934b0f4e.png" alt="11.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201511/072126149fa541c98c99b33f3dfc3a88934b0f4e.png)
[<img src="https://images.seebug.org/upload/201511/072127264cbc5602326cb7b071ab037c06ef5b0d.png" alt="12.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201511/072127264cbc5602326cb7b071ab037c06ef5b0d.png)
getshell的方法参考我之前提交的漏洞 http://wooyun.org/bugs/wooyun-2014-073992
### 漏洞证明:
详细说明中已经指出详细的出问题的地方,请及时修改。
暂无评论