0x01 漏洞的文件
/lm/sys/opr_uploadimg.jsp
造成漏洞的部分代码
[php]
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 String filename = files[i]; File file = new File(strDictionary + filename); c.copyFile(strDictionary + filename,strDictionary_img+img); } }else{ out.println(" } info += " "; } 0x02 漏洞证明 打开http://www.xxxx.gov.cn//lm/sys/opr_uploadimg.jsp
上传失败,请检查文件大小和文件类型是否正确!");
[/php]
其实这段代码表面上看起来安全性还可以,通过
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不就到手了
上传任意gif文件,抓包修改img参数,如下
点击GO,即可在images 目录下生成shell.jsp,可成功连接:
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论