好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SinaEditor二次开发JSP版本上传漏洞简单分析 - 网站

0×00 SinaEditor简介 0×01 漏洞描述 0×02 漏洞利用 0×03 漏洞分析 0×04 漏洞修复   作者:itleaf   注:本人初学者,分析有误处还请指正   0×00 SinaEditor简介   SinaEditor是基于新浪博客编辑器的开源编辑器。您可以用它来编辑富文本内容。   编辑器的核心是一个执行队列的调度系统,加入插件来实现功能,并通过事件来驱动编辑器的运行。我们对事件进行了一次封装,有效的解决了匿名事件函数不能回收的问题,减少内存占用的情况。   特性   所有的功能基于插件方式编写。可以自由配置功能。 提供了Range的API。对IE的text range进行了标准的兼容及扩展,降低插件编写难度。 支持外观修改。可通过在修改或添加极少代码的情况下,让编辑器的呈现变得更个性化。 更多参考此处http://code.google测试数据/p/sinaeditor/   0×01 漏洞描述   SinaEditor为开源web编辑器,原为asp版本,有人再开发得到JSP版本,我分析的正是个存在漏洞的版本。 该版本存在上传漏洞,导致 黑客 直接上传jsp webshell成功入侵web服务器。   0×02 漏洞 利用       0×03 漏洞分析   能力和精力有限不能对其.class文件进行反汇编分析,以下代码作简要注释 漏洞代码   <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.text.SimpleDateFormat"%> <%@ page import="java.io.File"%> <%@ page import="java.util.*"%> <%@ page import="javazoom.upload.*"%> <%@ page import="uploadutilities.FileMover"%> <%@ page errorPage="ExceptionHandler. jsp " %> <head> <meta http-equiv="Content-Type" content="text/ html ; charset=utf-8"> </head> HdhCmsTest2cto测试数据 <% request.setCharacterEncoding("utf-8"); FileMover fileMover = new FileMover(); UploadBean upBean = new UploadBean(); MultipartFormDataRequest mrequest = null; Hashtable files = null; if (MultipartFormDataRequest.isMultipartFormData(request)) { mrequest = new MultipartFormDataRequest(request,null,100*1024*1024, MultipartFormDataRequest.COSPARSER,"UTF-8"); files = mrequest.getFiles(); } String sWebRootPath = request.getRealPath("/"); String sPath=sWebRootPath+"upload\\Image"; int iFileCount = 0; String sServerFileName=""; String sLocalFileName = "";// sLocalFileName sServerFileName应该都是结构体 if ( (files != null) && (!files.isEmpty()) ) { iFileCount = files.size(); UploadFile file = (UploadFile) files.get("file1"); sLocalFileName=file.getFileName();//取得本地文件 int ii= sLocalFileName.indexOf(".");    //取得本地文件.及其后面的所有字符 String sExt = sLocalFileName.substring(ii,sLocalFileName.length()); //此处调用sLocalFileName.substring //其功能应该是把.及其以后的文件进行判断,判断成功即得到其后缀 java.util.Date dt = new java.util.Date(System.currentTimeMillis()); SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS"); sServerFileName= fmt.format(dt); sServerFileName =sServerFileName + sExt; //重新构成服务器文件名 //年月日时间+随机数+后缀 File dir =new File(sPath); if (!dir.exists()){ dir.mkdirs(); } upBean.setFolderstore(sPath); upBean.setBlacklist("*.jsp"); //此处调用upBean //大致意思是判断.及其以后是否与.jsp格式匹配,一样即禁止上传,否则都通过 //由于是jsp环境,此处判断.jsp也无大碍,但是他却忽略了 windows 的漏洞,解析漏洞等 //绕过单单与.jsp判断的方法真是多了去了 upBean.addUploadListener(fileMover);   fileMover.setNewfilename(sServerFileName);   upBean.store(mrequest, "file1");   out.println("<script>window.parent.LoadIMG('/upload/Image/"+sServerFileName+"');   </script>");  } // HdhCmsTest2cto测试数据 此处/upload/Image难道作者在抄代码时也没弄明白?  }  %>     0×04 漏洞修复   在第31行末尾添加如下代码   if(sLocalFileName.contains([.jsp])){   return ;   }   此为针对此版本编辑器图片上传漏洞的临时解决方案       摘自itleaf’s blog http://HdhCmsTestitleaf.info/?p=189

查看更多关于SinaEditor二次开发JSP版本上传漏洞简单分析 - 网站的详细内容...

  阅读:39次