导航:首页 > 编程语言 > java反序列化漏洞360

java反序列化漏洞360

发布时间:2023-01-17 03:49:47

java反序列化远程命令执行漏洞怎么检测

可以参考这篇文章:http://www.freebuf.com/vuls/86566.html

本人虽然也有一定的研究,但不深入就不献丑解说了。

可供下已发现的一些影响版本

weblogic:
- 9.2.3.0
- 9.2.4.0
- 10.0.0.0
- 10.0.1.0
- 10.0.2.0
- 10.2.6.0
- 10.3.0.0
- 10.3.1.0
- 10.3.2.0
- 10.3.4.0
- 10.3.5.0
- 12.1.1.0

JBOSS:

JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10
JBoss AS (Wildly) 6 and earlier
JBoss A-MQ 6.2.0
JBoss Fuse 6.2.0
JBoss SOA Platform (SOA-P) 5.3.1
JBoss Data Grid (JDG) 6.5.0
JBoss BRMS (BRMS) 6.1.0
JBoss BPMS (BPMS) 6.1.0
JBoss Data Virtualization (JDV) 6.1.0
JBoss Fuse Service Works (FSW) 6.0.0
JBoss Enterprise Web Server (EWS) 2.1,3.0

此外还有 WebSphere,Jenkins 和 OpenNMS等,凡是使用了commons-collections.jar包的都会收到影响,此漏洞算是继STRUTS2漏洞,心脏滴血漏洞后的一个重量级漏洞,建议尽快修补

❷ 如何查出漏洞weblogic java反序列化漏洞补丁存在绕过风险

漏洞抄是指应用软件或操作系统软件在逻辑设计上的缺陷或在编写时产生的错误,
这个缺陷或错误可以被不法者或者电脑黑客利用。修补漏洞,可以用腾讯电脑管家,
修复漏洞,强大智能的漏洞修复工具,全面修复微软系统漏洞和第三方软件漏洞。

❸ xmldecoder反序列化漏洞分析

java提供了很多xml文档解析的类库,包括dom4j,domj,SAX等库,可以进行xml文档的解析,这些库的使用不当,会导致XXE漏洞的发生,但是这些类库中,SAX库允许自己去定义整个xml文档处理的handler,可以在xml文档解析的过程中,对解析出来的节点进行一些操作

而为java反序列化定义的handler,会导致一些java反序列化的问题的发生

poc:

获取到文件内容之后,用XMLDecoder解析,在下面调用了readObject方法

进入readObject方法中

这里对文档进行了解析,而XMLDecoder.this.handler其实就是
DocumentHandler

这个handler很重要,所有反序列化的操作都是在这个类中进行的

之类通过SAXParserFactory实例化了一个SAXParser的实例,并且调用了其中的parse方法

复现过java XXE漏洞的师傅应该看见过SAXParser的用法,它允许用户自己去定义处理文档的handler

可以看到,用户可以将自己定义的Handler,只要这个类继承了DefaultHandler,可以看一下官网的例子:

自己的Handler可以在解析的不同阶段,进行不同的操作,这个特点就让xml文档成为了可以进行java序列化的载体,DocumentHandler这个handler就是处理xml文档反序列化的

接下来,调用SAXParser对xml文档进行解析,在对一些属性的设置以后,真正的解析流程在XML11Configuration这个类中的parse方法中开始

首先是对实体的解析:

因为我们的文档中并没有xml实体,所以这一步不用关注

之后进行文档的解析

进入到scanDocument函数中

这里通过next函数,解析了文档,并且返回当前解析的状态,整个文档的具体解析过程在这个类的ContentDriver类中,里面的解析过程很复杂,具体的解析过程不要过于关注,重点在解析出来的结果的处理上

当发现当前的文档为根节点的时候,调用fContentDriver的next方法,在这里进行ROOT节点的解析

一直到的scanStartElement方法中

在之类对文档进行解析,调用scanName解析出来第一个节点名为:java

之后寻找java节点的结束字符在哪,并且解析出来中间的所有属性

在解析结束以后,会将这个节点中的所有属性添加到fAttributes中

最后来到startElement函数中,可以认为fElementQName就是我们的节点名称,fAttributes就是这个节点中所有属性组成的一个字典

最后调用到DocumentHandler的startElement才到真正反序列化的地方

到这里,一个节点的解析就算结束了,头都看大了,先附上一张调用栈,再到DocumentHandler中看具体的反序列化过程

在最后,调用了DocumentHandler.startElement函数,我们进入看一下

在这里会根据不同的节点实例化不同的节点Handler

this.handlers中寻找java节点对应的handler,可以看一下this.handlers里面所有的handler都是什么,它是一个HashMap,在属性中有定义 private final Map<String, Class<? extends ElementHandler>> handlers = new HashMap();

在构造方法中,对handlers进行了赋值

这也就是XMLDecoder所有支持的节点类型,不同的节点会调用不同的ElementHandler进行处理,我们的java节点,应该是被JavaElementHandler处理的

回到startElement的方法中

在实例化JavaElementHandler类以后,调用了setParent将上一次的handler保存,这一步相当于将每一个节点的处理类串成了一个链

这一步获取到所有的节点属性,并且调用处理handler自己实现的addAttribute方法,可以看一下JavaElementHandler的addAttribute

这里通过我们设置的class属性的内容,获取了对应的类,也就是java.beans.XMLDecoder类的class

之后调用对应handler的startElement,而java的handler没有操作,所以进行下一个节点的解析

下一个节点是object,具体解析流程就不再分析

