Smi1e@卫兵实验室
漏洞复现证明截图
影响范围
Oracle Weblogic Server 12.1.3.0, 12.2.1.3, 12.2.1.4
漏洞分析
com.tangosol.util.ExternalizableHelper#readXmlSerializable
会对反序列化读取到的 sXml
传入 (new SimpleParser()).parseXml
进行XML解析。
跟进 parseXml
,this.parseDocument(xml)
会把我们传入的xml字符串解析成 XmlDocument
对象
如果 this.m_fValidate
为 true
,则调用 (new SaxParser()).validateXsd(sXml, xml)
验证XML格式,默认情况下为true
跟进 validateXsd
方法,最终会调用 validator.validate(source)
触发XXE漏洞,source
就是我们传入的xml的 Source
对象。但是前提是 listSchemaURIs
不为空
看一下 listSchemaURIs
的赋值过程
XmlHelper.getNamespacePrefix
获取以 xmlns:
开头的标签属性,返回其后面的字符串做为 prefix
。
XmlHelper.getSchemaLocations
提取 prefix
+ :schemaLocation
或 :noNamespaceSchemaLocation
的值,按照空白字符分割,每隔两位添加进 listURLs
中
因此我们构造为下面的格式即可让 listSchemaURIs
不为空
<a xmlns:x='http://www.w3.org/2001/XMLSchema-instance' x:schemaLocation='http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd'/>
跟进 this.resolveSchemaSources(listSchemaURIs)
,
最终会调用 AppCLassLoader
在本地查找uri中的资源文件,而不会从远程加载
因此我们需要在本地找一个能够用的xsd文件,我这里用的是 Coherence.jar
中的 coherence-rest-config.xsd
,因此把 http://www.springframework.org/schema/mvc/spring-mvc.xsd
替换为 http://www.springframework.org/coherence-rest-config.xsd
即可。
最后还差进到 com.tangosol.util.ExternalizableHelper#readXmlSerializable
中的反序列化入口,同样可以使用CVE-2020-14756的 com.tangosol.coherence.servlet.AttributeHolder
readXmlSerializable
对应的nType为9
我们可以重写 AttributeHolder
的 writeExternal
方法,按照反序列化时的读取流程直接写入自定义XML即可。
漏洞修复
实例化 SimpleParser
时传入false参数禁止验证XML格式。
关于我们
人才招聘
岗位职责:
- 负责研究Window内核相关漏洞利用技术;
- 负责分析Window内核漏洞的原理及缓解措施;
任职要求:
- 2年以上windows逆向工作经验。
- 熟悉windows底层架构、运行机制,熟悉汇编语言 C/C++语言,熟悉win32/64开发,并有相关开发经验;
- 熟悉windows驱动开发、熟悉windows平台内核架构;能熟练运用Windows平台下的软件调试方法。
- 熟练使用ida、windbg等调试软件工具调试分析漏洞。
- 有CVE编号、内核研究成果者优先;
- 具备良好的团队沟通、协作能力、良好的职业道德。
岗位职责:
- 负责研究Linux内核相关漏洞利用技术;
- 负责分析Linux内核漏洞的原理及缓解措施;
任职要求:
- 2年以上Linux逆向工作经验。
- 熟悉Linux底层架构、运行机制,熟悉汇编语言 C/C++语言,熟悉x86/64开发,并有相关开发经验;
- 熟悉Linux驱动开发、熟悉Linux平台内核架构;能熟练运用Linux平台下的软件调试方法。
- 熟练使用ida、gdb、lldb等调试软件工具调试分析漏洞。
- 有CVE编号、内核研究成果者优先;
- 具备良好的团队沟通、协作能力、良好的职业道德。
岗位职责:
- 负责安全技术研究,跟踪国内外最新的安全技术以及安全漏洞的追踪;
- 负责进行二进制漏洞挖掘,包括不限于浏览器、chakara引擎、js引擎、office、pdf等等各种二进制类应用;
任职要求:
- 能主动关注国内外最新安全攻防技术,并在自己擅长和兴趣的领域能够进行深入的学习、研究;
- 熟练掌握windbg、ida、gdb等调试工具;
- 熟悉各类二进制安全漏洞原理(堆溢出、栈溢出、整数溢出、类型混淆等等)以及各种利用技术;
- 能够无障碍阅读英文技术文档;
- 具备良好的团队沟通、协作能力、良好的职业道德。
岗位职责:
- 跟踪最新安全技术动态,对高危安全漏洞进行快速分析和响应;
- 负责安全产品的线下、线上功能及流程的验收测试,保证项目进度和品质;
- 从事影响比较大的国内外大型的cms、中间件、框架漏洞挖掘工作
任职要求:
- 深入了解漏洞原理,能够独立挖掘/分析包括但不限于PHP/JAVA/.NET/ASP等大中型应用漏洞,并编写exp;
- 具备优秀的JAVA开发能力,能熟练挖掘 JAVA WEB 方面的漏洞,深入了解tomcat,weblogic,jboss,resin等中间件内部构造;
- 熟练使用至少一门开发语言,如:PHP、python、java;
- 有比较强的开发能力,熟悉java web的常见漏洞原理,有能力挖掘和分析java web方面的漏洞;
- 有重大漏洞发掘或高质量的CVE、0day挖掘能力的优先考虑;
岗位职责:
- 安全攻防技术研究,最新web应用及中间件漏洞挖掘研究;
- 跟踪分析国内外的安全动态,对重大安全事件进行快速响应;
- 针对相关产品,进行全面详细的安全测试评估;
任职要求:
- 了解常见的网络协议(TCP/IP,HTTP,FTP等);
- 熟练使用Wireshark等抓包工具,熟悉正则表达式;
- 掌握常见漏洞原理,有一定的漏洞分析能力;
- 具备php、python、java或其他相关语言编码能力;
- 对常见waf绕过有一定的基础经验;
- 具备一定的文档编写能力,具备良好的团队共同能力;
- 对安全有浓厚的兴趣,工作细致耐心。
本文始发于微信公众号(安恒信息安全研究院):Weblogic T3/IIOP反序列化漏洞(XXE漏洞)分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论