jboss反序列化漏洞与getshell方法学习

0x00 环境搭建

通过vulhub靶场环境外加docker部署环境:https://github.com/vulhub/vulhub,使用这种方法搭建需要存在docker环境和docker-compose环境。

下载vulhub靶场之后通过docker-compose up -d读取yml文件dump拉取docker环境,可以通过docker exec -it 镜像ID /bin/bash进入docker容器。

0x01 jboss配置文件信息

1、jboss的相关配置信息

账号密码信息:/opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties

相关配置信息路径:/opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF

0x02 漏洞信息与利用

1、JMX Console未授权访问:由于JBoss中/jmx/HtmlAdaptor路径对外开放,未进行身份验证或者使用了弱口令进行身份验证,导致攻击者可以进入jmx控制台,并在其中执行任何功能。

影响版本:jboss4.x以下

漏洞利用:Jmx存在弱口令或者未授权访问。

通过弱口令admin/admin登录jmx控制台,deployment项目:jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment:type=DeploymentScanner,flavor=URL

jboss反序列化漏洞与getshell方法学习_第1张图片

通过addURL()部署一个远程的war包到本地:

首先需要在vps上放置一个木马文件,并且打包成war包。然后添加部署:

jboss反序列化漏洞与getshell方法学习_第2张图片

部署之后:

jboss反序列化漏洞与getshell方法学习_第3张图片

查看是否部署成功:在jboss.web.deployment选项查看:

jboss反序列化漏洞与getshell方法学习_第4张图片

 

部署成功,可执行命令:

jboss反序列化漏洞与getshell方法学习_第5张图片

不过部署的时候遇到问题,有时候可以成功,有时候失败404。

2、CVE-2007-1036:漏洞原因:还是利用jmx控制台未授权访问或者弱口令

影响版本:jboss4.x以下

漏洞利用:

jboss反序列化漏洞与getshell方法学习_第6张图片

Invoke之后会将p1参数创建war包,把p2和p3两个参数加起来当作文件名,p4是文件写入的内容。

部署成功:命令需要经过编码。

jboss反序列化漏洞与getshell方法学习_第7张图片

3、CVE-2010-0738:高于4.x的jboss禁止上述两种利用方式,但是可以通过修改HTTP请求方式进行绕过

jboss反序列化漏洞与getshell方法学习_第8张图片

5、CVE-2015-7501:漏洞影响:JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java⽂件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利⽤该漏洞执⾏任意代码。

影响版本:JBoss AS 4.x及之前版本

漏洞利用:路径:/jbossmq-httpil/HTTPServerILServlet

先找个工具试试:

jboss反序列化漏洞与getshell方法学习_第9张图片

原始的利用方法:

jboss反序列化漏洞与getshell方法学习_第10张图片

  1. Jboss5.x和jboss6.x的控制台变化:

这两个版本的jboss不再通过jmx-cosole进行war包的部署,而且去除web-console,添加admin-console,可以通过admin-console进行war包的部署。
配置文件路径:jboss/server/default/conf/props/jmx-console-users.properties

同时需要注意jmx-console和admin-console的配置文件在jboss/common文件夹下。

6、控制台弱口令或未授权访问:根据jboss5和6的新特性需要通过admin-console进行war包的部署。首先进入admin-console,然后找到Web Application选项新增一个war包。

jboss反序列化漏洞与getshell方法学习_第11张图片

War包的名字可能会造成部署出错,之前用的1.war然后显示部署错误,改成test.war部署成功:

jboss反序列化漏洞与getshell方法学习_第12张图片

访问shell:

jboss反序列化漏洞与getshell方法学习_第13张图片

  1. CVE-2017-12149反序列化漏洞

漏洞描述:该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。

该漏洞出现在**/invoker/readonly**请求中,服务器将用户提交的POST内容进行了Java反序列化,导致传入的携带恶意代码的序列化数据执行。

影响版本:Jboss5.x/Jboss6.x

漏洞路径:/invoker/readonly报错500

使用漏洞工具检测:

jboss反序列化漏洞与getshell方法学习_第14张图片

使用joaomatosf进行检测,确实存在漏洞。

7、JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)

漏洞描述:这是经典的 JBoss 反序列化漏洞,

JBoss在 /invoker/JMXInvokerServlet 请求中读取了用户传入的对象,然后我们可以利用 Apache Commons Collections 中的 Gadget 执行任意代码。

由于JBoss中invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件⽀持Java反序列化

影响版本:jboss 6.x

8、EJBInvokerServlet CVE-2013-4810 反序列化漏洞

此漏洞和CVE-2015-7501漏洞原理相同,两者的区别就在于两个漏洞选择的进行其中JMXInvokerServlet和EJBInvokerServlet利用的是org.jboss.invocation.MarshalledValue进行的反序列化操作,而web-console/Invoker利用的是org.jboss.console.remote.RemoteMBeanInvocation进行反序列化并上传构造的文件。

你可能感兴趣的:(渗透测试)