如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析

这篇文章将为大家详细讲解有关如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

这个漏洞和之前@Matthias Kaiser提交的几个XXE漏洞是类似的,而EJBTaglibDescriptor应该是漏掉的一个,可以参考之前几个XXE的分析。我和@Badcode师傅反编译了WebLogic所有的Jar包,根据之前几个XXE漏洞的特征进行了搜索匹配到了这个EJBTaglibDescriptor类,这个类在反序列化时也会进行XML解析。    

环境

Windows 10

WebLogic 10.3.6.0.190716(安装了19年7月补丁)

Jdk160_29(WebLogic 自带的JDK)

漏洞分析

weblogic.jar!\weblogic\servlet\ejb2jsp\dd\EJBTaglibDescriptor.class这个类继承自java\io\Externalizable

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第1张

因此在序列化与反序列化时会自动调用子类重写的writeExternal与readExternal

看下writeExternal的逻辑与readExternal的逻辑,

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第2张

在readExternal中,使用ObjectIutput.readUTF读取反序列化数据中的String数据,然后调用了load方法,

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第3张

在load方法中,使用DocumentBuilder.parse解析了反序列化中传递的XML数据,因此这里是可能存在XXE漏洞的

在writeExternal中,调用了本身的toString方法,在其中又调用了自身的toXML方法

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第4张

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第5张

toXML的作用应该是将this.beans转换为对应的xml数据。看起来要构造payload稍微有点麻烦,但是序列化操作是攻击者可控制的,所以我们可以直接修改writeExternal的逻辑来生成恶意的序列化数据:

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第6张

漏洞复现

重写EJBTaglibDescriptor中的writeExternal函数,生成payload

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第7张

发送payload到服务器

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第8张

在我们的HTTP服务器和FTP服务器接收到了my.dtd的请求与win.ini的数据

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第9张

在打了7月份最新补丁的服务器上能看到报错信息

如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析  weblogic 第10张

关于如何进行WebLogic EJBTaglibDescriptor XXE漏洞分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接