APACHE OFBIZ XML-RPC 反序列化漏洞 (CVE-2020-9496) 的复现与分析

 聚焦源代码安全,网罗国内外最新资讯!

1.1 状态

完成漏洞挖掘条件分析、漏洞复现。

1.2 简介

相关的重点类和方法:

  • org.apache.xmlrpc.parser.SerializableParser 包含序列化代码;

  • org.apache.ofbiz.webapp.control.RequestHandler负责发送请求至“/webtools/control/xmlrpc”端点;

  • org.apache.ofbiz.webapp.event.XmlRpcEventHandler#execute()方法;

  • org.apache.ofbiz.webapp.event.XmlRpcEventHandler#getRequest()方法的XMLReader类的parse()方法可开展XML解析工作。

  • org.apache.xmlrpc.parser.XmlRpcRequestParser、org.apache.xmlrpc.parser.RecursiveTypeParserImpl、org.apache.xmlrpc.parser.MapParser类可解析XML-RPC请求中的元素。

序列化问题在于org.apache.xmlrpc.parser.SerializableParser#getResult()方法。OFBiz使用的 Apache Commons BeanUtils 库和 Apache ROME库存在漏洞。

XML-RPC是一个远程过程调用(RPC)协议。

版本:APACHE-OFBIZ-16.11.05,jdk1.8。

1.3 漏洞挖掘能力条件

  • 根据调试信息可精准定位入口点。

  • 认为可灵活导入所需jar包。

1.4 利用方法

入口点是 /webtools/control/xmlrpc,因此从framework/webtools/webapp/webtools/WEB-INF/web.xml(如果没有WEB-INF/web.xml文件,tomcat会输出找不到的消息)开始深入分析。


framework/webtools/webapp/webtools/WEB-INF/web.xml

<servlet>

        <description>Main Control   Servlet</description>

          <display-name>ControlServlet</display-name>

          <servlet-name>ControlServlet</servlet-name>

          <servlet-class>org.apache.ofbiz.webapp.control.ControlServlet</servlet-class>   【路由目的地】

          <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>ControlServlet</servlet-name>

          <url-pattern>/control/*</url-pattern> 【待路由目录】

    </servlet-mapping>


org.apache.ofbiz.webapp.control.ControlServlet#doPost

-


org.apache.ofbiz.webapp.control.ControlServlet#doGet

long   requestStartTime = System.currentTimeMillis();

        RequestHandler requestHandler =   this.getRequestHandler(); 【a】

        HttpSession session =   request.getSession();

String   errorPage = null;

        try {

            // the ServerHitBin call for the   event is done inside the doRequest method

            requestHandler.doRequest(request,   response, null, userLogin, delegator); 【d】

a

org.apache.ofbiz.webapp.control.RequestHandler#RequestHandler

        this.controllerConfigURL =   ConfigXMLReader.getControllerConfigURL(context); 【b】

this.eventFactory   = new EventFactory(context, this.controllerConfigURL);  【c】

b

org.apache.ofbiz.webapp.control.ConfigXMLReader#getControllerConfigURL

public   static URL getControllerConfigURL(ServletContext context) {

        try {

            return   context.getResource(controllerXmlFileName); 【controllerXmlFileName= /WEB-INF/controller.xml

        } catch (MalformedURLException e) {

            Debug.logError(e, "Error   Finding XML Config File: " + controllerXmlFileName, module);

            return null;

        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
推荐,网络安全中的漏洞挖掘实践合集,仅供大家学习参阅,包含内容如下: 针对现实应用的文本对抗攻击研究 安全众测下的漏洞发展新趋势 安卓应用漏洞挖掘 从0到1-发现与拓展攻击面 对基于Git的版本控制服务的通用攻击面的探索 对民用飞行控制系统固件的逆向与漏洞分析 卫星通信的安全缺陷 基于全流量的智慧漏洞挖掘 基于运行时类型嗅探技术提高模糊测试的漏洞发掘效果 漏洞挖掘进化论-推开xray之门 逆向在漏洞挖掘中的应用 苹果攻击面和漏洞挖掘自动化研究 如何从高赏金项目中拿到高危 如何去挖掘物联网环境中的高级恶意软件威胁 如何在3个月发现 12 个内核信息泄露漏洞 沙箱内持久化.行之有效的沙箱攻击新思路 深度解析Weblogic_XMLDecoder反序列化 使用数据流敏感模糊测试发现漏洞 锁不住的安全 谈谈工业协议转换器的一些问题 逃逸IE浏览器沙箱-在野0Day漏洞利用复现 为何自动化漏洞挖掘如此困难 现代可抵赖后门研究 一扇虚掩的大门-现代智能系统的重要攻击面 源代码漏洞挖掘 远程root现代安卓设备 在现代Windows内核中发现存在20年的漏洞 针对智能设备漏洞挖掘的一些新方法 AI用于软件漏洞挖掘 AndroidWebView安全攻防指南2020 Java反序列化漏洞自动挖掘方法 macOS从运行库劫持到内核提权 MTK安全启动大剖析.CIS大会分论 MyBatis框架下SQL注入解决方案 Qemu-kvm和ESXi虚拟机逃逸实例分享 WEB常见漏洞与挖掘技巧研究 Web漏洞挖掘速成特训营 混合式漏洞挖掘研究进展
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值