### 简要描述: 这系统貌似还没有人提交getshell的. ### 详细说明: 有些国家部委也在用这系统, @南京大汉网络有限公司 你们看着办吧. 0x01 漏洞的文件 /lm/sys/opr_uploadimg.jsp 造成漏洞的部分代码 ``` if(action.equals("upload")){ //构造上传类,传入上传的路径 CommonUploadFile upload = new CommonUploadFile( strDictionary); upload.setM_nLimitsize(50);//设置文件总大小 upload.setM_nFilesize(10);//设置单个文件大小 upload.setM_filetype("gif");//设置允许上传文件类型 //上传操作 boolean b = upload.uploadFile(request); Convert c = new Convert(); //上传成功 if(b){ out.println(" 上传成功!"); String[] files = upload.getAllFileName(); //打印文件名称 for (int i=0;i<files.length;i++){ String filename = files[i]; File file = new File(strDictionary + filename); c.copyFile(strDictionary + filename,strDictionary_img+img); } }else{ out.println(" 上传失败,请检查文件大小和文件类型是否正确!"); } info += "<script>top.buttomFrame.right_frame.location.reload();</script>"; } ``` 其实这段代码表面上看起来安全性还可以,通过 upload.setM_filetype("gif");//设置允许上传文件类型 限制了只能上传gif格式的文件,然而该段代码却有一个严重的逻辑漏洞: c.copyFile(strDictionary + filename,strDictionary_img+img);...
### 简要描述: 这系统貌似还没有人提交getshell的. ### 详细说明: 有些国家部委也在用这系统, @南京大汉网络有限公司 你们看着办吧. 0x01 漏洞的文件 /lm/sys/opr_uploadimg.jsp 造成漏洞的部分代码 ``` if(action.equals("upload")){ //构造上传类,传入上传的路径 CommonUploadFile upload = new CommonUploadFile( strDictionary); upload.setM_nLimitsize(50);//设置文件总大小 upload.setM_nFilesize(10);//设置单个文件大小 upload.setM_filetype("gif");//设置允许上传文件类型 //上传操作 boolean b = upload.uploadFile(request); Convert c = new Convert(); //上传成功 if(b){ out.println(" 上传成功!"); String[] files = upload.getAllFileName(); //打印文件名称 for (int i=0;i<files.length;i++){ String filename = files[i]; File file = new File(strDictionary + filename); c.copyFile(strDictionary + filename,strDictionary_img+img); } }else{ out.println(" 上传失败,请检查文件大小和文件类型是否正确!"); } info += "<script>top.buttomFrame.right_frame.location.reload();</script>"; } ``` 其实这段代码表面上看起来安全性还可以,通过 upload.setM_filetype("gif");//设置允许上传文件类型 限制了只能上传gif格式的文件,然而该段代码却有一个严重的逻辑漏洞: c.copyFile(strDictionary + filename,strDictionary_img+img); 将上传的gif文件通过copyFile函数copy 到strDictionary_img+img,来看看img参数是怎么来的 String img = request.getParameter("img"); 很明显是用户提交的参数,那么用户提交img = XXXXX.jsp shell不就到手了 0x02 漏洞证明 打开http://www.xxxx.gov.cn//lm/sys/opr_uploadimg.jsp 上传任意gif文件,抓包修改img参数,如下 [<img src="https://images.seebug.org/upload/201409/28211840630faf6d4ec79282a0646be89ec651cc.jpg" alt="33.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201409/28211840630faf6d4ec79282a0646be89ec651cc.jpg) 点击GO,即可在images 目录下生成shell.jsp,可成功连接: [<img src="https://images.seebug.org/upload/201409/28212053e78733d16914246b3967c853cc0f248f.jpg" alt="44.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201409/28212053e78733d16914246b3967c853cc0f248f.jpg) ### 漏洞证明: 成功获取到的shell [<img src="https://images.seebug.org/upload/201409/28212053e78733d16914246b3967c853cc0f248f.jpg" alt="44.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201409/28212053e78733d16914246b3967c853cc0f248f.jpg)