object对应的Handler为ObjectElementHandler,可以发现,startElement中的重点其实就是每个Handler的addAttribute方法和startElement方法

调用父类的addAttribute方法

这一步获得了ProcessBuilder的class

处理handler:ArrayElementHandler
addAttribute:

这里定义了数组元素的类型和数组大小

startElement:

这里实例化了一个数组元素,并且返回了一个ValueObject对象

void节点比较特殊,void节点其实是object节点的一个子类,它本身没有定义什么方法

我们可以不用过多的关注void节点的处理规则,只需要理解它的作用就是声明一个变量就可以,可以这么理解:

在一个节点处理结束以后,会由内向外依次调用每个节点的endElement方法

比如我们的poc

在解析完touch的string节点的之后,触发string的endElement,主要就是将将值设置为StringElementHandler的属性

之后向ArrayElementHandler中的数组添加进去这个String,对每个element都会调用getValueObject方法,而其中

void节点的endElement很有意思

看一下getContextBean方法

这里会获取上一个Handler的ValueObject的值,而这个ValueObject的value就是我们在属性中定义的对象,void节点的上一个节点是array节点,我们在array节点中定义了一个大小为2的String数组,所以获取到的ValueObject就为这个数组

因为我们只设置了void的属性为index="0",所以会进入到var4=set的条件中

最后的Express类,相当于是对var3这个对象调用其中的var4的方法,参数为var2,这样,就为这个String数组赋值了第一个值为touch

来到第二个void标签

当来到 <void method="start"/>

进入到getContextBean

在这里调用了parent的getValueObject方法,也就是object标签

获取了ObjectElementHandler中的ProcessBuilder对象

最后调用start执行命令

❹ java反序列化漏洞预警tomcat怎么改

类似这种:制SEVERE: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.news..UserDAOImpl
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.project..UserDAOImpl
解决办法:

XXXImpl实现类必须实现 java.io.Serializable接口,所有依赖这个实现类的对象都需要实现这个接口。

❺ jboss版本哪些存在java反序列化漏洞的

jboss版本哪些存在java反序列化漏洞的
java反序列化漏洞是一类被广泛应用的漏洞,绝大多数的编程语言都会提供内建方法使用户可以将自身应用所产生的数据存入硬盘或通过网络传输出去。这种将应用数据转化为其他格式的过程称之为序列化,而将读取序列化数据的过程称之为反序列化。
当应用代码从用户接受序列化数据并试图反序列化改数据进行下一步处理时会产生反序列化漏洞。该漏洞在不同的语言环境下会导致多种结果,但最有危害性的,也是之后我们即将讨论的是远程代码注入。

❻ 如何修复webphere java反序列化漏洞

1,装个电脑管家到电脑上
2,然后打开工具箱,找到修复漏洞的功能
3,最后对检测出来的电脑漏洞,一键修复就可以了

❼ 请教java反序列化,jenkins漏洞版本

我研究过,jenkins的受影响版本是1.637以下,1.638加了补丁

❽ java反序列漏洞,涉及到哪些中间件

目前oracle还没有在公开途径发布weblogic的JAVA反序列化漏洞的官方补丁,目前看到的修复方法无非两条:
使用SerialKiller替换进行序列化操作的ObjectInputStream类;
在不影响业务的情况下,临时删除掉项目里的 "org/apache/commons/collections/functors/InvokerTransformer.class"文件。
ObjectInputStream类为JRE的原生类,InvokerTransformer.class为weblogic基础包中的类,对上述两个类进行修改或删除,实在无法保证对业务没有影响。如果使用上述的修复方式,需要大量的测试工作。且仅仅删除InvokerTransformer.class文件,无法保证以后不会发现其他的类存在反序列化漏洞。

❾ 5.java反序列漏洞,涉及到哪些中间件

Boss、Jenkins、OpenNMS这些大名鼎鼎的Java应用,实现远程代码执行。
然而事实上,博客作者并不是漏洞发现者。博客中提到,早在2015年的1月28号,Gabriel Lawrence (@gebl)和Chris Frohoff (@frohoff)在AppSecCali上给出了一个报告[5],报告中介绍了Java反序列化漏洞可以利用Apache Commons Collections这个常用的Java库来实现任意代码执行,当时并没有引起太大的关注,但是在博主看来,这是2015年最被低估的漏洞。
确实,Apache Commons Collections这样的基础库非常多的Java应用都在用,一旦编程人员误用了反序列化这一机制,使得用户输入可以直接被反序列化,就能导致任意代码执行,这是一个极其严重的问题,博客中提到的WebLogic等存在此问题的应用可能只是冰山一角。
虽然从@gebl和@froh

阅读全文

与java反序列化漏洞360相关的资料

热点内容
ps5国行备份文件大小 浏览:754
linux恢复删除文件命令 浏览:805
win10家庭版打不开qq文件 浏览:794
女生来例假有哪个app比较好 浏览:66
调用后台接口为什么不显示数据 浏览:363
js判断重复 浏览:422
联通如何切换到网络电视 浏览:191
学编程的优势哪里靠谱 浏览:939
沟通文件 浏览:267
水准测量平差程序 浏览:78
cf如何解决网络误封 浏览:952
折叠式文件夹是什么意思 浏览:796
js弹窗登录注册 浏览:563
怎么把游戏数据备份到另一个手机 浏览:361
微信封杀抢红包神器破解教程 浏览:536
带货数据什么时候更新 浏览:500
微信通讯录复制到手机 浏览:498
编程猫怎么连接音响 浏览:589
有没有什么app在家点餐 浏览:501
win10视频文件看不到缩略图注册表 浏览:238

友情链接