freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

漏洞分析 | Apache OFBiz XML-RPC 反序列化漏洞(CVE-2023-49070)
塞讯验证 2023-12-29 16:01:12 97283

Apache OFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。2023年12月,官方发布新版本修复了CVE-2023-49070 Apache Ofbiz xmlrpc 代码执行漏洞。官方已于4月主分支代码中删除XML-RPC组件,但直至18.12.10正式发布才废除XML-RPC接口。攻击者能够利用该漏洞获取服务器权限,建议尽快修复漏洞。

漏洞详情

早在2020年,Apache OFBiz就曾出现过一个反序列化漏洞(CVE-2020-9496),问题出现在XML-RPC这个组件中。XML-RPC也是Apache基金会旗下的一个项目,但基本上在2010年前后就不更新了,XML-RPC在历史上出现过多个反序列化漏洞(如CVE-2016-5003、CVE-2019-17570),都没有被修复。由于Apache OFBiz使用了XML-RPC组件,受到了影响。官方于后续的版本中对相关接口进行加固修复漏洞,但修复方法存在绕过问题(CVE-2023-49070)。在CVE-2020-9496中,通过向/webtools/control/xmlrpc接口发送包含XML格式的RPC请求体的数据包进行漏洞利用。其中这个对象中包含了base64格式的Payload:frc-504c2cf81c88677a92702f46ce3d3122.png2020年5月,漏洞出现后,OFBiz官方在https://github.com/apache/ofbiz-framework/commit/d955b03fdc226d600d81d19d273e773f84b5c000这个commit中提交了第一次补丁,这个补丁的作用是为XML-RPC的接口增加鉴权:frc-d176e6399f56934f4ea0d2fb474630eb.png这个补丁并不能完全解决问题,但提高了漏洞利用门槛,不再是一个“Pre-Auth RCE”漏洞。在2021年10月,一个叫Jie Zhu的人向官方反应了这个“Post-Auth RCE漏洞”,可以在当时最新的17.12.08版本上复现。由于这个漏洞本不是OFBiz导致,而且XML-RPC不再维护,所以无法从根本上修复这个漏洞。

官方只能退而求其次,在https://github.com/apache/ofbiz-framework/commit/d6d863020c0fe89f949e5d2cd23d5ecc95d68c4c使用filter的方式对请求做了一次检测,只要发现Body中存在这个关键字就报错:

frc-391b1e9cdffda9bf3a9c7ce0d0545c31.png这个修复方法很快被Jie Zhu绕过,因为攻击者可以增加一个空格,使用的方式绕过检测。

于是,官方在 https://github.com/apache/ofbiz-framework/commit/25293e4cf6f334a2ae33b3041acba45113dddce9这个提交中再次进行加固,将检测关键词更改为, 并且将检测位置修改到了framework/base/src/main/java/org/apache/ofbiz/base/util/CacheFilter.java文件中:

frc-12712a0217b3995f535571ca9dcb788e.png

但这种直接检查请求体中存在字符串就报错的方式也存在一个问题,就是会影响到正常业务中包含字符串请求,所以官方在https://github.com/apache/ofbiz-framework/commit/a5bdcc6f9ea59d5d614f64832d5b6acec8e81e97中增加了对请求路径的限制:

frc-d90a7de3bd15cd6da57c7acbe628a799.png

同一天,官方又发现接口限制路径不正确,所以又在https://github.com/apache/ofbiz-framework/commit/19d29325910ee2c904b63a951437aa59f73f1d93中做了修改:

frc-67518aeb4c461b2177b98d9829f0fb8a.png而最新的CVE-2023-49070就是对上述官方提供的加固方式进行了绕过:

  • 绕过对于这个关键词的检测
  • 绕过对XML-RPC接口的认证

有了这两个绕过,最新的漏洞重新变回一个Pre-Auth RCE漏洞。

漏洞分析

1. 绕过检测

首先需要绕过这个关键词的检测。在Java中,部分中间件如Tomcat可以通过 ; 的方式可以在请求路径中增加Matrix Parameters:https://www.baeldung.com/cs/url-matrix-vs-query-parameters

所以,我们也可以尝试在XML-RPC请求的路径中增加分号:/webtools/control/xmlrpc;/。

frc-b2ee8656ba690685eaf0d0aa657445db.png第一个限制绕过,服务器返回了登录页面。

2. 绕过认证的限制

在检查用户是否登录方法中(org.apache.ofbiz.webapp.control.LoginWorker#checkLogin),有一个很关键的判断 "error".equals(login(request, response))

frc-6a3585e24384dfa9fada21417fdb6920.pngfrc-a4e573023f7c039955e0ae5920dafbf4.png当login()方法的返回值不等于error时就能不进入if语句从而绕过return "error",使检查用户登陆方法返回success。而在login()方法中有这样几行:frc-ce0161eded0909c0abb7e316a3082573.png由于username、password、token这些参数是从session中取的,在未登录时为空,所以requirePasswordChange这个参数的值如果等于Y,login()方法就能返回requirePasswordChange,否则返回error。

3. 结论

综上所述,只要将请求路径修改为/webtools/control/xmlrpc;/?USERNAME=&PASSWORD=&requirePasswordChange=Y ,即可绕过权限检测和关键词限制。


漏洞复现

1. 靶场环境搭建

  • 使用docker启动ofbiz:18.12.09的环境。

frc-ed1aaa9c40504a9027a9df4578121981.jpeg

frc-356ab64ba970870a566654701ca519d0.png

2.Payload生成 

使用ysoserial的CommonsBeanutils1来生成Payload:

frc-777cdeb0a8adab6c31076c13a6ab898b.jpeg

3.测试

使用CVE-2020-9496中的复现方法发送数据包,可见已经无法成功进入XMLRPC的解析流程:frc-2a2ce8ccf0c9354b9b377602a6b393c4.png

把Path修改成/webtools/control/xmlrpc;/?USERNAME=&PASSWORD=&requirePasswordChange=Y即可绕过限制:

frc-47b6f18176d717d3efb2f9513969fe2e.jpegfrc-0581e7e157911669921db52f9ce8d091.png进入容器中,可见touch /tmp/success已成功执行:frc-9b2a435a76835c87cadd20899ae8f7eb.png

参考来源:

https://github.com/apache/ofbiz-frameworkhttps://mp.weixin.qq.com/s/iAvitO6otPdHSu1SjRNX3ghttps://issues.apache.org/jira/browse/OFBIZ-12812https://github.com/advisories/GHSA-6vwp-35w3-xph8

# 攻防演练 # 漏洞分析 # CVE # 漏洞复现 # 安全验证
本文为 塞讯验证 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
塞讯验证 LV.8
塞讯验证是国内领先的网络安全度量验证平台,率先提出利用真实自动化攻击剧本来持续验证安全防御有效性概念,旨在用安全验证技术来帮助客户实现365天持续评估自身网络和数据安全防御体系效果。塞讯创始团队均曾任职于世界顶尖网络安全公司,拥有业界首屈一指的安全分析和防御能力。两大研发团队分别位于上海和成都,致力于为客户打造最优秀的产品。我们在北京、上海、深圳、杭州均设有分支机构,服务可覆盖全国各个角落。​
  • 213 文章数
  • 21 关注者
安全验证:SOC 转型升级的基石
2025-03-12
预防为先:Gartner《新兴技术影响雷达:先发制人的网络安全》报告解读
2025-03-07
2025 网络安全新危机 —— 企业如何先发制人筑牢防线
2025-02-28
文章目录