apache|apacheunomi漏洞介绍及代码分析

apache|apacheunomi漏洞介绍及代码分析

文章图片

apache|apacheunomi漏洞介绍及代码分析

文章图片

apache|apacheunomi漏洞介绍及代码分析

文章图片

apache|apacheunomi漏洞介绍及代码分析

文章图片

apache|apacheunomi漏洞介绍及代码分析

文章图片

apache|apacheunomi漏洞介绍及代码分析

文章图片

apache|apacheunomi漏洞介绍及代码分析

文章图片

apache|apacheunomi漏洞介绍及代码分析

Apache Unomi介绍Apache Unomi具有隐私管理、用户/事件/目标跟踪、报告、访客资料管理、细分、角色、A/B测试等功能 , 可以作为Web CMS、个性化服务、原生移动应用的分析服务、具有分段功能的集中配置文件管理系统、授权管理中心 。
漏洞介绍CVE-2020-13942是CVE-2020-11975的绕过
该漏洞描述的是Unomi针对MVEL表达式(和OGNL表达式)的未进行敏感函数的过滤 , 直接解析 , 导致任意代码执行
本文主要对MVEL这条利用链做代码层面的分析
poc请求包漏洞利用时相关的Poc请求包如下 , 后续代码分析会涉及到


【一>所有资源关注我 , 私信回复“资料”获取<一】

1、200份很多已经买不到的绝版电子书

2、30G安全大厂内部的视频资料

3、100份src文档

4、常见安全面试题

5、ctf大赛经典题目解析

6、全套工具包

7、应急响应笔记

8、网络安全学习路线
分析思路MVEL表达式解析的模式有两种 , 分别是
  • 解释模式MVEL.eval(expression vars)
  • 编译模式MVEL.compileExpression(expression) + MVEL.executeExpression(compiled vars)
具体可以参考:MVEL解析表达式
倒推分析通过在源码中搜索关键字script::MVEL.executeExpression(可以初步定位出现问题的代码位于源码的如下位置
unomi-unomi-root-1.5.1\\persistence-elasticsearch\\core\\src\\main\\java\\org\\apache\\unomi\\persistence\\elasticsearch\\conditions\\ConditionContextHelper.java

我们构造的恶意表达式就是通过这条代码进行解析从而导致RCE的

基于此方法向上回溯 , 找调用它的地方

继续向上回溯

看到condition.getParameterValues()基本可以确定我们的思路是正确的
接下来主要找入口点 , 即往/context.json这个路径下发送数据是如何一步一步到ConditionContextHelper#getContextualCondition()
向上回溯getContextualCondition()有三处调用到

几个方法分别是buildFilter()count()eval() , 因为看到poc里有关键字filter , 所以先跟入buildFilter() , 看看是不是从这里进来的

接着向上回溯 , 看buildFilter()的调用位置

最终回溯到的位置(即入口位置)位于