CNTA-2019-0014 wls9-async 反序列化 rce 分析

栏目: Java · 发布时间: 5年前

内容简介:漏洞编号:CNTA-2019-0014大致是因为 wls9_async_response 包有个啥反序列化,上一次同样类型的漏洞在17年,那时候还不知道weblogic,刚好论文结尾了来学习下漏洞原理XmlDecoder 相关安全不在此篇文章中介绍,也莫得poc,仅仅分享分析思路和漏洞触发流程

前言

漏洞编号:CNTA-2019-0014

大致是因为 wls9_async_response 包有个啥反序列化,上一次同样类型的漏洞在17年,那时候还不知道weblogic,刚好论文结尾了来学习下漏洞原理

XmlDecoder 相关安全不在此篇文章中介绍,也莫得poc,仅仅分享分析思路和漏洞触发流程

高版本weblogic如12.2.1.2默认不会部署该war包,我的测试版本是10.3.6

调用链

BaseWSServlet#service

->

SoapProcessor#process

->

ServerDispatcher#dispatch

->

HandlerIterator#handleRequest

->

WorkAreaServerHandler#handleRequest

->

WorkContextMapInterceptor#receiveRequest

->

WorkContextXmlInputAdapter#readUTF

->

XMLDecoder#readObject

起手式

莫得poc,莫得漏洞详情,就一则安全通告说 wls9_async_response 有问题,那就先直接看war包啥情况

CNTA-2019-0014 wls9-async 反序列化 rce 分析

其实就四个class,而且路径全部指向 AsyncResponseBean ,查看一下内容如下:

CNTA-2019-0014 wls9-async 反序列化 rce 分析

路径已经指出来了 /_async/.. 全部指向此 Bean,但是细看类成员函数的时候就只有俩:

handleFaulthandleResult

从这个名字来看,属于已经结束处理流程了,正在处理异常和结果,这里稍微想了想如果是soap过去的反序列化的话,那应该是处理流程中触发漏洞,为了确认仔细看了下 handleFault 和 handleResult 函数,确实没有触发点,既没有反序列化点

从底层摸起

那么这就奇怪了,难道不是war包的问题?找一找处理流程,但是weblogic没有详细分析过不知道整个生命周期,只能从 HttpServlet 开始下断点,中间的迷障也太多了,先整理下已知信息:

包路径:weblogic.wsee.async
那么处理流程大概也会是 async 路径下或者 wsee 路径下处理的请求包

该漏洞多半是soap协议过去的xml反序列化

打了个 HttpServlet 处的断点,跟进了 weblogic.wsee 包下的基础 Servlet : BaseWSServlet

CNTA-2019-0014 wls9-async 反序列化 rce 分析

根据已知信息那必然在 soapProcessor 中,一直跟到了 web.wsee.ws.dispatch.server.ServerDispatcher 里面,注意如下:

CNTA-2019-0014 wls9-async 反序列化 rce 分析

责任链出来了,跟进去看看 HandlerIterator#handleRequest

CNTA-2019-0014 wls9-async 反序列化 rce 分析

责任链中轮询调用 handleRequest 处理。

看一看这个 HandlerIterator 中有哪些 Handler

CNTA-2019-0014 wls9-async 反序列化 rce 分析

如图一共有21个,其中最让我起疑的就是 AsyncResponseHandler 但是仔细看了以后发现没有过于特殊的地方,并且需要前置条件太多,也就是需要用户填写的信息过多,其中很多信息不一定是每个服务器上都一样的。排除它。

柳暗花明

既然是责任链调用,那么他会从 Handler 0 一直执行到 Handler 20,挨个查阅了后,发现大多是对环境的各种值做存取操作,并没有特殊的地方,但是 WorkAreaServerHandler 这个handler除外,跟进去看看

CNTA-2019-0014 wls9-async 反序列化 rce 分析

获取了一次header中的内容,这个header不是http header,是soap中的 http://schemas.xmlsoap.org/soap/envelope/ 内容里面的 Header,将其送入 WorkContextXmlInputAdapter 做初始化处理并且传入 receiveRequest 函数

跟进 receiveRequest 函数,如下:

CNTA-2019-0014 wls9-async 反序列化 rce 分析

跟进 readEntry 函数,如下:

CNTA-2019-0014 wls9-async 反序列化 rce 分析

这里调用了 WorkContextXmlInputAdapter 的 readUTF 函数,跟进,如下:

CNTA-2019-0014 wls9-async 反序列化 rce 分析

readObject 映入眼帘

分析流程结束

效果

尝试构造了一下poc,10.3.6 本地未加任何补丁,win10

CNTA-2019-0014 wls9-async 反序列化 rce 分析


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

用户思维+:好产品让用户为自己尖叫

用户思维+:好产品让用户为自己尖叫

[美] Kathy Sierra / 石航 / 人民邮电出版社 / 2017-9 / 69.00元

畅销产品与普通产品的本质区别是什么?若没有巨额预算、不爱营销噱头、不开奢华的产品发布会,如何打造可持续成功的产品?本书针对上述问题提出了新颖的观点:用户并不关心产品本身有多棒,而是关心使用产品时自己有多棒。作者利用其多年的交互设计经验,生动阐释了这一观点背后的科学。可贵的是,本书并不止步于解释“为什么”,还清晰呈现了“怎么做”。 本书风格活泼、图文并茂,其对话式内容既引人入胜,又引人深思,适......一起来看看 《用户思维+:好产品让用户为自己尖叫》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具