首页 > 其他分享 >jboss JMXInvokerServlet反序列化漏洞

jboss JMXInvokerServlet反序列化漏洞

时间:2023-07-13 20:31:38浏览次数:46  
标签:Transformer shell gadget JMXInvokerServlet transform jboss 序列化

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 JMXInvokerServlet反序列化漏洞_反序列化_02

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

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

此时可利用ysoserial来反弹shell

生成反弹shell命令

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

进行base64位编码


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

生成poc3.ser文件

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

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

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


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


修复建议:

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

升级jboss到最新版本


标签:Transformer,shell,gadget,JMXInvokerServlet,transform,jboss,序列化
From: https://blog.51cto.com/u_16164891/6715919

相关文章

  • 在Unity3D中使用ScriptableObject进行序列化
    ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法1.usingUnityEngine;......
  • Java反序列化:URLDNS的反序列化调试分析
    URLDNS链子是Java反序列化分析的第0课,网上也有很多优质的分析文章。笔者作为Java安全初学者,也从0到1调试了一遍,现在给出调试笔记。一.Java反序列化前置知识Java原生链序列化:利用Java.io.ObjectInputStream对象输出流的writerObject方法实现Serializable接口,将对象转化成字节......
  • 解决redis hash序列化报错的具体操作步骤
    RedisHash序列化报错的解决方法1.问题背景在使用Redis时,有时候会遇到Hash序列化报错的问题。这种问题通常是由于Redis中存储的数据类型与操作的数据类型不一致导致的。在下面的文章中,我将为你详细介绍解决这个问题的步骤和相应的代码示例。2.解决步骤步骤操作1.查......
  • go语言序列化和反序列化
    序列化需求内存中的map、slice、array以及各种对象,如何保存到一个文件中?如果是自己定义的结构体的实例,如何保存到一个文件中?如何从文件中读取数据,并让它们在内存中再次恢复成自己对应的类型的实例?要设计一套协议,按照某种规则,把内存中数据保存到文件中。文件是一个字节序列,所......
  • web中间件漏洞之(3)fastjson反序列化漏洞
    引言fastjson可以将Java对象序列化为json格式,也可将json反序列化为Java对象。在请求包里面中发送恶意的json格式payload,fastjson在处理json对象时使用了autotype机制,允许在反序列化时通过@type指定反序列化的类,调用指定类的set和get方法。攻击者可以通过rmi或ldap服务,将ldap......
  • 序列化的高级用法之source
    一、可以取别名book_name=serializers.CharField(source='name')book_name为前端可以看到的字段值,name是对象真实的属性。注意:别名和真实属性不能相同二、可以跨表关联查询publish_name=serializers.CharField(source='publish.name')必须有关联关系,book模型和publis......
  • ctfshow刷题(Java反序列化)
    CTFshowJava反序列化web846urldns链importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.ObjectOutput;importjava.io.ObjectOutputStream;importjava.lang.reflect.Field;importjava.net.URL;importjava.util.Base64;i......
  • java反序列化漏洞原理
    1.首先是序列化的过程序列化:ObjectOutputStream类-->writeObject()将对象进行序列化,把字节序列写到一个目标输出流中.ser2.反序列化反序列化:ObjectInputStream类-->readObject()从一个源输入流中读取字节序列,再把它们反序列化为一个对象 如果序列化字节序列内容......
  • C# 序列化大小写 序列化对象为大小写 JsonConvert.SerializeObject
    关于C#序列化Json对象框架:.Net插件:Newtonsoft.Json最近有人问我序列化对象还区分大小写?我当时心想我都是通过Bejson格式化然后转换为C#类然后直接复制。没有关心过序列化成什么大小写。因为这样的话可以保持一致。直到有人问我才自己研究了一下。如下:usingNewtonsoft.......
  • 10redis列表操作,其他操作,redis管道,django中使用redis,django缓存,序列化json和pickle,cel
    字符串和字节转换的两种方式#字符串和字节转换的两种方式 -decode,encode-直接类型转换-bytes格式的16进制,2进制,10进制的显示#字符串需要用encode,bytes格式需要用decode,但是有时候忘了#可以直接进行强转b1=bytes(s,encoding='utf-8') print(......