项目介绍
Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供 Hadoop 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc.开发并贡献至开源社区。该平台的model界面存在未授权访问漏洞,造成敏感信息泄露。
受影响版本:Apache Kylin 2.0.0 through 4.0.3
环境搭建:
1、拉取docker镜像
docker pull apachekylin/apache-kylin-standalone:4.0.0
2、启动容器
docker run -d -m 8G -p 7070:7070 -p 8088:8088 -p 50070:50070 -p 8032:8032 -p 8042:8042 -p 2181:2181 --name kylin-4.0.0 apachekylin/apache-kylin-standalone:4.0.0
一、未授权访问漏洞
1、打开无痕浏览器不登录直接访问http://localhost:7070/kylin/models抓取数据包,send会跳转到登录界面
2、若管理员端有登录刷新等行为 则再次send刚才的包,可获取到admin/models表单的敏感信息,根据该表单的cubes、models等信息可继续获取敏感信息。
敏感信息泄露
1、需登录普通用户,无权限,没有任何model信息,点击个人信息抓包
2、将get请求替换为 /kylin/api/cubes/234 HTTP/1.1,发包
3、替换为GET /kylin/api/cube_desc/234 HTTP/1.1,发包
4、替换为GET /kylin/cubes/view/kylin_sales_cube/instancejson HTTP/1.1,发包
5、替换为GET /kylin/api/model/kylin_sales_model HTTP/1.1,发包
漏洞分析
以获取任意model信息为例
缺陷代码位置:ModelController.java
跟进modelService.getModels方法,该方法同样没做权限校验
漏洞poc:
数据库信息泄露
打开火狐浏览器直接访问http://172.25.1.115:7070/kylin/admin
使用burp suite抓取该数据包 点击send未授权发包成功,点击Render查看数据库敏感信息
该接口获取到的username.password.敏感信息,可以连接到Apache Kylin数据库 进一步扩宽敏感信息范围
未授权访问:任意用户删除
谷歌浏览器访问http://127.0.0.1:7070/kylin/login创建普通用户DEMO
打开新的谷歌无痕浏览器登录DEMO用户,开启burp suite代理抓取DEMO个人信息数据包
抓取超级管理员删除Apche kylin系统 默认管理员用户数据包
将DELETE /kylin/api/user/ANALYST粘贴到DEMO用户的数据包中 点击send 发包成功
回到超级管理员web界面 如下
漏洞分析
1、下载Apache Kylin源代码,导入IDEA。、
2、在IDEA中全局搜索UserController,定位到缺陷文件。
详细路径:
src/main/java/org/apache/kylin/rest/controller/UserController.java在UserController找到delete方法
可见UserController中涉及敏感数据的delete方法中未添加权限控制注解或判断当前用户是否具备操作权限。
修复建议
建议在UserController中涉及敏感数据delete的方法中添加权限控制注解或判断当前用户是否具备操作权限。
Tips:时隔两年,呦~西!
原文始发于微信公众号(jacky安全):CVE-2023-29055
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论