jmxinvokerservlet反序列化


漏洞描述:

JBOSS在/invoker/jmxinvokerservlet请求中读取了用户传入的对象,可利用apache commons collections中的gadget执行任意代码


CommonCollection Gadget主要是由ConstantTransformer,InvokerTransformer,ChainedTransformer构成。gadget主要通过Transformer接口的transform方法,对输入的对象做变换。ConstantTransformer不会做任何变换,只会返回类在实例化时传入的对象,InvokerTransformer会对类在实例化时传入的参数,通过反射去调用,ChainedTransformer将所有的Transformer连接起来,上一个Transformer的transform方法的结果,作为下一个Transformer的transform方法的参数。这样就完成java反序列化的gadget


漏洞复现:


打开环境:

jboss JMXInvokerServlet反序列化漏洞_JBOSS反序列化

jboss JMXInvokerServlet反序列化漏洞_实例化_02

访问/invoker/jbossInvokerServlet会出现下载文件的弹窗

jboss JMXInvokerServlet反序列化漏洞_实例化_03

此时可利用ysoserial来反弹shell

生成反弹shell命令

jboss JMXInvokerServlet反序列化漏洞_反序列化_04

进行base64位编码


jboss JMXInvokerServlet反序列化漏洞_JBOSS反序列化_05

生成poc3.ser文件

jboss JMXInvokerServlet反序列化漏洞_反序列化_06

开启监听端口并且成功反弹shell

jboss JMXInvokerServlet反序列化漏洞_实例化_07


jboss JMXInvokerServlet反序列化漏洞_JBOSS反序列化_08


修复建议:

禁止将Jboss的JMXInvokerServler接口(默认8080端口)以及jboss web console向外开放

升级jboss到最新版本