怎么做可以聊天的网站吗,网站建设有那些软件,网站设计心得,网站开发常用中间件1、前言Apache Kylin是一个开源的、分布式的分析型数据仓库#xff0c;提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据。近日#xff0c;百度云安全团队监测到Apache官方发出了一个漏洞通告#xff0c;披露了Apache kylin多版本存在命令注入漏…1、前言Apache Kylin是一个开源的、分布式的分析型数据仓库提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据。近日百度云安全团队监测到Apache官方发出了一个漏洞通告披露了Apache kylin多版本存在命令注入漏洞漏洞编号为CVE-2020-1956。由于Apache Kylin依赖的组件较多自行搭建环境较为困难我们采用了IDEAdocker进行远程调试来分析漏洞。2、远程调试环境搭建本次复现使用了受影响的Kylin 3.0.1版本直接镜像拉取并启动对外暴露17070、19001端口。docker pull apachekylin/apache-kylin-standalone:3.0.1docker run -d -p 17070:7070 19001:19001 apachekylin/apache-kylin-standalone:3.0.1远程调试需要保证运行环境代码和本地代码相同这里我们可以去Kylin的releases页面下载3.0.1版本解压后导入IDEA。此时docker启动的Kylin并没有开启远程调试先进入容器bash修改/home/admin/apache-kylin-3.0.1-bin-hbase1x/bin/kylin.sh在启动命令添加一行。此时Kylin是启动状态先执行./kylin.sh stop以停止服务再执行启动脚本/home/admin/entrypoint.sh可连接到服务器的19001端口进行远程调试。编辑Configurations选择Remote并填写对应的主机和端口。当Console端出现如下提示表明远程连接成功。3、漏洞分析漏洞入口在server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java的migrateCube方法我们构造好对应的POST包对该方法打断点。此时传递的project为learn_kylin随后进入migrateCute方法。跟进到CubeService.java的migrateCute方法1086行会获取kylin的配置1087行调用config对象的isAllowAutoMigrateCube进行判断若返回False则程序会抛出异常。我们跟进到KylinConfigBase.java的isAllowAutoMigrateCube方法该方法主要是判断属性kylin.tool.auto-migrate-cube.enabled的值是否为true若要继续执行则需要设置该属性为true。接着在1098、1099行会从config对象中获取srcCfgUri、dstCfgUri对象的属性分别为kylin.tool.auto-migrate-cube.src-config、kylin.tool.auto-migrate-cube.dest-config并且1101、1102行还会判断取出的两个属性的值是否为空。接着1108行会将projectName、srcCfgUri、dstCfgUri等参数直接拼接到cmd中并在1111行执行在整个过程中没有对projectName进行任何的校验导致命令注入漏洞。并且若能够控制上述3个属性值那么srcCfgUri以及dstCfgUri也是能够导致命令注入漏洞的。我们看下官方的补丁https://github.com/apache/kylin/commit/9cc3793ab2f2f 0053c467a9 b3f38cb7791cd436a。对projectName、dstCfgUri、srcCfgUri都调用了checkParameter方法进行处理。而checkParameter方法主要是将可疑的命令执行字符替换为空包括空格、管道符、等。4、漏洞复现根据网上文档可知Cube级属性值是可以添加或者修改的并且可以覆盖kylin的属性。那么我们首先在某个Cube中添加上述属性。这里我们先尝试ProjectName参数的命令注入发现可以成功执行touch命令。由于命令注入点在路径中注入命令中包含”/”会导致路由出错而反弹shell、写webshell等都需要用”/”因此有一些文章将此处认定为受限的命令注入。但是这里我们可以用其他字符来替代斜杠联系上篇文章提到的shell参数扩展斜杠可以用${PATH:0:1}表示。同样的由于可以直接修改配置文件也可以利用srcCfgUri或者dstCfgUri注入此时就不受路径处的一些限制了。5、安全产品解决方案百度安全智能一体化产品已支持CVE-2020-1956漏洞的检测和拦截有需要的用户可以访问anquan.baidu.com联系我们。受影响的用户请点击阅读原文下载官方发布的最新版进行漏洞的修复 http://kylin.apache.org/cn/download/参考链接https://www.t00ls.net/thread-56549-1-1.htmlhttps://github.com/apache/kylin/commit/9cc3793ab2f2f0053c467a9b3f38cb7791cd436a